WTS/game/scripts/interface/map.rpy
LoafyLemon 38d2494bc3 Fix conflicting properties (by Gouvernathor)
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
2024-03-25 14:57:36 +00:00

473 lines
16 KiB
Plaintext

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:
xcenter her_map_xpos
ycenter her_map_ypos
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:
xcenter lun_map_xpos
ycenter lun_map_ypos
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:
xcenter ast_map_xpos
ycenter ast_map_ypos
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:
xcenter sus_map_xpos
ycenter sus_map_ypos
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:
xcenter cho_map_xpos
ycenter cho_map_ypos
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:
xcenter sna_map_xpos
ycenter sna_map_ypos
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:
xcenter ton_map_xpos
ycenter ton_map_ypos
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")