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