Yule ball, odd jobs, and menus
* Converted Hermione's jobs into new system and added them into the new 'Odd jobs' favor section * Converted Hermione's yule ball event chain into the new system * Improved milestone unlock for Hermione tier 4 * Improved menu exit choice handling * Moved unused labels outside the script files * Reimplemented disabled menu option
This commit is contained in:
parent
dd128db58c
commit
c13867b7eb
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
|
@ -162,20 +162,27 @@ label hermione_favor_menu:
|
|||
jump hermione_favor_menu
|
||||
|
||||
"-Personal favours-" (icon="interface/icons/small/heart_red.webp"):
|
||||
label .favors:
|
||||
|
||||
call tutorial("hearts")
|
||||
|
||||
$ result = show_events_menu(hermione_favors)
|
||||
|
||||
if result:
|
||||
if result == "disabled":
|
||||
"You haven't unlocked this favor opportunity yet."
|
||||
jump .favors
|
||||
elif result == "exit":
|
||||
jump .skip_points_check
|
||||
else:
|
||||
$ 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 .skip_points_check
|
||||
|
||||
"-Public requests-" (icon="interface/icons/small/star_yellow.webp") if game.daytime:
|
||||
label .requests:
|
||||
|
||||
if states.her.public_level >= 16 and not "public" in states.her.ev.yule_ball.variant:
|
||||
# Public whore ending choice
|
||||
$ renpy.choice_for_skipping()
|
||||
|
@ -192,10 +199,30 @@ label hermione_favor_menu:
|
|||
|
||||
$ result = show_events_menu(hermione_requests)
|
||||
|
||||
if result:
|
||||
if result == "disabled":
|
||||
"You haven't unlocked this request opportunity yet."
|
||||
jump .requests
|
||||
elif result == "exit":
|
||||
jump .skip_points_check
|
||||
else:
|
||||
$ result.start()
|
||||
|
||||
jump hermione_favor_menu
|
||||
"-Odd Jobs-" (icon="interface/icons/small/gold.webp"):
|
||||
label .odd_jobs:
|
||||
|
||||
$ result = show_events_menu(hermione_jobs, report_progress=False)
|
||||
|
||||
if result == "disabled":
|
||||
"You haven't unlocked this job opportunity yet."
|
||||
jump .odd_jobs
|
||||
elif result == "exit":
|
||||
jump .skip_points_check
|
||||
else:
|
||||
$ result.start()
|
||||
|
||||
"-Odd Jobs-" (icon="interface/icons/small/gold.webp", style="disabled") if not game.daytime:
|
||||
nar "Public requests are available during the day only."
|
||||
jump .skip_points_check
|
||||
|
||||
"-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."
|
||||
|
|
|
@ -1,60 +1,5 @@
|
|||
label hermione_talk:
|
||||
menu:
|
||||
"-Working-" (icon="interface/icons/small/gold.webp") if states.her.favors_unlocked:
|
||||
label working_menu:
|
||||
menu:
|
||||
"-Work as a maid-" if game.daytime and her_outfit_maid.unlocked:
|
||||
jump job_1
|
||||
|
||||
"-Work as a maid-" (style="disabled") if game.daytime and not her_outfit_maid.unlocked:
|
||||
gen "(I'll need an outfit for hermione if I want her to work.)" ("base", xpos="far_left", ypos="head")
|
||||
jump working_menu
|
||||
|
||||
"-Work as a maid-" (style="disabled") if not game.daytime:
|
||||
"This job is only available during the day."
|
||||
jump working_menu
|
||||
|
||||
#"-Work as a cheerleader for Gryffindor-" if game.daytime and (hg_cheer_g_ITEM.unlocked or hg_cheer_g_sexy_ITEM.unlocked):
|
||||
#jump job_3
|
||||
|
||||
#"-Work as a cheerleader for Gryffindor-" if game.daytime and not (hg_cheer_g_ITEM.unlocked or hg_cheer_g_sexy_ITEM.unlocked):
|
||||
#gen "(I'll need an outfit for hermione if I want her to work.)" ("base", xpos="far_left", ypos="head")
|
||||
#jump working_menu
|
||||
|
||||
#"-Work as a cheerleader for Gryffindor-" (style="disabled") if not game.daytime:
|
||||
#"This job is only available during the day."
|
||||
#jump working_menu
|
||||
|
||||
#"-Work as a cheerleader for Slytherin-" if game.daytime and (hg_cheer_s_ITEM.unlocked or hg_cheer_s_sexy_ITEM.unlocked):
|
||||
#jump job_4
|
||||
|
||||
#"-Work as a cheerleader for Slytherin-" if game.daytime and not (hg_cheer_s_ITEM.unlocked or hg_cheer_s_sexy_ITEM.unlocked):
|
||||
#gen "(I'll need a slytherin cheerleader outfit for hermione if I want her to work.)" ("base", xpos="far_left", ypos="head")
|
||||
#jump working_menu
|
||||
|
||||
#"-Work as a cheerleader for Slytherin-" (style="disabled") if not game.daytime:
|
||||
#"This job is only available during the day."
|
||||
#jump working_menu
|
||||
|
||||
"-Hidden-" (style="disabled") if not states.her.ev.promote_cardgame.offered or not poker_outfit_ITEM.unlocked:
|
||||
"You haven't unlocked this job opportunity yet."
|
||||
jump working_menu
|
||||
|
||||
"-Work by advertising the card game-" (style="disabled") if states.her.ev.promote_cardgame.offered and poker_outfit_ITEM.unlocked and not her_outfit_poker.unlocked:
|
||||
gen "(I'll need an outfit for Hermione if I want her to work.)" ("base", xpos="far_left", ypos="head")
|
||||
gen "(Maybe the twins have something fitting for her in their stock.)" ("base", xpos="far_left", ypos="head")
|
||||
jump working_menu
|
||||
|
||||
"-Work by advertising the card game-" (style="disabled") if not game.daytime and states.her.ev.promote_cardgame.offered and her_outfit_poker.unlocked:
|
||||
"This job is only available during the day."
|
||||
jump working_menu
|
||||
|
||||
"-Work by advertising the card game-" if game.daytime and states.her.ev.promote_cardgame.offered and her_outfit_poker.unlocked:
|
||||
jump job_5
|
||||
|
||||
"-Never mind-":
|
||||
jump hermione_talk
|
||||
|
||||
### Astoria ###
|
||||
"-Ask her to help Tonks-" (icon="interface/icons/small/tonks.webp") if states.ast.ev.intro.e1_complete and not states.ast.ev.intro.e3_complete:
|
||||
if states.ast.ev.intro.e2_ask_hermione:
|
||||
|
|
|
@ -1,5 +1,7 @@
|
|||
### Yule Ball Ending ###
|
||||
|
||||
default her_ev_yule_ball_ending_e1 = Event(id="her_ev_yule_ball_ending_e1", wait=2, label="ball_ending_E1", priority=0, req="game.daytime", repeat=False)
|
||||
|
||||
label ball_ending_start:
|
||||
gen "[name_hermione_genie], that ball you've mentioned..." ("base", xpos="far_left", ypos="head")
|
||||
gen "When did you say it would start again?" ("base", xpos="far_left", ypos="head")
|
||||
|
@ -16,10 +18,10 @@ label ball_ending_start:
|
|||
|
||||
$ states.her.ev.yule_ball.started = True
|
||||
$ ss_event_pause += 2
|
||||
$ her_ev_yule_ball_ending_e1.enqueue()
|
||||
|
||||
jump hermione_favor_menu
|
||||
|
||||
|
||||
screen genie_snape_shake_hands(shake=False):
|
||||
if shake:
|
||||
add "characters/snape/chibis/handshake/hand_01.webp" pos (220, 205) zoom 0.5
|
||||
|
|
|
@ -1,4 +1,9 @@
|
|||
|
||||
default her_ev_yule_ball_e4 = Event(id="her_ev_yule_ball_e4", wait=2, label="ball_quest_E4", priority=15, req="game.daytime", repeat=False)
|
||||
default her_ev_yule_ball_e3 = Event(id="her_ev_yule_ball_e3", wait=4, label="ball_quest_E3", priority=15, req="game.daytime", repeat=False, subevents=["her_ev_yule_ball_e4"])
|
||||
default her_ev_yule_ball_e2 = Event(id="her_ev_yule_ball_e2", wait=1, label="ball_quest_E2", priority=15, req="game.daytime", repeat=False, subevents=["her_ev_yule_ball_e3"])
|
||||
default her_ev_yule_ball_e1 = Event(id="her_ev_yule_ball_e1", label="ball_quest_E1", priority=15, req="states.her.tier >= 6 and game.daytime and not states.her.ev.yule_ball.e1_complete", autoenqueue=True, repeat=False, subevents=["her_ev_yule_ball_e2"])
|
||||
|
||||
#hermione asks genie about who will be in-charge of the ball
|
||||
label ball_quest_E1:
|
||||
stop music fadeout 1.0
|
||||
|
@ -609,7 +614,7 @@ label ball_quest_E4:
|
|||
gen "[name_hermione_genie]?" ("base", xpos="far_left", ypos="head")
|
||||
her "Sorry to disturb you [name_genie_hermione]..." ("open", "base", "worried", "mid", xpos="right", ypos="base")
|
||||
her "I came to apologise for my..." ("open", "base", "worried", "R")
|
||||
her "... My hysterical behaviour yesterday."
|
||||
her "... My hysterical behaviour the other day."
|
||||
gen "Sure thing, don't worry about it." ("base", xpos="far_left", ypos="head")
|
||||
her "Thank you, [name_genie_hermione]." ("open", "base", "base", "mid")
|
||||
her "Still, I cannot help but feel awful for causing a scene..." ("open", "closed", "angry", "mid")
|
||||
|
|
|
@ -242,22 +242,6 @@ label quests:
|
|||
|
||||
$ play_potion_return("astoria")
|
||||
|
||||
#
|
||||
# SEVERUS SNAPE - EVENTS
|
||||
#
|
||||
|
||||
if ss_event_pause == 0:
|
||||
if game.daytime:
|
||||
# Ending events
|
||||
if states.her.level >= 15 and states.her.ev.yule_ball.e1_complete and not states.her.ev.yule_ball.e2_complete:
|
||||
# Snape complains that appointing Hermione in the Autumn Ball committee was a mistake.
|
||||
jump ball_quest_E2
|
||||
|
||||
else:
|
||||
# Ending events
|
||||
if states.her.ev.yule_ball.started and not states.her.ev.yule_ball.complete:
|
||||
jump ball_ending_E1
|
||||
|
||||
#
|
||||
# NYMPHADORA TONKS - EVENTS
|
||||
#
|
||||
|
@ -281,30 +265,8 @@ label quests:
|
|||
|
||||
if hg_event_pause == 0:
|
||||
if game.daytime:
|
||||
# Ending events
|
||||
if states.her.level >= 15 and not states.her.ev.yule_ball.e1_complete:
|
||||
# Hermione wants to be in the Autumn Ball committee.
|
||||
jump ball_quest_E1
|
||||
|
||||
if states.her.level >= 18 and states.her.ev.yule_ball.e2_complete and not states.her.ev.yule_ball.e3_complete:
|
||||
# Hermione cries about having no proper dress for the Ball.
|
||||
jump ball_quest_E3
|
||||
|
||||
if states.her.level >= 18 and states.her.ev.yule_ball.e3_complete and not states.her.ev.yule_ball.e4_complete:
|
||||
# Hermione apologizes for the day (event) before.
|
||||
jump ball_quest_E4
|
||||
pass
|
||||
else:
|
||||
if current_job == "maid":
|
||||
jump maid_responses
|
||||
elif current_job == "barmaid":
|
||||
jump barmaid_responses
|
||||
elif current_job == "gryffindor_cheerleader":
|
||||
jump gryffindor_cheer_responses
|
||||
elif current_job == "slytherin_cheerleader":
|
||||
jump slytherin_cheer_responses
|
||||
elif current_job == "promoter":
|
||||
jump hermione_helping_selling_cards
|
||||
|
||||
python:
|
||||
for i in hg_ps_list: #Call any public shaming event if it's in progress
|
||||
if i.inProgress:
|
||||
|
|
|
@ -305,7 +305,9 @@ init -1 python:
|
|||
# We need to add these after defaults are finished.
|
||||
renpy.config.label_callbacks.append(execute_event_callbacks)
|
||||
|
||||
def show_events_menu(queues, filter=False, **kwargs):
|
||||
def show_events_menu(queues, filter=False, report_progress=True, **kwargs):
|
||||
# This function is a stop gap until we update interfaces. Because it's not tied to any internals,
|
||||
# it can be easily replaced or changed in the future without breaking save compatibility.
|
||||
def menu_hints(queue, filter):
|
||||
filtered_queue = queue.list_filtered() if filter is False else queue.list_filtered(filter)
|
||||
total_applicable = len(filtered_queue)
|
||||
|
@ -313,17 +315,15 @@ init -1 python:
|
|||
completed = 0
|
||||
icons = []
|
||||
|
||||
path = "interface/icons/small/"
|
||||
|
||||
for ev in filtered_queue:
|
||||
if ev.completed:
|
||||
icons.append("interface/icons/small/heart_red.webp")
|
||||
icons.append(f"interface/icons/small/heart_red.webp")
|
||||
completed += 1
|
||||
elif ev.completed_failed:
|
||||
icons.append("interface/icons/small/heart_black.webp")
|
||||
icons.append(f"interface/icons/small/heart_black.webp")
|
||||
completed += 1
|
||||
else:
|
||||
icons.append("interface/icons/small/heart_empty.webp")
|
||||
icons.append(f"interface/icons/small/heart_empty.webp")
|
||||
|
||||
hints = f" {completed}/{total_applicable}/{total_events}"
|
||||
|
||||
|
@ -336,20 +336,30 @@ init -1 python:
|
|||
queue = getattr(store, queue)
|
||||
|
||||
hints, icons = menu_hints(queue, filter)
|
||||
|
||||
_kwargs = {"progress": icons}
|
||||
title = f"-{title}-"
|
||||
|
||||
if config.developer:
|
||||
title += hints
|
||||
|
||||
if ( ev := queue.next()) and ev.requirements_met():
|
||||
action = queue
|
||||
else:
|
||||
action = "disabled"
|
||||
|
||||
_kwargs = {}
|
||||
|
||||
if report_progress:
|
||||
_kwargs = {"progress": icons}
|
||||
|
||||
if action == "disabled":
|
||||
_kwargs["style"] = "disabled"
|
||||
|
||||
location = renpy.game.context().current
|
||||
choice = ui.ChoiceReturn(title, queue, location, kwargs=_kwargs)
|
||||
choice = ui.ChoiceReturn(title, action, location, kwargs=_kwargs)
|
||||
|
||||
l.append( (title, choice) )
|
||||
|
||||
l.append( ("-Never mind-", False) )
|
||||
|
||||
l.append( ("-Never mind-", "exit") )
|
||||
return renpy.display_menu(l, **kwargs)
|
||||
|
||||
config.after_default_callbacks.append(initialize_event_callbacks)
|
||||
|
|
Loading…
Reference in New Issue