LoafyLemon
38d2494bc3
big work what was reliable before is now not, in recent versions of renpy, which is why we added that new config (which I put in say.rpy, but it can be moved somewhere else) Also fixes the game_menu's title position, incidentally some changes are incompatible with my diary and achievement branches, respectively, they will need to be merged with a bit of manual care
333 lines
10 KiB
Plaintext
333 lines
10 KiB
Plaintext
|
|
label desk:
|
|
if game.day == 1:
|
|
if not states.gen.ev.intro.desk_examined:
|
|
$ states.gen.ev.intro.desk_examined = True
|
|
$ desk_OBJ.idle = "ch_gen sit_behind_desk"
|
|
call bld
|
|
gen "A desk of some sort..." ("base", xpos="far_left", ypos="head")
|
|
gen "And a letter..." ("base", xpos="far_left", ypos="head")
|
|
gen "Mailed to a certain \"Albus Dumbledore\"." ("base", xpos="far_left", ypos="head")
|
|
|
|
menu:
|
|
gen "Should I open it?" ("base", xpos="far_left", ypos="head")
|
|
"-Read the letter-":
|
|
call bld
|
|
gen "Of course I will!" ("grin", xpos="far_left", ypos="head")
|
|
"-Leave it be-":
|
|
call bld
|
|
gen "Hell no!" ("angry", xpos="far_left", ypos="head")
|
|
gen "Of course I will read it!" ("grin", xpos="far_left", ypos="head")
|
|
|
|
# First letter from Hermione
|
|
$ desk_OBJ.foreground = None
|
|
$ letter_hg_1.open()
|
|
|
|
gen "*Ehm*........." ("base", xpos="far_left", ypos="head")
|
|
gen "What?" ("base", xpos="far_left", ypos="head")
|
|
gen "................................." ("base", xpos="far_left", ypos="head")
|
|
else:
|
|
gen "I've already checked the desk." ("base", xpos="far_left", ypos="head")
|
|
|
|
if 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:
|
|
jump main_room_menu
|
|
|
|
# TODO: Refactor. Low priority.
|
|
|
|
call update_character_map_locations
|
|
|
|
|
|
#Screens
|
|
play sound "sounds/scroll.ogg"
|
|
call screen desk_menu(_with_none=False) with d1
|
|
#Do NOT add a transition here!
|
|
|
|
$ renpy.dynamic(__choice = _return)
|
|
|
|
#Hermione
|
|
if __choice == "hermione":
|
|
if states.her.busy:
|
|
if game.daytime:
|
|
nar "Hermione is taking classes."
|
|
else:
|
|
nar "Hermione is already asleep."
|
|
jump main_room_menu
|
|
else:
|
|
if states.her.map_location == "forest":
|
|
nar "Hermione is currently at the Forbidden Forest.\n>Would you like to go there?"
|
|
menu:
|
|
"-Yes, pay her a visit-":
|
|
jump hermione_map_BJ
|
|
"-No, summon her to your office-":
|
|
pass
|
|
|
|
jump summon_hermione
|
|
|
|
#Luna
|
|
elif states.lun.unlocked and __choice == "luna":
|
|
if states.lun.busy:
|
|
if game.daytime:
|
|
nar "Luna is taking classes."
|
|
else:
|
|
nar "Luna is already asleep."
|
|
jump main_room_menu
|
|
else:
|
|
jump summon_luna
|
|
|
|
#Astoria
|
|
elif __choice == "astoria":
|
|
if states.ast.busy:
|
|
if game.daytime:
|
|
nar "Astoria is taking classes."
|
|
else:
|
|
nar "Astoria is already asleep."
|
|
jump main_room_menu
|
|
else: #Summoning after intro events done.
|
|
jump summon_astoria
|
|
|
|
#Susan
|
|
elif __choice == "susan":
|
|
if states.sus.busy:
|
|
if game.daytime:
|
|
nar "Susan is taking classes."
|
|
else:
|
|
nar "Susan is already asleep."
|
|
jump main_room_menu
|
|
else:
|
|
jump summon_susan
|
|
|
|
#Cho
|
|
elif __choice == "cho":
|
|
if states.cho.busy:
|
|
if game.daytime:
|
|
nar "Cho is taking classes."
|
|
else:
|
|
nar "Cho is already asleep."
|
|
jump main_room_menu
|
|
else:
|
|
jump summon_cho
|
|
|
|
#Snape
|
|
elif __choice == "snape":
|
|
if states.sna.busy:
|
|
nar "Professor Snape is unavailable."
|
|
jump main_room_menu
|
|
else:
|
|
jump summon_snape
|
|
|
|
#Tonks
|
|
elif __choice == "tonks":
|
|
if states.ton.busy:
|
|
nar "Tonks is unavailable."
|
|
jump main_room_menu
|
|
else:
|
|
jump summon_tonks
|
|
|
|
#Close
|
|
elif __choice == "Close":
|
|
jump main_room_menu
|
|
elif __choice in {"snape_office", "seventh_floor", "map_lake", "map_forest", "map_attic", "clothing_store", "item_store", "ravenclaw_dormitories", "gryffindor_dormitories"}:
|
|
call gen_chibi("stand", "desk", "base")
|
|
with d3
|
|
call gen_walk(action="leave", speed=1.5)
|
|
|
|
jump expression __choice
|
|
|
|
screen desk_menu():
|
|
tag desk_interface
|
|
|
|
zorder 5
|
|
|
|
default ball_hint = None
|
|
|
|
#Background
|
|
add "interface/desk/_bg_.webp"
|
|
|
|
if states.map.unlocked:
|
|
use map_screen
|
|
|
|
# Ugly hands
|
|
# add "interface/desk/_hands_.webp" xpos 0 ypos -30
|
|
|
|
use crystal_ball(ball_hint)
|
|
use watch
|
|
|
|
#Book
|
|
if item_store_intro_done:
|
|
add "interface/desk/book.webp" xalign 1.0 ypos 0
|
|
imagebutton:
|
|
ypos 0
|
|
xalign 1.0
|
|
idle "interface/desk/book.webp"
|
|
hover "interface/desk/book_hover.webp"
|
|
hovered SetScreenVariable("ball_hint", "book")
|
|
keysym "inventory"
|
|
unhovered SetScreenVariable("ball_hint", None)
|
|
action Return("inventory")
|
|
|
|
#Tissue Box
|
|
add "interface/desk/tissues.webp" xalign 1.0 ypos 320
|
|
imagebutton:
|
|
ypos 320
|
|
xalign 1.0
|
|
idle "interface/desk/tissues.webp"
|
|
hover "interface/desk/tissues_hover.webp"
|
|
hovered SetScreenVariable("ball_hint", "jerk_off")
|
|
keysym "fap"
|
|
unhovered SetScreenVariable("ball_hint", None)
|
|
action Return("jerk_off")
|
|
|
|
#Work
|
|
if states.paperwork_unlocked:
|
|
imagebutton:
|
|
xpos -10
|
|
ypos 0
|
|
xanchor 0.0
|
|
idle "interface/desk/work.webp"
|
|
hover "interface/desk/work_hover.webp"
|
|
hovered SetScreenVariable("ball_hint", "work")
|
|
keysym "work"
|
|
unhovered SetScreenVariable("ball_hint", None)
|
|
action Return("paperwork")
|
|
|
|
#Cards
|
|
if states.cardgame.unlocked: #Or letter_cards_unlock.read #Day 26+
|
|
imagebutton:
|
|
xalign 0.0
|
|
yalign 1.0
|
|
idle "interface/desk/cards.webp"
|
|
hover "interface/desk/cards_hover.webp"
|
|
hovered SetScreenVariable("ball_hint", "cards")
|
|
unhovered SetScreenVariable("ball_hint", None)
|
|
action Return("deck_builder")
|
|
|
|
#exit
|
|
imagebutton:
|
|
xanchor 0.5
|
|
yanchor 1.0
|
|
xpos 510
|
|
ypos 600
|
|
idle "interface/desk/exit_mask.webp"
|
|
hover "interface/desk/exit.webp"
|
|
hovered SetScreenVariable("ball_hint", "exit")
|
|
unhovered SetScreenVariable("ball_hint", None)
|
|
action Return("Close")
|
|
|
|
#Night Overlay
|
|
if not game.daytime:
|
|
add "interface/desk/_night_overlay_.webp"
|
|
|
|
use close_button
|
|
|
|
|
|
screen crystal_ball(ball_hint):
|
|
tag desk_interface
|
|
|
|
zorder 8
|
|
|
|
add "interface/desk/crystal_ball.webp" xpos 268 ypos 0
|
|
if ball_hint is not None:
|
|
add "interface/desk/hints/glow.webp" xpos 268+40
|
|
add "interface/desk/hints/"+str(ball_hint)+ ".webp" xpos 268+125 xanchor 0.5
|
|
|
|
screen watch():
|
|
#Day/Night Clock
|
|
add "interface/desk/watch.webp" xpos 603 ypos 0
|
|
imagebutton:
|
|
xpos 603
|
|
ypos 0
|
|
idle "interface/desk/watch.webp"
|
|
hover "interface/desk/watch_hover.webp"
|
|
unhovered SetScreenVariable("ball_hint", None)
|
|
keysym "sleep"
|
|
hovered If(game.daytime, SetScreenVariable("ball_hint", "doze_off"), SetScreenVariable("ball_hint", "sleep"))
|
|
action If(game.daytime, Return("night_start"), Return("day_start"))
|
|
|
|
$ watch_x = 603 +67
|
|
$ watch_y = 35
|
|
|
|
if game.weather == "rain":
|
|
add "interface/desk/watch/rain.webp" xpos watch_x ypos watch_y
|
|
elif game.weather in ("snow", "blizzard"):
|
|
add "interface/desk/watch/snow.webp" xpos watch_x ypos watch_y
|
|
elif game.weather == "storm":
|
|
add "interface/desk/watch/storm.webp" xpos watch_x ypos watch_y
|
|
else:
|
|
if game.daytime:
|
|
add "interface/desk/watch/sun.webp" xpos watch_x ypos watch_y
|
|
else:
|
|
add "interface/desk/watch/moon.webp" xpos watch_x ypos watch_y
|
|
|
|
if game.daytime:
|
|
add "interface/desk/watch/day.webp" xpos watch_x+40 ypos watch_y+6 xanchor 0.5
|
|
else:
|
|
add "interface/desk/watch/night.webp" xpos watch_x+40 ypos watch_y+6 xanchor 0.5
|
|
|
|
label paperwork:
|
|
if letter_work_report in mailbox.get_letters():
|
|
gen "(I need to get paid first.)" ("base", xpos="far_left", ypos="head")
|
|
jump main_room_menu
|
|
|
|
call weather_sound
|
|
|
|
if not renpy.music.is_playing("weather"):
|
|
call music_block
|
|
else:
|
|
stop music fadeout 1.0
|
|
|
|
call gen_chibi("paperwork")
|
|
with d3
|
|
nar "You do some paperwork."
|
|
|
|
call paperwork_progress_chapter
|
|
|
|
if not game.daytime and game.moon:
|
|
call paperwork_full_moon
|
|
|
|
call gen_chibi("sit_behind_desk")
|
|
|
|
if game.daytime:
|
|
jump night_start
|
|
else:
|
|
jump day_start
|
|
|
|
label paperwork_report_check:
|
|
# Check if a report was completed
|
|
if states.paperwork_chapters >= 4:
|
|
nar "You've completed a report."
|
|
$ states.paperwork_chapters = 0
|
|
$ states.paperwork_reports += 1
|
|
$ states.paperwork_reports_times += 1
|
|
|
|
return
|
|
|
|
label paperwork_progress_chapter(message = ""):
|
|
$ states.paperwork_chapters += 1
|
|
call notes
|
|
|
|
if states.paperwork_chapters == 1:
|
|
"[message]You finished one chapter so far."
|
|
else:
|
|
"[message]You finished {number=states.paperwork_chapters} chapters so far."
|
|
|
|
call paperwork_report_check
|
|
return
|
|
|
|
label paperwork_full_moon:
|
|
call paperwork_progress_chapter("The Full moon makes you feel more productive.\n")
|
|
return
|
|
|
|
label paperwork_concentration:
|
|
call paperwork_progress_chapter("You maintain perfect concentration during your work and finish another chapter of the report.\n")
|
|
return
|
|
|
|
label paperwork_speedwriting:
|
|
call paperwork_progress_chapter("You use your Speedwriting skills and finish another chapter of the report.\n")
|
|
return
|
|
|
|
screen gui_tooltip(img=None, xx=335, yy=210):
|
|
add img xpos xx ypos yy
|
|
zorder 3
|