WTS/game/scripts/events/quests.rpy
LoafyLemon 3ce6198359 Convert Hermione's Public Requests
* Converted Hermione's public requests into the queue system.
* Replaced event checks with status checks for the affected events.
* Ignore local labels in event completion tracking
* Improved readability for debug outputs
* Skip Luna intro on dev
2023-06-27 19:02:49 +01:00

355 lines
14 KiB
Plaintext

### Quests ###
# Add any event triggers to this list.
# Only one event can play for each day/night (this might change.)
# Add date specific events at the start of the list (create the date if it's not there.)
label quests:
$ renpy.choice_for_skipping()
if states.room == "main_room":
#
# DAY-BASED EVENTS
#
if game.day >= 1:
if game.daytime:
if not states.gen.ev.intro.e2_complete and states.gen.ev.intro.bird_examined and states.gen.ev.intro.desk_examined and states.gen.ev.intro.cupboard_examined and states.gen.ev.intro.door_examined and states.gen.ev.intro.fireplace_examined:
jump genie_intro_E2
else:
if not states.sna.ev.intro.e1_complete:
jump snape_intro_E1
if game.day >= 2:
if game.daytime:
if not states.gen.ev.intro.e3_complete:
jump genie_intro_E3
else:
if ss_event_pause == 0 and not states.sna.ev.intro.e2_complete:
# Snape's second visit.
jump snape_intro_E2
if game.day >= 3:
if game.daytime:
if not states.gen.ev.intro.e4_complete:
jump genie_intro_E4
else:
if ss_event_pause == 0 and not states.sna.ev.intro.e3_complete:
# Day of the duel.
jump snape_intro_E3
if game.day >= 4:
if game.daytime:
pass
else:
if ss_event_pause == 0 and not states.sna.ev.intro.e5_complete:
# You bother decide to just "roll with it"... Snape summon unlocked.
jump snape_intro_E5
if game.day >= 5:
if game.daytime:
if hg_event_pause == 0 and not states.her.ev.intro.e1_complete:
# Hermione shows up for the first time.
jump hermione_intro_E1
if game.day >= 6:
if game.daytime:
if hg_event_pause == 0 and states.sna.ev.hangouts.hermione_e1 and not states.her.ev.intro.e2_complete:
# Second visit from Hermione. Says she sent a letter to the Ministry.
jump hermione_intro_E2
else:
pass
if game.day >= 7:
if game.daytime:
pass
else:
if hg_event_pause == 0 and states.sna.ev.hangouts.hermione_e2 and not states.her.ev.intro.e3_complete:
# Takes place after first special event with Snape, where he just complains about Hermione.
# Hermione might have failed a test...
jump hermione_intro_E3
if game.day >= 8:
if game.daytime:
pass
else:
if hg_event_pause == 0 and states.her.ev.intro.e3_complete and not states.her.ev.intro.e4_complete:
# She failed a test and cries.
jump hermione_intro_E4
if game.day >= 9:
if game.daytime:
if hg_event_pause == 0 and states.her.ev.intro.e4_complete and not states.her.ev.intro.e5_complete:
# Hermione asks to be tutored. Summon unlocked!
jump hermione_intro_E5
if game.day >= 10:
if game.daytime:
if nt_event_pause == 0 and states.her.ev.intro.e5_complete and not states.ton.ev.intro.e1_complete:
# Tonks visits for the first time.
jump tonks_intro_E1
else:
if states.ton.ev.intro.e1_complete and not states.ton.ev.intro.e2_complete:
# Tonks has found no evidence so far.
jump tonks_intro_E2
if game.day >= 11:
if game.daytime:
pass
else:
if nt_event_pause == 0 and states.sna.ev.hangouts.tonks_e1 and not states.ton.ev.intro.e3_complete:
# Tonks becomes a teacher. Summon unlocked!
jump tonks_intro_E3
if game.day >= 13:
if game.daytime:
if hg_event_pause == 0 and states.her.ev.intro.e5_complete and states.sna.ev.hangouts.tonks_e1 and states.her.ev.intro.convinced and not states.her.ev.intro.e6_complete:
# Hermione wants to buy favours. Favours unlocked!
jump hermione_intro_E6
if is_puzzle_box_in_fireplace():
$ states.fireplace_started = False
$ fireplace_OBJ.foreground = "glow_effect_fireplace"
elif fireplace_OBJ.foreground == "glow_effect_fireplace":
$ fireplace_OBJ.foreground = None
#
# CARDGAME - EVENTS
#
if game.day >= states.twi.ev.cardgame.delay:
if states.cardgame.unlocked and states.twi.ev.cardgame.stage >= 1 and not states.twi.ev.cardgame.stocked:
if not game.daytime:
$ letter_cards_store.send()
if geniecard_level < 2 and states.sna.ev.cardgame.stage >= 3 and states.her.ev.cardgame.stage >= 3 and states.twi.ev.cardgame.stage >= 2:
if not game.daytime:
$ letter_cards_tier2.send()
#
# CHO CHANG - EVENTS
#
if cc_event_pause == 0:
if game.daytime:
if not states.cho.ev.intro.e1_complete and states.her.tier >= 2:
# Cho intro
jump cho_intro_E1
if states.cho.ev.quidditch.hufflepuff_stage == "start":
$ game.weather = "clear"
stop weather
$ states.cho.ev.quidditch.hufflepuff_stage = "return"
jump hufflepuff_match
elif states.cho.ev.quidditch.slytherin_stage == "start":
$ game.weather = "clear"
stop weather
$ states.cho.ev.quidditch.slytherin_stage = "return"
jump slytherin_match
elif states.cho.ev.quidditch.gryffindor_stage == "start":
$ game.weather = "clear"
stop weather
$ states.cho.ev.quidditch.gryffindor_stage = "return"
jump gryffindor_match
if states.cho.tier == 1:
# Lee Jordan gets knocked out cold
if states.cho.ev.quidditch.hufflepuff_training and not states.cho.ev.quidditch.e3_complete:
jump cho_quid_E3
elif states.cho.tier == 2:
# Hermione refuses to commentate for Slytherin match.
if states.cho.ev.quidditch.slytherin_failed and not states.cho.ev.quidditch.e6_complete:
jump cho_quid_E6
elif states.cho.tier == 3:
# Genie decides to get the broom.
if states.cho.ev.quidditch.gryffindor_training and not states.cho.ev.quidditch.e12_complete:
jump cho_quid_E12
# Informs the player that all preparations are complete
if states.cho.ev.quidditch.e11_complete and states.cho.ev.quidditch.e12_complete and not states.cho.ev.quidditch.e13_complete:
jump cho_quid_E13
else:
# Introduction
if states.cho.ev.intro.e1_complete and not states.cho.ev.intro.e2_complete:
jump cho_intro_E2
# Quidditch training matches
if states.cho.ev.quidditch.in_progress:
$ states.cho.ev.quidditch.in_progress = False
if states.cho.tier == 1:
# Hufflepuff
jump cc_ht_return
elif states.cho.tier == 2:
# Slytherin
jump cc_st_return
elif states.cho.tier == 3:
# Gryffindor
jump cc_gt_return
# Note: The return events now get jumped to right after the main match events.
python:
for i in cc_requests_list:
if i.inProgress:
i.inProgress = False
i.start()
$ play_potion_return("cho")
#
# SUSAN BONES - EVENTS
#
if sb_event_pause == 0:
if game.daytime:
# Introduction
if states.ton.ev.hangouts.susan_e1 and not states.sus.ev.intro.e1_complete:
jump susan_intro_E1
$ play_potion_return("susan")
#
# ASTORIA GREENGRASS - EVENTS
#
# Astoria events not triggered by a date.
if ag_event_pause == 0:
if game.daytime:
# Introduction
if states.ast.ev.intro.e2_ask_hermione and states.ast.ev.intro.e2_ask_snape and not states.ast.ev.intro.e3_complete:
$ states.ast.ev.intro.e2_complete = True
jump astoria_intro_E3
if states.ton.ev.hangouts.astoria_e1 and not states.ast.ev.intro.e4_complete:
jump astoria_intro_E4
else:
# Introduction
if states.sus.ev.intro.e1_complete and not states.ast.ev.intro.e1_complete:
jump astoria_intro_E1
python:
for i in ag_spell_list: # Spell Training
if i.inProgress:
i.inProgress = False
i.start()
$ 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
#
# Tonks events not triggered by a date.
if nt_event_pause == 0:
if game.daytime:
pass
else:
python:
for i in nt_requests_list:
if i.inProgress:
i.inProgress = False
i.start()
$ play_potion_return("tonks")
#
# HERMIONE GRANGER - EVENTS
#
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
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:
renpy.jump(i.complete_label)
$ play_potion_return("hermione")
#
# LUNA LOVEGOOD - EVENTS
#
if ll_event_pause == 0:
if not states.lun.ev.intro.e1_complete and states.her.tier >= 3:
if not game.daytime:
# Luna barges into your office sleepwalking.
jump luna_intro_E1
if states.lun.ev.intro.e1_complete and not states.lun.ev.intro.e2_complete:
if game.daytime:
jump luna_intro_E2
if states.lun.ev.spectrespecs.e1_complete and not states.lun.ev.quibbler.stocked:
if game.daytime:
jump spectrespecs_E2_reminder
$ play_potion_return("luna")
elif states.room == "snape_office":
if game.daytime:
if not states.map.snape_office.intro_e2:
# Genie searches the office
jump potions_intro_E1
if not states.map.snape_office.intro_e3 and states.map.snape_office.intro_e2:
# Genie gets caught by the painting.
jump potions_intro_E2
else:
if not states.map.snape_office.intro_e3:
# (Optional) Genie gets caught by Snape. (E0 can play either before or after E1)
jump potions_intro_E0
$ eventqueue.start()
# All quest events should somehow end with a jump to the main room day/night cycle
# If no quest event is triggered, resume normally from the main room
call music_block
call screen room_menu