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
355
game/scripts/characters/hermione/events/jobs_NOT_IN_USE.txt
Normal file
355
game/scripts/characters/hermione/events/jobs_NOT_IN_USE.txt
Normal file
File diff suppressed because it is too large
Load Diff
@ -162,20 +162,27 @@ label hermione_favor_menu:
|
|||||||
jump hermione_favor_menu
|
jump hermione_favor_menu
|
||||||
|
|
||||||
"-Personal favours-" (icon="interface/icons/small/heart_red.webp"):
|
"-Personal favours-" (icon="interface/icons/small/heart_red.webp"):
|
||||||
|
label .favors:
|
||||||
|
|
||||||
call tutorial("hearts")
|
call tutorial("hearts")
|
||||||
|
|
||||||
$ result = show_events_menu(hermione_favors)
|
$ 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()
|
$ result.start()
|
||||||
|
|
||||||
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 .skip_points_check
|
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:
|
||||||
|
label .requests:
|
||||||
|
|
||||||
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:
|
||||||
# Public whore ending choice
|
# Public whore ending choice
|
||||||
$ renpy.choice_for_skipping()
|
$ renpy.choice_for_skipping()
|
||||||
@ -192,10 +199,30 @@ label hermione_favor_menu:
|
|||||||
|
|
||||||
$ result = show_events_menu(hermione_requests)
|
$ 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()
|
$ 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:
|
"-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."
|
||||||
|
@ -1,60 +1,5 @@
|
|||||||
label hermione_talk:
|
label hermione_talk:
|
||||||
menu:
|
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 ###
|
### 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:
|
"-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:
|
if states.ast.ev.intro.e2_ask_hermione:
|
||||||
|
@ -1,5 +1,7 @@
|
|||||||
### Yule Ball Ending ###
|
### 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:
|
label ball_ending_start:
|
||||||
gen "[name_hermione_genie], that ball you've mentioned..." ("base", xpos="far_left", ypos="head")
|
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")
|
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
|
$ states.her.ev.yule_ball.started = True
|
||||||
$ ss_event_pause += 2
|
$ ss_event_pause += 2
|
||||||
|
$ her_ev_yule_ball_ending_e1.enqueue()
|
||||||
|
|
||||||
jump hermione_favor_menu
|
jump hermione_favor_menu
|
||||||
|
|
||||||
|
|
||||||
screen genie_snape_shake_hands(shake=False):
|
screen genie_snape_shake_hands(shake=False):
|
||||||
if shake:
|
if shake:
|
||||||
add "characters/snape/chibis/handshake/hand_01.webp" pos (220, 205) zoom 0.5
|
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
|
#hermione asks genie about who will be in-charge of the ball
|
||||||
label ball_quest_E1:
|
label ball_quest_E1:
|
||||||
stop music fadeout 1.0
|
stop music fadeout 1.0
|
||||||
@ -609,7 +614,7 @@ label ball_quest_E4:
|
|||||||
gen "[name_hermione_genie]?" ("base", xpos="far_left", ypos="head")
|
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 "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 "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")
|
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 "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")
|
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")
|
$ 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
|
# NYMPHADORA TONKS - EVENTS
|
||||||
#
|
#
|
||||||
@ -281,30 +265,8 @@ label quests:
|
|||||||
|
|
||||||
if hg_event_pause == 0:
|
if hg_event_pause == 0:
|
||||||
if game.daytime:
|
if game.daytime:
|
||||||
# Ending events
|
pass
|
||||||
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
|
|
||||||
else:
|
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:
|
python:
|
||||||
for i in hg_ps_list: #Call any public shaming event if it's in progress
|
for i in hg_ps_list: #Call any public shaming event if it's in progress
|
||||||
if i.inProgress:
|
if i.inProgress:
|
||||||
|
@ -305,7 +305,9 @@ init -1 python:
|
|||||||
# We need to add these after defaults are finished.
|
# We need to add these after defaults are finished.
|
||||||
renpy.config.label_callbacks.append(execute_event_callbacks)
|
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):
|
def menu_hints(queue, filter):
|
||||||
filtered_queue = queue.list_filtered() if filter is False else queue.list_filtered(filter)
|
filtered_queue = queue.list_filtered() if filter is False else queue.list_filtered(filter)
|
||||||
total_applicable = len(filtered_queue)
|
total_applicable = len(filtered_queue)
|
||||||
@ -313,17 +315,15 @@ init -1 python:
|
|||||||
completed = 0
|
completed = 0
|
||||||
icons = []
|
icons = []
|
||||||
|
|
||||||
path = "interface/icons/small/"
|
|
||||||
|
|
||||||
for ev in filtered_queue:
|
for ev in filtered_queue:
|
||||||
if ev.completed:
|
if ev.completed:
|
||||||
icons.append("interface/icons/small/heart_red.webp")
|
icons.append(f"interface/icons/small/heart_red.webp")
|
||||||
completed += 1
|
completed += 1
|
||||||
elif ev.completed_failed:
|
elif ev.completed_failed:
|
||||||
icons.append("interface/icons/small/heart_black.webp")
|
icons.append(f"interface/icons/small/heart_black.webp")
|
||||||
completed += 1
|
completed += 1
|
||||||
else:
|
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}"
|
hints = f" {completed}/{total_applicable}/{total_events}"
|
||||||
|
|
||||||
@ -336,20 +336,30 @@ init -1 python:
|
|||||||
queue = getattr(store, queue)
|
queue = getattr(store, queue)
|
||||||
|
|
||||||
hints, icons = menu_hints(queue, filter)
|
hints, icons = menu_hints(queue, filter)
|
||||||
|
|
||||||
_kwargs = {"progress": icons}
|
|
||||||
title = f"-{title}-"
|
title = f"-{title}-"
|
||||||
|
|
||||||
if config.developer:
|
if config.developer:
|
||||||
title += hints
|
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
|
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( (title, choice) )
|
||||||
|
|
||||||
l.append( ("-Never mind-", False) )
|
l.append( ("-Never mind-", "exit") )
|
||||||
|
|
||||||
return renpy.display_menu(l, **kwargs)
|
return renpy.display_menu(l, **kwargs)
|
||||||
|
|
||||||
config.after_default_callbacks.append(initialize_event_callbacks)
|
config.after_default_callbacks.append(initialize_event_callbacks)
|
||||||
|
Loading…
Reference in New Issue
Block a user