default map_animated = "once" define map_scale = 0.35 define map_ani_time = 1.5 default map_randomobj = renpy.random.Random() init python: def __choice(seq): seed = map_randomobj.getstate() rv = map_randomobj.choice(seq) map_randomobj.setstate(seed) return rv transform map_fadein: alpha 0 pause (map_ani_time) linear 1 alpha 1 image map_unfold: "interface/map/anim/map_03.webp" pause map_ani_time/3 "interface/map/anim/map_02.webp" with Dissolve(map_ani_time/3) pause map_ani_time/3 "interface/map/anim/map_01.webp" with Dissolve(map_ani_time/3) pause map_ani_time/3 "interface/map/map.webp" with Dissolve(1) pause 1 "interface/map/map.webp" screen map_screen(): tag map zorder 4 # Default avoids changing the screen if the animation is toggled quickly default unfold = map_animated # Disable animation after first time (can still be toggled) if map_animated == "once": timer map_ani_time+1 action SetVariable("map_animated", False) fixed: pos (230, 150) if unfold: add "map_unfold" zoom map_scale # 588x420 else: add "interface/map/map.webp" zoom map_scale # 588x420 fixed: if unfold: at map_fadein use map_buttons use map_screen_characters screen map_buttons(): tag map zorder 4 #Office imagebutton: xpos 112 ypos 234 idle "interface/map/room_office_idle.webp" hover "interface/map/room_office_hover.webp" hovered SetScreenVariable("ball_hint", "office") unhovered SetScreenVariable("ball_hint", None) action Return("main_room_menu") #Gryffindor imagebutton: xpos 148 ypos 214 idle "interface/map/room_gryffindor_idle.webp" # hover "interface/map/room_gryffindor_hover.webp" # hovered SetScreenVariable("ball_hint", "dorm_gryffindor") # unhovered SetScreenVariable("ball_hint", None) # action Return("gryffindor_dormitories") #Ravenclaw imagebutton: xpos 286 ypos 256 idle "interface/map/room_ravenclaw_idle.webp" # hover "interface/map/room_ravenclaw_hover.webp" # hovered SetScreenVariable("ball_hint", "dorm_ravenclaw") # unhovered SetScreenVariable("ball_hint", None) # action Return("ravenclaw_dormitories") #Hufflepuff imagebutton: xpos 76 ypos 295 idle "interface/map/room_hufflepuff_idle.webp" #hovered SetScreenVariable("ball_hint", "dorm_hufflepuff") #unhovered SetScreenVariable("ball_hint", None) #hover "interface/map/room_hufflepuff_hover.webp" #action Return("hufflepuff_dormitories") #Slytherin imagebutton: xpos 214 ypos 136 idle "interface/map/room_slytherin_idle.webp" #hovered SetScreenVariable("ball_hint", "dorm_slytherin") #unhovered SetScreenVariable("ball_hint", None) #hover "interface/map/room_slytherin_hover.webp" #action Return("slytherin_dormitories") #Weasley Store 15 x 15 if not item_store_intro_done: add "interface/achievements/glow.webp" xycenter (246, 231) offset (15, 15) zoom 0.15 alpha 0.5 at rotate_circular imagebutton: xpos 246 ypos 231 idle "interface/map/room_weasley_store_idle.webp" hover "interface/map/room_weasley_store_hover.webp" hovered SetScreenVariable("ball_hint", "weasley_store") unhovered SetScreenVariable("ball_hint", None) action Return("item_store") #Clothing Store if not clothing_store_intro_done: add "interface/achievements/glow.webp" xycenter (462, 231) offset (15, 15) zoom 0.15 alpha 0.5 at rotate_circular imagebutton: xpos 462 ypos 231 idle "interface/map/room_clothing_store_idle.webp" hover "interface/map/room_clothing_store_hover.webp" hovered SetScreenVariable("ball_hint", "clothing_store") unhovered SetScreenVariable("ball_hint", None) action Return("clothing_store") # Snape's Office if not states.map.snape_office.visited: add "interface/achievements/glow.webp" xycenter (314, 331) offset (15, 15) zoom 0.15 alpha 0.5 at rotate_circular imagebutton: xpos 314 ypos 331 idle "interface/map/room_potions_idle.webp" hover "interface/map/room_potions_hover.webp" hovered SetScreenVariable("ball_hint", "potions") unhovered SetScreenVariable("ball_hint", None) action Return("snape_office") #Room of Requirement if states.map.seventh_floor.unlocked: if not states.map.room_of_requirement.intro_e1: add "interface/achievements/glow.webp" xycenter (116, 160) offset (15, 15) zoom 0.15 alpha 0.5 at rotate_circular imagebutton: xpos 116 ypos 160 unhovered SetScreenVariable("ball_hint", None) hovered SetScreenVariable("ball_hint", "room_of_req") action Return("seventh_floor") if not states.map.seventh_floor.visited: idle "interface/map/room_ror_empty_idle.webp" hover "interface/map/room_ror_empty_hover.webp" else: idle "interface/map/room_ror_idle.webp" hover "interface/map/room_ror_hover.webp" #Lake imagebutton: xpos 131 ypos 367 idle "interface/map/room_boat_house_idle.webp" # hover "interface/map/room_boat_house_hover.webp" # hovered SetScreenVariable("ball_hint", "lake") # unhovered SetScreenVariable("ball_hint", None) # action Return("map_lake") #Forest imagebutton: xpos 103 ypos 12 idle "interface/map/room_north_courtyard_idle.webp" # hover "interface/map/room_north_courtyard_hover.webp" # hovered SetScreenVariable("ball_hint", "forest") # unhovered SetScreenVariable("ball_hint", None) # action Return("map_forest") #Attic if states.her.ev.sealed_scroll.examined: if not states.her.ev.sealed_scroll.sample: add "interface/achievements/glow.webp" xycenter (340, 226) offset (15, 15) zoom 0.15 alpha 0.5 at rotate_circular imagebutton: xpos 340 ypos 226 idle "interface/map/room_attic_closed_idle.webp" hover "interface/map/room_attic_closed_hover.webp" hovered SetScreenVariable("ball_hint", "attic") unhovered SetScreenVariable("ball_hint", None) action Return("map_attic") else: imagebutton: xpos 340 ypos 226 idle "interface/map/room_attic_open_idle.webp" hover "interface/map/room_attic_open_hover.webp" hovered SetScreenVariable("ball_hint", "attic") unhovered SetScreenVariable("ball_hint", None) action Return("map_attic") # Map animation toggle textbutton "Animation": style gui.theme("check_button") pos (470, 380) selected map_animated tooltip "Toggles map folding animation" action ToggleVariable("map_animated", True, False) label set_all_map_locations: call set_her_map_location() call set_lun_map_location() call set_cho_map_location() call set_ast_map_location() call set_sus_map_location() #TODO: Add Tonks map location #TODO: Add Snape map location call update_character_map_locations return label set_her_map_location(location=""): if location != "": if location == "library": $ states.her.map_location = "library" elif location in ["gryffindor_room","gryff_room","room_g"]: $ states.her.map_location = "room_g" elif location in ["slytherin_room","slyth_room","room_s"]: $ states.her.map_location = "room_s" elif location == "great_hall": $ states.her.map_location = "great_hall" elif location == "courtyard": $ states.her.map_location = "courtyard" else: #Random if states.her.level < 11: $ states.her.map_location = __choice(("library", "library", "great_hall", "room_g", "room_g")) else: if states.her.status.blowjob == True and game.weather in ("clear", "cloudy") and not game.daytime and not states.her.busy: $ states.her.map_location = "forest" elif states.her.public_level < 12: $ states.her.map_location = __choice(("great_hall", "courtyard", "room_g", "room_g", "room_g")) else: $ states.her.map_location = __choice(("room_s", "courtyard", "room_g", "room_g", "room_g")) if location: call update_character_map_locations return label set_lun_map_location(location = ""): if location != "": if location == "greenhouse": $ states.lun.map_location = "greenhouse" elif location == "forest": $ states.lun.map_location = "forest" elif location in ["ravenclaw_room","raven_room","room_r"]: $ states.lun.map_location = "room_r" else: #Random $ states.lun.map_location = __choice(("greenhouse", "forest", "forest", "room_r", "room_r")) if location: call update_character_map_locations return label set_ast_map_location(location = ""): if location != "": if location == "courtyard": $ states.ast.map_location = "courtyard" elif location in ["slytherin_room","slyth_room","room_s"]: $ states.ast.map_location = "room_s" elif location in ["defense_classroom"]: $ states.ast.map_location = "defense" else: #Random $ states.ast.map_location = __choice(("courtyard", "courtyard", "room_s", "room_s", "room_s")) if location: call update_character_map_locations return label set_sus_map_location(location = ""): if location != "": if location == "great_hall": $ states.sus.map_location = "great_hall" elif location in ["hufflepuff_room","huffl_room","room_h"]: $ states.sus.map_location = "room_r" else: #Random $ states.sus.map_location = __choice(("great_hall", "great_hall", "room_h", "room_h", "room_h")) if location: call update_character_map_locations return label set_cho_map_location(location = ""): if location != "": if location == "training_grounds": $ states.cho.map_location = "training_grounds" elif location in ["ravenclaw_room","raven_room","room_r"]: $ states.cho.map_location = "room_r" else: #Random $ states.cho.map_location = __choice(("training_grounds", "training_grounds", "room_r", "room_r", "room_r")) if location: call update_character_map_locations return label update_character_map_locations: if states.her.map_location == "library": $ her_map_xpos = 455 $ her_map_ypos = 94 elif states.her.map_location == "room_g": $ her_map_xpos = 110 $ her_map_ypos = 212 elif states.her.map_location == "room_s": $ her_map_xpos = 210 $ her_map_ypos = 184 elif states.her.map_location == "great_hall": $ her_map_xpos = 70 $ her_map_ypos = 240 elif states.her.map_location == "courtyard": $ her_map_xpos = 444 $ her_map_ypos = 216 elif states.her.map_location == "forest": $ her_map_xpos = 60 $ her_map_ypos = 40 #Luna if states.lun.map_location == "room_r": $ lun_map_xpos = 306 $ lun_map_ypos = 242 elif states.lun.map_location == "forest": $ lun_map_xpos = 200 $ lun_map_ypos = 50 elif states.lun.map_location == "greenhouse": $ lun_map_xpos = 450 $ lun_map_ypos = 320 #Astoria if states.ast.map_location == "room_s": $ ast_map_xpos = 246 $ ast_map_ypos = 118 elif states.ast.map_location == "courtyard": $ ast_map_xpos = 404 $ ast_map_ypos = 254 elif states.ast.map_location == "defense": #Event $ ast_map_xpos = 300 $ ast_map_ypos = 190 #Susan if states.sus.map_location == "room_h": $ sus_map_xpos = 130 $ sus_map_ypos = 320 elif states.sus.map_location == "great_hall": $ sus_map_xpos = 70 $ sus_map_ypos = 280 #Cho if states.cho.map_location == "room_r": $ cho_map_xpos = 264 $ cho_map_ypos = 276 elif states.cho.map_location == "training_grounds": $ cho_map_xpos = 520 $ cho_map_ypos = 50 #Tonks $ ton_map_xpos = 318 $ ton_map_ypos = 156 #Snape if game.daytime: $ sna_map_xpos = 365 $ sna_map_ypos = 270 else: $ sna_map_xpos = 368 $ sna_map_ypos = 348 return screen map_screen_characters(): tag map zorder 5 #Hermione if states.her.unlocked: if states.her.map_location == "forest": # Mark forest event. add "interface/achievements/glow.webp" xycenter (her_map_xpos, her_map_ypos) zoom 0.15 alpha 0.5 at rotate_circular imagebutton: xpos her_map_xpos ypos her_map_ypos xalign 0.5 yalign 0.5 idle "interface/map/name_hermione.webp" hover "interface/map/name_hermione_hover.webp" hovered SetScreenVariable("ball_hint", "summon_hermione") unhovered SetScreenVariable("ball_hint", None) action Return("hermione") #Luna if states.lun.unlocked: imagebutton: xpos lun_map_xpos ypos lun_map_ypos xalign 0.5 yalign 0.5 idle "interface/map/name_luna.webp" hover "interface/map/name_luna_hover.webp" hovered SetScreenVariable("ball_hint", "summon_luna") unhovered SetScreenVariable("ball_hint", None) action Return("luna") #Astoria if states.ast.unlocked: imagebutton: xpos ast_map_xpos ypos ast_map_ypos xalign 0.5 yalign 0.5 idle "interface/map/name_astoria.webp" hover "interface/map/name_astoria_hover.webp" hovered SetScreenVariable("ball_hint", "summon_astoria") unhovered SetScreenVariable("ball_hint", None) action Return("astoria") #Susan if states.sus.unlocked: imagebutton: xpos sus_map_xpos ypos sus_map_ypos xalign 0.5 yalign 0.5 idle "interface/map/name_susan.webp" hover "interface/map/name_susan_hover.webp" hovered SetScreenVariable("ball_hint", "summon_susan") unhovered SetScreenVariable("ball_hint", None) action Return("susan") #Cho if states.cho.unlocked: imagebutton: xpos cho_map_xpos ypos cho_map_ypos xalign 0.5 yalign 0.5 idle "interface/map/name_cho.webp" hover "interface/map/name_cho_hover.webp" hovered SetScreenVariable("ball_hint", "summon_cho") unhovered SetScreenVariable("ball_hint", None) action Return("cho") #Snape if states.sna.unlocked: imagebutton: xpos sna_map_xpos ypos sna_map_ypos xalign 0.5 yalign 0.5 idle "interface/map/name_snape.webp" hover "interface/map/name_snape_hover.webp" hovered SetScreenVariable("ball_hint", "summon_snape") unhovered SetScreenVariable("ball_hint", None) action Return("snape") #Tonks if states.ton.unlocked: imagebutton: xpos ton_map_xpos ypos ton_map_ypos xalign 0.5 yalign 0.5 idle "interface/map/name_tonks.webp" hover "interface/map/name_tonks_hover.webp" hovered SetScreenVariable("ball_hint", "summon_tonks") unhovered SetScreenVariable("ball_hint", None) action Return("tonks")