3996 lines
140 KiB
Plaintext
3996 lines
140 KiB
Plaintext
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
style default:
|
||
properties gui.text_properties()
|
||
language gui.language
|
||
|
||
style input:
|
||
properties gui.text_properties("input", accent=True)
|
||
adjust_spacing False
|
||
|
||
style hyperlink_text:
|
||
properties gui.text_properties("hyperlink", accent=True)
|
||
hover_underline True
|
||
|
||
style gui_text:
|
||
properties gui.text_properties("interface")
|
||
|
||
|
||
style button:
|
||
properties gui.button_properties("button")
|
||
|
||
style button_text is gui_text:
|
||
properties gui.text_properties("button")
|
||
yalign 0.5
|
||
|
||
|
||
style label_text is gui_text:
|
||
properties gui.text_properties("label", accent=True)
|
||
|
||
style prompt_text is gui_text:
|
||
properties gui.text_properties("prompt")
|
||
|
||
|
||
style bar:
|
||
ysize gui.bar_size
|
||
left_bar Frame("gui/bar/left.png", gui.bar_borders, tile=gui.bar_tile)
|
||
right_bar Frame("gui/bar/right.png", gui.bar_borders, tile=gui.bar_tile)
|
||
|
||
style vbar:
|
||
xsize gui.bar_size
|
||
top_bar Frame("gui/bar/top.png", gui.vbar_borders, tile=gui.bar_tile)
|
||
bottom_bar Frame("gui/bar/bottom.png", gui.vbar_borders, tile=gui.bar_tile)
|
||
|
||
style scrollbar:
|
||
ysize 0
|
||
ymaximum 0
|
||
base_bar Frame("gui/scrollbar/horizontal_[prefix_]bar.png", gui.scrollbar_borders, tile=gui.scrollbar_tile)
|
||
thumb Frame("gui/scrollbar/horizontal_[prefix_]thumb.png", gui.scrollbar_borders, tile=gui.scrollbar_tile)
|
||
|
||
style vscrollbar:
|
||
xsize gui.scrollbar_size
|
||
base_bar Frame("gui/scrollbar/vertical_[prefix_]bar.png", gui.vscrollbar_borders, tile=gui.scrollbar_tile)
|
||
thumb Frame("gui/scrollbar/vertical_[prefix_]thumb.png", gui.vscrollbar_borders, tile=gui.scrollbar_tile)
|
||
|
||
style slider:
|
||
ysize gui.slider_size
|
||
base_bar Frame("gui/slider/horizontal_[prefix_]bar.png", gui.slider_borders, tile=gui.slider_tile)
|
||
thumb "gui/slider/horizontal_[prefix_]thumb.png"
|
||
|
||
style vslider:
|
||
xsize gui.slider_size
|
||
base_bar Frame("gui/slider/vertical_[prefix_]bar.png", gui.vslider_borders, tile=gui.slider_tile)
|
||
thumb "gui/slider/vertical_[prefix_]thumb.png"
|
||
|
||
|
||
style frame:
|
||
padding gui.frame_borders.padding
|
||
background Frame("gui/frame.png", gui.frame_borders, tile=gui.frame_tile)
|
||
|
||
|
||
screen say(who, what):
|
||
style_prefix "say"
|
||
if hasattr(store, 'say_stop'):
|
||
zorder 999
|
||
timer .1 action Return()
|
||
imagebutton:
|
||
idle '#000'
|
||
hover '#000'
|
||
action Return()
|
||
window:
|
||
id "window"
|
||
if renpy.android and renpy.variant("small"):
|
||
background Transform("gui/phone/textbox.png", alpha = .01 * persistent.phone_alpha_bg_txt)
|
||
|
||
if who is not None:
|
||
|
||
window:
|
||
id "namebox"
|
||
style "namebox"
|
||
|
||
if _preferences.language in ['chinese']:
|
||
text who id "who" bold True outlines [(3, "#000", 0, 0)] font "fonts/h_font.ttf"
|
||
else:
|
||
text who id "who" bold True outlines [(3, "#000", 0, 0)]
|
||
|
||
if _preferences.language in ['chinese']:
|
||
text what id "what" color persistent.dialogue_color outlines [(3, "#000", 0, 0)] font "fonts/h_font.ttf"
|
||
else:
|
||
text what id "what" color persistent.dialogue_color outlines [(3, "#000", 0, 0)]
|
||
|
||
|
||
|
||
if not renpy.variant("small"):
|
||
add SideImage() xalign 0.0 yalign 1.0
|
||
|
||
if _in_replay:
|
||
key "game_menu" action EndReplay(True)
|
||
|
||
init python:
|
||
config.character_id_prefixes.append('namebox')
|
||
|
||
style window is default
|
||
style say_label is default
|
||
style say_dialogue is default
|
||
style say_thought is say_dialogue
|
||
|
||
style namebox is default
|
||
style namebox_label is say_label
|
||
|
||
|
||
style window:
|
||
xalign 0.5
|
||
xfill True
|
||
yalign gui.textbox_yalign
|
||
ysize gui.textbox_height
|
||
|
||
background Image("gui/textbox.png", xalign=0.5, yalign=1.0)
|
||
|
||
style namebox:
|
||
xpos gui.name_xpos
|
||
xanchor gui.name_xalign
|
||
xsize gui.namebox_width
|
||
ypos gui.name_ypos
|
||
ysize gui.namebox_height
|
||
|
||
background Frame("gui/namebox.png", gui.namebox_borders, tile=gui.namebox_tile, xalign=gui.name_xalign)
|
||
padding gui.namebox_borders.padding
|
||
|
||
style say_label:
|
||
properties gui.text_properties("name", accent=True)
|
||
xalign gui.name_xalign
|
||
yalign 0.5
|
||
|
||
style say_dialogue:
|
||
properties gui.text_properties("dialogue")
|
||
|
||
xpos gui.dialogue_xpos
|
||
xsize gui.dialogue_width
|
||
ypos gui.dialogue_ypos
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
init 499 image my_img:
|
||
"images/main_interface/caret.png"
|
||
linear 1.0 alpha 1.0
|
||
linear 1.0 alpha 0.0
|
||
repeat
|
||
|
||
init -1:
|
||
$ style.input.caret = "my_img"
|
||
init -3 python:
|
||
class GetText(Action):
|
||
def __init__(self,screen_name,input_id):
|
||
self.screen_name=screen_name
|
||
self.input_id=input_id
|
||
def __call__(self):
|
||
if renpy.get_widget(self.screen_name,self.input_id):
|
||
return str(renpy.get_widget(self.screen_name,self.input_id).content)
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
screen input(prompt="", someText="", label="", win='', pc=False, n_deffault=''):
|
||
default shelp = False
|
||
|
||
style_prefix "choice"
|
||
imagebutton idle '#0338' hover '#0338' action NullAction()
|
||
|
||
vbox:
|
||
|
||
textbutton prompt text_yalign 0.5 action GetText("input","input") text_color '#fff' text_size 24 text_font checkFont("fonts/GOTHIC.ttf")
|
||
|
||
textbutton '' yminimum 100 text_color '#FFCA42' text_size 24
|
||
|
||
|
||
|
||
|
||
input id "input" default str(someText) xalign 0.5 yalign 0.41 length 10 color '#FFf' allow " ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz1234567890"
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
style input_prompt is default
|
||
|
||
style input_prompt:
|
||
xalign gui.dialogue_text_xalign
|
||
properties gui.text_properties("input_prompt")
|
||
|
||
style input:
|
||
xalign gui.dialogue_text_xalign
|
||
xmaximum gui.dialogue_width
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
label not_now_label:
|
||
|
||
|
||
hide screen black_tmp_screen_menu
|
||
|
||
ch_Name "{i}(There's nothing we can talk about right now.){/i}"
|
||
|
||
show screen show_hide_locations_2
|
||
show screen main_interface
|
||
hide screen black_tmp_screen_menu
|
||
|
||
|
||
jump main_interface_label
|
||
|
||
|
||
|
||
|
||
init python:
|
||
def get_items_choice(items):
|
||
r_items = []
|
||
for i in items:
|
||
|
||
if hasattr(store, 'set_now'):
|
||
if i.caption not in set_now:
|
||
r_items.append(i)
|
||
|
||
else:
|
||
|
||
r_items.append(i)
|
||
return(r_items)
|
||
|
||
def get_items_choice_debug(items, set_now):
|
||
r_items = []
|
||
for i in items:
|
||
if i not in set_now:
|
||
r_items.append(i)
|
||
|
||
else:
|
||
|
||
r_items.append(i)
|
||
return(r_items)
|
||
|
||
def checkedLGBTQ(chk):
|
||
global LGBTQ, sadira_girl, audrey_girl, elijah_hetero
|
||
persistent.LGBTQ = chk
|
||
if hasattr(store, 'LGBTQ'):
|
||
LGBTQ = chk
|
||
if hasattr(store, 'sadira_girl'):
|
||
del sadira_girl
|
||
if hasattr(store, 'audrey_girl'):
|
||
del audrey_girl
|
||
if hasattr(store, 'elijah_hetero'):
|
||
del elijah_hetero
|
||
return
|
||
|
||
|
||
old_game_runtime = renpy.get_game_runtime()
|
||
|
||
def AutoSaveInChoice():
|
||
global old_game_runtime
|
||
|
||
if renpy.get_game_runtime() - old_game_runtime > 10 and not renpy.get_screen('load'):
|
||
try:
|
||
renpy.force_autosave(take_screenshot = True, block = True)
|
||
except:
|
||
renpy.force_autosave(take_screenshot = True, block = False)
|
||
old_game_runtime = renpy.get_game_runtime()
|
||
|
||
|
||
screen choice(items):
|
||
style_prefix "choice"
|
||
zorder 350
|
||
default mmmf = None
|
||
if renpy.get_screen('main_interface'):
|
||
timer .1 action Hide('black_tmp_screen_menu')
|
||
timer .3 action Show('black_tmp_screen_menu')
|
||
|
||
|
||
|
||
if len(get_items_choice(items)) == 1 and items[len(items)-1].caption == 'Not now':
|
||
timer .01 action Jump('not_now_label')
|
||
else:
|
||
vbox yalign .8:
|
||
spacing 5
|
||
for i in items:
|
||
|
||
if hasattr(store, 'set_now'):
|
||
if i.caption not in set_now:
|
||
if i.caption[:2] in ['10', '20', '30', '40', '50', '60', '70', '80', '90']:
|
||
textbutton __(i.caption)[2:] action Hide('black_tmp_screen_menu', transition = Dissolve(.5)), i.action, If(i.caption != "Not now", true = Function(AutoSaveInChoice)):
|
||
if mmmf == i:
|
||
text_color "FFEEDE"
|
||
else:
|
||
text_color '#d9cbbb'
|
||
text_font "fonts/h_font.ttf"
|
||
hovered SetScreenVariable("mmmf", i)
|
||
unhovered SetScreenVariable("mmmf", None)
|
||
text_size 18 text_yalign .5
|
||
|
||
elif i.caption[0] in ['1', '2', '3', '4', '5', '6', '7', '8', '9', '0']:
|
||
textbutton __(i.caption)[1:] action Hide('black_tmp_screen_menu', transition = Dissolve(.5)), i.action, If(i.caption != "Not now", true = Function(AutoSaveInChoice)):
|
||
if mmmf == i:
|
||
text_color "FFEEDE"
|
||
else:
|
||
text_color '#d9cbbb'
|
||
text_font "fonts/h_font.ttf"
|
||
hovered SetScreenVariable("mmmf", i)
|
||
unhovered SetScreenVariable("mmmf", None)
|
||
text_size 18 text_yalign .5
|
||
elif i.caption[0] in ['!']:
|
||
textbutton __(i.caption)[1:] action None:
|
||
text_color '#d9cbbbaa'
|
||
text_font "fonts/h_font.ttf"
|
||
text_size 18 text_yalign .5
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
else:
|
||
textbutton __(i.caption) action Hide('black_tmp_screen_menu', transition = Dissolve(.5)), i.action, If(i.caption != "Not now", true = Function(AutoSaveInChoice)):
|
||
if mmmf == i:
|
||
text_color "FFEEDE"
|
||
else:
|
||
text_color '#d9cbbb'
|
||
text_font "fonts/h_font.ttf"
|
||
hovered SetScreenVariable("mmmf", i)
|
||
unhovered SetScreenVariable("mmmf", None)
|
||
text_size 18 text_yalign .5
|
||
|
||
else:
|
||
|
||
if i.caption[0] in ['1', '2', '3', '4', '5', '6', '7', '8', '9', '0']:
|
||
|
||
textbutton __(i.caption)[1:] action Hide('black_tmp_screen_menu', transition = Dissolve(.5)), i.action, If(i.caption != "Not now", true = Function(AutoSaveInChoice)):
|
||
if mmmf == i:
|
||
text_color "FFEEDE"
|
||
else:
|
||
text_color '#d9cbbb'
|
||
text_font "fonts/h_font.ttf"
|
||
hovered SetScreenVariable("mmmf", i)
|
||
unhovered SetScreenVariable("mmmf", None)
|
||
text_size 18 text_yalign .5
|
||
elif i.caption[0] in ['!']:
|
||
textbutton __(i.caption)[1:] action None:
|
||
text_color '#d9cbbbaa'
|
||
text_font "fonts/h_font.ttf"
|
||
text_size 18 text_yalign .5
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
else:
|
||
textbutton __(i.caption) action Hide('black_tmp_screen_menu', transition = Dissolve(.5)), i.action, If(i.caption != "Not now", true = Function(AutoSaveInChoice)):
|
||
if mmmf == i:
|
||
text_color "FFEEDE"
|
||
else:
|
||
text_color '#d9cbbb'
|
||
text_font "fonts/h_font.ttf"
|
||
hovered SetScreenVariable("mmmf", i)
|
||
unhovered SetScreenVariable("mmmf", None)
|
||
text_size 18 text_yalign .5
|
||
|
||
|
||
|
||
if _in_replay:
|
||
key "game_menu" action EndReplay(True)
|
||
|
||
define -1 config.narrator_menu = True
|
||
|
||
|
||
style choice_vbox is vbox
|
||
style choice_button is button
|
||
style choice_button_text is button_text
|
||
|
||
style choice_vbox:
|
||
xalign 0.5
|
||
ypos 405
|
||
yanchor 0.5
|
||
|
||
spacing gui.choice_spacing
|
||
|
||
style choice_button is default:
|
||
properties gui.button_properties("choice_button")
|
||
|
||
style choice_button_text is default:
|
||
properties gui.button_text_properties("choice_button")
|
||
|
||
|
||
|
||
|
||
init python:
|
||
def my_show_settings():
|
||
|
||
set_button_menu_now_2('Settings')
|
||
|
||
ShowMenu('preferences')()
|
||
|
||
|
||
def my_show_history():
|
||
set_button_menu_now_2('History')
|
||
|
||
ShowMenu('history')()
|
||
|
||
def chk_snd():
|
||
persistent.muteall = not persistent.muteall
|
||
Preference("all mute", "toggle")()
|
||
renpy.restart_interaction()
|
||
|
||
tmp_time_now = 1
|
||
screen quick_menu():
|
||
|
||
|
||
zorder 230
|
||
|
||
|
||
|
||
|
||
|
||
if quick_menu and not _in_replay and not hide_interface:
|
||
|
||
hbox:
|
||
style_prefix "quick"
|
||
|
||
xalign .99
|
||
yalign .99
|
||
spacing 5
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
if renpy.get_screen('main_interface') != None:
|
||
imagebutton:
|
||
if lightning:
|
||
idle Transform('main_interface/down_buttons/hide_1_0.png', alpha = 1.0)
|
||
hover 'main_interface/down_buttons/hide_1_1.png'
|
||
action SetVariable('lightning', False)
|
||
else:
|
||
idle Transform('main_interface/down_buttons/hide_0_0.png', alpha = 1.0)
|
||
hover 'main_interface/down_buttons/hide_0_1.png'
|
||
action SetVariable('lightning', True)
|
||
else:
|
||
if renpy.get_screen('test_duel_game_start_screen') == None:
|
||
imagebutton:
|
||
idle Transform('main_interface/down_buttons/back_0.png', alpha = 1.0)
|
||
hover 'main_interface/down_buttons/back_1.png'
|
||
selected_idle 'main_interface/down_buttons/back_0.png'
|
||
action Rollback()
|
||
imagebutton:
|
||
idle Transform('main_interface/down_buttons/skip_0.png', alpha = 1.0)
|
||
hover 'main_interface/down_buttons/skip_1.png'
|
||
selected_idle 'main_interface/down_buttons/skip_0.png'
|
||
if hasattr(store, 'mmg'):
|
||
action Jump('sheet_24_end_game')
|
||
else:
|
||
action Skip() alternate Skip(fast=True, confirm=True)
|
||
|
||
imagebutton:
|
||
idle Transform('main_interface/down_buttons/menu_0.png', alpha = 1.0)
|
||
hover 'main_interface/down_buttons/menu_1.png'
|
||
selected_idle 'main_interface/down_buttons/menu_0.png'
|
||
action Function(my_show_history)
|
||
|
||
imagebutton:
|
||
idle Transform('main_interface/down_buttons/save_0.png', alpha = 1.0)
|
||
hover 'main_interface/down_buttons/save_1.png'
|
||
selected_idle 'main_interface/down_buttons/save_0.png'
|
||
action QuickSave()
|
||
|
||
imagebutton:
|
||
idle Transform('main_interface/down_buttons/load_0.png', alpha = 1.0)
|
||
hover 'main_interface/down_buttons/load_1.png'
|
||
insensitive Transform('main_interface/down_buttons/load_0.png', alpha = .5)
|
||
selected_idle 'main_interface/down_buttons/load_0.png'
|
||
action QuickLoad()
|
||
|
||
if not _preferences.get_volume("sfx") and not _preferences.get_volume("music"):
|
||
imagebutton:
|
||
idle Transform('main_interface/down_buttons/sounds_off_0.png', alpha = 1.0)
|
||
hover 'main_interface/down_buttons/sounds_off_1.png'
|
||
action Preference("all mute", "toggle")
|
||
else:
|
||
imagebutton:
|
||
idle Transform('main_interface/down_buttons/sounds_on_0.png', alpha = 1.0)
|
||
hover 'main_interface/down_buttons/sounds_on_1.png'
|
||
action Preference("all mute", "toggle")
|
||
|
||
imagebutton:
|
||
idle Transform('main_interface/down_buttons/settings_0.png', alpha = 1.0)
|
||
hover 'main_interface/down_buttons/settings_1.png'
|
||
selected_idle 'main_interface/down_buttons/settings_0.png'
|
||
action Function(my_show_settings)
|
||
|
||
if hasattr(store, 'battle_tutorial') and battle_tutorial and game:
|
||
imagebutton:
|
||
idle Transform('main_interface/down_buttons/quest_button_0.png', alpha = 1.0)
|
||
hover 'main_interface/down_buttons/quest_button_1.png'
|
||
selected_idle 'main_interface/down_buttons/quest_button_0.png'
|
||
action Show('tutorial_screen', what_tutor= 'DUELING ARENA', rtrn= False)
|
||
|
||
if hasattr(store, 'caffe_tutorial') and caffe_tutorial and game:
|
||
imagebutton:
|
||
idle Transform('main_interface/down_buttons/quest_button_0.png', alpha = 1.0)
|
||
hover 'main_interface/down_buttons/quest_button_1.png'
|
||
selected_idle 'main_interface/down_buttons/quest_button_0.png'
|
||
action SetVariable('hide_interface', True), Show('tutorial_screen', what_tutor= 'CAFE', rtrn= False)
|
||
|
||
if renpy.get_screen('main_interface') != None and game:
|
||
if hasattr(store, 'ep2start'):
|
||
imagebutton:
|
||
idle Transform('main_interface/down_buttons/quest_button_0.png', alpha = 1.0)
|
||
hover 'main_interface/down_buttons/quest_button_1.png'
|
||
selected_idle 'main_interface/down_buttons/quest_button_0.png'
|
||
if renpy.get_screen('quest_log_screen') != None and quest_log_menu_now == 'CHARACTER INFO':
|
||
action Show('tutorial_screen', what_tutor= 'CHARACTER INFO', rtrn=False)
|
||
elif renpy.get_screen('quest_log_screen') != None and quest_log_menu_now == 'CALENDAR':
|
||
action [SetVariable('tutorial_bb', 0), SetVariable('tmp_time_now', copy.copy(time_now)), SetVariable('time_now', 2), Function(show_q), Show('tutorial_screen', what_tutor= 'CALENDAR', rtrn=False)]
|
||
elif renpy.get_screen('lustagram_photo_now') != None:
|
||
action SetVariable('tutorial_bb', 0), Hide('lustagram_photo_now'), SetVariable('page_now','list'), Show('lustagram_screen'), Show('tutorial_screen', what_tutor= 'LUSTOGRAM', rtrn=False)
|
||
elif renpy.get_screen('lustagram_screen') != None:
|
||
action SetVariable('tutorial_bb', 0), Show('tutorial_screen', what_tutor= 'LUSTOGRAM', rtrn=False)
|
||
elif renpy.get_screen('show_mix_potions') != None:
|
||
action SetVariable('tutorial_bb', 0), Show('tutorial_screen', what_tutor= 'ALCHEMY', rtrn=False)
|
||
elif renpy.get_screen('quest_log_screen') != None and quest_log_menu_now == 'CHARACTERISTICS':
|
||
action SetVariable('tutorial_bb', 0), Show('tutorial_screen', what_tutor= 'MY PROFILE', rtrn=False)
|
||
else:
|
||
|
||
action SetVariable('hide_interface', True), Show('tutorial_screen', what_tutor= 'HUD INTERFACE', rtrn= False)
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
init python:
|
||
config.overlay_screens.append("quick_menu")
|
||
|
||
default -1 quick_menu = True
|
||
|
||
style quick_button is default
|
||
style quick_button_text is button_text
|
||
|
||
style quick_button:
|
||
properties gui.button_properties("quick_button")
|
||
|
||
style quick_button_text:
|
||
properties gui.button_text_properties("quick_button")
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
init python:
|
||
tmp_button_1 = False
|
||
def on_start_fix_alpha(trans, st, at):
|
||
global tmp_button_1
|
||
if not tmp_button_1:
|
||
trans.alpha = 0.0
|
||
return None
|
||
|
||
def on_start_fix_ypos(trans, st, at):
|
||
global tmp_button_1
|
||
if not tmp_button_1:
|
||
trans.ypos = 43
|
||
else:
|
||
trans.ypos = 23
|
||
return None
|
||
transform -1 UpAlphaEffect:
|
||
|
||
|
||
|
||
ypos 43
|
||
linear 0.2 alpha 1.0 ypos 23
|
||
|
||
transform -1 DownAlphaEffect:
|
||
|
||
|
||
|
||
function on_start_fix_ypos
|
||
linear 0.2 alpha 1.0 ypos 43
|
||
|
||
|
||
|
||
transform -1 UpAlphaImageEffect:
|
||
|
||
|
||
|
||
ypos +20
|
||
linear 0.2 alpha 1.0 ypos 0
|
||
|
||
transform -1 DownAlphaImageEffect:
|
||
|
||
|
||
function on_start_fix_alpha
|
||
ypos 0
|
||
linear 0.2 alpha 0.0 ypos 20
|
||
|
||
|
||
|
||
init python:
|
||
button_settings = 0
|
||
button_load = 0
|
||
button_new_game = 0
|
||
button_gallery = 0
|
||
button_credits = 0
|
||
buttons_help = 0
|
||
button_load = 0
|
||
button_save = 0
|
||
button_history = 0
|
||
tmp_button = 0
|
||
|
||
|
||
button_menu_now = None
|
||
button_menu_now_2 = None
|
||
button_menu_now_3 = None
|
||
|
||
def set_button_menu_now_2(new):
|
||
global button_menu_now_2, button_menu_now_3
|
||
if button_menu_now_2 is not None:
|
||
button_menu_now_3 = copy.copy(button_menu_now_2)
|
||
button_menu_now_2 = copy.copy(new)
|
||
|
||
|
||
|
||
|
||
def set_buttons(i, up = False):
|
||
for x in ( 'button_settings',
|
||
'button_load',
|
||
'button_new_game',
|
||
'button_gallery',
|
||
'button_credits',
|
||
'buttons_help',
|
||
'button_load',
|
||
'button_save',
|
||
'button_history'):
|
||
if x != i:
|
||
|
||
SetVariable(x, 0)()
|
||
else:
|
||
if up:
|
||
SetVariable(x, 1)()
|
||
|
||
|
||
init 99 python:
|
||
config.intra_transition = Dissolve(.5)
|
||
def my_quit():
|
||
Quit()()
|
||
def my_main_menu():
|
||
global button_menu_now_2
|
||
if button_menu_now_2 == 'Load':
|
||
Hide('load', transition = Dissolve(1))()
|
||
if button_menu_now_2 == 'Settings':
|
||
Hide('preferences', transition = Dissolve(1))()
|
||
if button_menu_now_2 == 'Gallery':
|
||
Hide('gallery', transition = Dissolve(1))()
|
||
if button_menu_now_2 == 'Credits':
|
||
Hide('about', transition = Dissolve(1))()
|
||
|
||
if button_menu_now_2 == 'Help':
|
||
Hide('help', transition = Dissolve(1))()
|
||
|
||
button_menu_now_2 = None
|
||
|
||
style mm_menu:
|
||
size 50
|
||
init python:
|
||
mm_button_y = -100
|
||
|
||
screen new_game():
|
||
key "game_menu" action Hide("new_game")
|
||
|
||
imagebutton:
|
||
idle "#0000"
|
||
hover "#0000"
|
||
action Hide("new_game")
|
||
viewport:
|
||
xalign .5
|
||
yalign .5
|
||
hbox:
|
||
viewport:
|
||
xsize 960
|
||
ysize 1080
|
||
add '#0000'
|
||
add 'slv_1_bg'
|
||
add 'slv_2_logo' xalign .5 yalign .16
|
||
add 'slv_1_line' xalign .5 yalign .55
|
||
add Text(_('SANDBOX'), font = 'fonts/h_font.ttf', size = 74, color = '#FFEEDEAA') xalign .5 yalign .55
|
||
vbox:
|
||
xalign .5
|
||
yalign .85
|
||
spacing 10
|
||
add Text(_('Open World With Free Roam'), font = 'fonts/h_font.ttf', size = 32, color = '#FFEEDEAA') xalign .5
|
||
add 'slv_vector' xalign .5
|
||
add Text(_('Possibility To Choose Desired Content'), font = 'fonts/h_font.ttf', size = 32, color = '#FFEEDEAA') xalign .5
|
||
add 'slv_vector' xalign .5
|
||
add Text(_('Optional Mini-Games And Activities'), font = 'fonts/h_font.ttf', size = 32, color = '#FFEEDEAA') xalign .5
|
||
viewport:
|
||
xsize 960
|
||
ysize 1080
|
||
add '#0000'
|
||
add 'slv_2_bg'
|
||
add 'slv_1_logo' xalign .5 yalign .2
|
||
add 'slv_2_line' xalign .5 yalign .55
|
||
add Text(_('VISUAL NOVEL'), font = 'fonts/h_font.ttf', size = 74, color = '#FFEEDEAA') xalign .5 yalign .55
|
||
vbox:
|
||
xalign .5
|
||
yalign .85
|
||
spacing 10
|
||
add Text(_('All In One Storytelling'), font = 'fonts/h_font.ttf', size = 32, color = '#FFEEDEAA') xalign .5
|
||
add 'slv_vector' xalign .5
|
||
add Text(_('Occasional Choices'), font = 'fonts/h_font.ttf', size = 32, color = '#FFEEDEAA') xalign .5
|
||
add 'slv_vector' xalign .5
|
||
add Text(_('Plot-Driven Structure'), font = 'fonts/h_font.ttf', size = 32, color = '#FFEEDEAA') xalign .5
|
||
hbox:
|
||
imagebutton:
|
||
xsize 960
|
||
ysize 1080
|
||
idle '#0004'
|
||
hover '#0000'
|
||
action Hide("new_game"), SetVariable('game', True), Start()
|
||
imagebutton:
|
||
xsize 960
|
||
ysize 1080
|
||
idle '#0004'
|
||
hover '#0000'
|
||
action Hide("new_game"), SetVariable('game', False), Start(label = 'startstory')
|
||
|
||
|
||
imagebutton:
|
||
idle Transform('menu_return_button.png', alpha = .69)
|
||
hover 'menu_return_button.png'
|
||
action Hide("new_game"), ShowMenu("main_menu")
|
||
xalign .99
|
||
yalign .99
|
||
|
||
screen navigation(main_mm=False):
|
||
|
||
vbox:
|
||
style_prefix "mm_menu"
|
||
|
||
xalign .4
|
||
ypos 500
|
||
|
||
spacing gui.navigation_spacing
|
||
|
||
if main_menu:
|
||
|
||
|
||
viewport:
|
||
xmaximum 435
|
||
ymaximum 52
|
||
imagebutton:
|
||
idle '#0000'
|
||
focus_mask None
|
||
hover 'main_menu_button'
|
||
hovered SetVariable('mm_button_y', 'start')
|
||
unhovered SetVariable('mm_button_y', -100)
|
||
action Show('scblocker', transition = Dissolve(.5)),Show('new_game', transition = Dissolve(.5))
|
||
text _("New game"):
|
||
xalign .5 yalign .5 text_align .5
|
||
size 42 font 'fonts/h_font.ttf'
|
||
if mm_button_y == 'start':
|
||
color '#FFEEDE'
|
||
else:
|
||
color '#C0B9DB'
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
else:
|
||
viewport:
|
||
xmaximum 435
|
||
ymaximum 52
|
||
imagebutton:
|
||
idle '#0000'
|
||
focus_mask None
|
||
hover 'main_menu_button'
|
||
hovered SetVariable('mm_button_y', 'history')
|
||
unhovered SetVariable('mm_button_y', -100)
|
||
action ShowMenu("history")
|
||
text _("History"):
|
||
xalign .5 yalign .5 text_align .5
|
||
size 42 font 'fonts/h_font.ttf'
|
||
if mm_button_y == 'history':
|
||
color '#FFEEDE'
|
||
else:
|
||
color '#C0B9DB'
|
||
viewport:
|
||
xmaximum 435
|
||
ymaximum 52
|
||
imagebutton:
|
||
idle '#0000'
|
||
focus_mask None
|
||
hover 'main_menu_button'
|
||
hovered SetVariable('mm_button_y', 'save')
|
||
unhovered SetVariable('mm_button_y', -100)
|
||
action ShowMenu("save")
|
||
text _("Save"):
|
||
xalign .5 yalign .5 text_align .5
|
||
size 42 font 'fonts/h_font.ttf'
|
||
if mm_button_y == 'save':
|
||
color '#FFEEDE'
|
||
else:
|
||
color '#C0B9DB'
|
||
|
||
viewport:
|
||
xmaximum 435
|
||
ymaximum 52
|
||
imagebutton:
|
||
idle '#0000'
|
||
focus_mask None
|
||
hover 'main_menu_button'
|
||
hovered SetVariable('mm_button_y', 'settings')
|
||
unhovered SetVariable('mm_button_y', -100)
|
||
action ShowMenu("preferences")
|
||
text _("Settings"):
|
||
xalign .5 yalign .5 text_align .5
|
||
size 42 font 'fonts/h_font.ttf'
|
||
if mm_button_y == 'settings':
|
||
color '#FFEEDE'
|
||
else:
|
||
color '#C0B9DB'
|
||
viewport:
|
||
xmaximum 435
|
||
ymaximum 52
|
||
imagebutton:
|
||
idle '#0000'
|
||
focus_mask None
|
||
hover 'main_menu_button'
|
||
hovered SetVariable('mm_button_y', 'load')
|
||
unhovered SetVariable('mm_button_y', -100)
|
||
action ShowMenu("load")
|
||
text _("Load"):
|
||
xalign .5 yalign .5 text_align .5
|
||
size 42 font 'fonts/h_font.ttf'
|
||
if mm_button_y == 'load':
|
||
color '#FFEEDE'
|
||
else:
|
||
color '#C0B9DB'
|
||
|
||
if not main_menu:
|
||
viewport:
|
||
xmaximum 435
|
||
ymaximum 52
|
||
imagebutton:
|
||
idle '#0000'
|
||
focus_mask None
|
||
hover 'main_menu_button'
|
||
hovered SetVariable('mm_button_y', 'mmenu')
|
||
unhovered SetVariable('mm_button_y', -100)
|
||
action MainMenu()
|
||
text _("Main Menu"):
|
||
xalign .5 yalign .5 text_align .5
|
||
size 42 font 'fonts/h_font.ttf'
|
||
if mm_button_y == 'mmenu':
|
||
color '#FFEEDE'
|
||
else:
|
||
color '#C0B9DB'
|
||
|
||
viewport:
|
||
xmaximum 435
|
||
ymaximum 52
|
||
imagebutton:
|
||
idle '#0000'
|
||
focus_mask None
|
||
hover 'main_menu_button'
|
||
hovered SetVariable('mm_button_y', 'about')
|
||
unhovered SetVariable('mm_button_y', -100)
|
||
action ShowMenu("about")
|
||
text _("Credits"):
|
||
xalign .5 yalign .5 text_align .5
|
||
size 42 font 'fonts/h_font.ttf'
|
||
if mm_button_y == 'about':
|
||
color '#FFEEDE'
|
||
else:
|
||
color '#C0B9DB'
|
||
|
||
viewport:
|
||
xmaximum 435
|
||
ymaximum 52
|
||
imagebutton:
|
||
idle '#0000'
|
||
focus_mask None
|
||
hover 'main_menu_button'
|
||
hovered SetVariable('mm_button_y', 'gallery')
|
||
unhovered SetVariable('mm_button_y', -100)
|
||
action ShowMenu("gallery")
|
||
text _("Gallery"):
|
||
xalign .5 yalign .5 text_align .5
|
||
size 42 font 'fonts/h_font.ttf'
|
||
if mm_button_y == 'help':
|
||
color '#FFEEDE'
|
||
else:
|
||
color '#C0B9DB'
|
||
|
||
if renpy.variant("pc") or (renpy.variant("web") and not renpy.variant("mobile")):
|
||
|
||
|
||
viewport:
|
||
xmaximum 435
|
||
ymaximum 52
|
||
imagebutton:
|
||
idle '#0000'
|
||
focus_mask None
|
||
hover 'main_menu_button'
|
||
hovered SetVariable('mm_button_y', 'help')
|
||
unhovered SetVariable('mm_button_y', -100)
|
||
action ShowMenu("help")
|
||
text _("Help"):
|
||
xalign .5 yalign .5 text_align .5
|
||
size 42 font 'fonts/h_font.ttf'
|
||
if mm_button_y == 'help':
|
||
color '#FFEEDE'
|
||
else:
|
||
color '#C0B9DB'
|
||
|
||
|
||
|
||
if renpy.variant("pc"):
|
||
|
||
|
||
|
||
viewport:
|
||
xmaximum 435
|
||
ymaximum 52
|
||
imagebutton:
|
||
idle '#0000'
|
||
focus_mask None
|
||
hover 'main_menu_button'
|
||
hovered SetVariable('mm_button_y', 'quit')
|
||
unhovered SetVariable('mm_button_y', -100)
|
||
action Quit(confirm=not main_menu)
|
||
text _("Quit"):
|
||
xalign .5 yalign .5 text_align .5
|
||
size 42 font 'fonts/h_font.ttf'
|
||
if mm_button_y == 'quit':
|
||
color '#FFEEDE'
|
||
else:
|
||
color '#C0B9DB'
|
||
hbox:
|
||
yalign .98
|
||
xalign .47
|
||
spacing 8
|
||
if not config.steam_appid:
|
||
imagebutton:
|
||
idle Transform('main_menu/patreon_button.png', zoom = 1.15)
|
||
hover Transform(im.MatrixColor('main_menu/patreon_button.png', im.matrix.brightness(.3)), zoom = 1.15)
|
||
action OpenURL('http://www.patreon.com/bearinthenight?utm_source=game&utm_medium=menu&utm_campaign=mainmenu')
|
||
imagebutton:
|
||
idle Transform('discord_button', zoom = 1.15)
|
||
hover Transform(im.MatrixColor('main_menu/discord_button.png', im.matrix.brightness(.3)), zoom = 1.15)
|
||
action OpenURL('https://discord.gg/FgFp9NeKsz')
|
||
imagebutton:
|
||
idle Transform('steam_button', zoom = 1.15)
|
||
hover Transform(im.MatrixColor('main_menu/steam_button.png', im.matrix.brightness(.3)), zoom = 1.15)
|
||
|
||
action Function(OpenUrlOverlay, url = 'https://store.steampowered.com/app/1846920/Lust_Academy__Season_1/')
|
||
|
||
|
||
|
||
style navigation_button is gui_button
|
||
style navigation_button_text is gui_button_text
|
||
screen discord_patron_screen:
|
||
hbox yalign .95 xalign 0.01:
|
||
spacing 10
|
||
imagebutton:
|
||
idle 'discord_idle'
|
||
hover 'discord_hover'
|
||
action OpenURL('https://discord.gg/FgFp9NeKsz')
|
||
if not config.steam_appid:
|
||
imagebutton:
|
||
idle 'patreon_idle'
|
||
hover 'patreon_hover'
|
||
action OpenURL('https://www.patreon.com/bearinthenight')
|
||
style navigation_button:
|
||
size_group "navigation"
|
||
properties gui.button_properties("navigation_button")
|
||
|
||
style navigation_button_text:
|
||
properties gui.button_text_properties("navigation_button")
|
||
|
||
|
||
|
||
|
||
|
||
|
||
image main_menu_bg_webm = Movie(play='images/main_menu/main_menu_bg.webm', loop = True)
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
screen main_menu():
|
||
tag menu
|
||
if not persistent.patch_notes and not isWeb:
|
||
timer 0.1 action Show('confirm',
|
||
message= "ver[config.version]\n\n{size=17}Hi there!{/size}\n{size=17} You've downloaded the latest version of Lust Academy! {/size}\n{size=17}If you want to find out what has changed,{/size}\n{size=17}click on the 'Details' button below.{/size}\n{size=15}You can always access patch notes later in the 'Credits' menu.{/size}\n",
|
||
yes_action = [SetField(persistent, 'patch_notes', True), Hide('confirm'), Show('about_2')], no_action = [SetField(persistent, 'patch_notes', True), Hide('confirm')], yes_text = _('Details'), no_text = _('Not now'),)
|
||
if isWeb:
|
||
add 'images/main_menu/main_menu_bg.png'
|
||
else:
|
||
add 'main_menu_bg_webm'
|
||
|
||
imagebutton:
|
||
focus_mask None
|
||
idle '#0000'
|
||
hover '#0000'
|
||
action SetScreenVariable('show_list_lang',False)
|
||
|
||
viewport:
|
||
xmaximum 620
|
||
ymaximum 1080
|
||
xpos 60
|
||
add '#0000'
|
||
add 'main_menu_line' xalign .5
|
||
use navigation
|
||
|
||
if config.steam_appid is None:
|
||
imagebutton:
|
||
xalign .98
|
||
yalign .98
|
||
idle Transform('main_menu/gamcore3.png', zoom = 0.6)
|
||
hover Transform(im.MatrixColor('main_menu/gamcore3.png', im.matrix.brightness(.3)), zoom = 0.6)
|
||
action OpenURL('https://gamcore.com/')
|
||
else:
|
||
imagebutton:
|
||
xalign .98
|
||
yalign .98
|
||
idle 'main_menu/season2.png'
|
||
hover im.MatrixColor('main_menu/season2.png', im.matrix.brightness(.3))
|
||
action Function(OpenUrlOverlay, url = 'https://store.steampowered.com/app/2126680/Lust_Academy__Season_2/')
|
||
|
||
imagebutton:
|
||
xalign .987
|
||
yalign .8
|
||
idle Transform('main_menu/wishlist_banner_le.png', zoom = .532)
|
||
hover Transform(im.MatrixColor('main_menu/wishlist_banner_le.png', im.matrix.brightness(.3)), zoom = .532)
|
||
action Function(OpenUrlOverlay, url = 'https://store.steampowered.com/app/2196490/Lust_Element__Season_1/')
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
default show_list_lang = False
|
||
|
||
default langs = {'None':'English','chinese':'中文','english':'English','russian':'Русский'}
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
viewport:
|
||
xpos 540
|
||
ypos 1053 - If(show_list_lang, true = (len(langs) - 1) * 53, false = 53)
|
||
ymaximum If(show_list_lang, true = (len(langs)-1) * 53, false = 53)
|
||
xmaximum 186
|
||
add '#0000'
|
||
viewport:
|
||
yalign 1.0
|
||
yoffset -53
|
||
add '#D6D7FF' alpha .7
|
||
vbox:
|
||
yalign 1.0
|
||
yoffset -4
|
||
xoffset 6
|
||
spacing 2
|
||
for key in ['None','english','chinese','russian']:
|
||
$ lng = langs[key]
|
||
if key != str(_preferences.language) and key != 'None':
|
||
viewport:
|
||
xsize 175
|
||
ysize 43
|
||
add '#0000'
|
||
hbox:
|
||
yalign .5
|
||
xalign 0
|
||
spacing 8
|
||
add Transform('images/main_interface/flags/'+ key + '.png', zoom = 1.2) yalign .5 xoffset 2
|
||
add Text(lng, color = '#33264F', size = 17, font = 'fonts/h_font.ttf') yalign .5
|
||
imagebutton:
|
||
xmaximum 186
|
||
idle '#0000'
|
||
hover '#0002'
|
||
action ToggleScreenVariable('show_list_lang',True,False), If(key == 'None', true = Language(None), false = Language(key))
|
||
|
||
viewport:
|
||
yalign 1.0
|
||
add Transform('main_interface/flags/' + If(show_list_lang, true = 'languages_up.png', false = 'languages_down.png'), zoom = 1.2) yalign 1.0
|
||
hbox:
|
||
yalign 1.0
|
||
yoffset -6
|
||
xoffset 8
|
||
spacing 8
|
||
add Transform('images/main_interface/flags/'+ str(If(_preferences.language is None, true = 'english', false = _preferences.language)).title() + '.png', zoom = 1.2) yalign .5
|
||
add Text(langs[str(_preferences.language)], color = '#33264F', size = 17, font = 'fonts/h_font.ttf') yalign .5
|
||
imagebutton:
|
||
xsize 186
|
||
ysize 46
|
||
yalign 1.0
|
||
idle '#0000'
|
||
hover '#0002'
|
||
action ToggleScreenVariable('show_list_lang',True,False)
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
style main_menu_frame is empty
|
||
style main_menu_vbox is vbox
|
||
style main_menu_text is gui_text
|
||
style main_menu_title is main_menu_text
|
||
style main_menu_version is main_menu_text
|
||
|
||
style main_menu_frame:
|
||
xsize 420
|
||
yfill True
|
||
|
||
background "gui/overlay/main_menu.png"
|
||
|
||
style main_menu_vbox:
|
||
xalign 1.0
|
||
xoffset -30
|
||
xmaximum 1200
|
||
yalign 1.0
|
||
yoffset -30
|
||
|
||
style main_menu_text:
|
||
properties gui.text_properties("main_menu", accent=True)
|
||
|
||
style main_menu_title:
|
||
properties gui.text_properties("title")
|
||
|
||
style main_menu_version:
|
||
properties gui.text_properties("version")
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
screen game_menu(title, scroll=None, yinitial=0.0):
|
||
|
||
|
||
|
||
|
||
|
||
style_prefix "game_menu"
|
||
|
||
add 'd_menu_bg'
|
||
add 'game_menu_down' yalign 1.0
|
||
|
||
if str(title).upper() != "CREDITS":
|
||
text str(__(title)).upper() size 36 color '#FFEEDE' xalign .5 yalign .1 font 'fonts/h_font.ttf'
|
||
|
||
hbox:
|
||
style_prefix "mm_menu"
|
||
|
||
xalign .5
|
||
yalign .98
|
||
|
||
spacing -30
|
||
|
||
if main_menu:
|
||
viewport:
|
||
xsize 180
|
||
xmaximum 180
|
||
ymaximum 50
|
||
imagebutton:
|
||
idle '#0000'
|
||
focus_mask None
|
||
hover Transform('d_menu_button', zoom = .7) xalign .5 yalign .5
|
||
action Show('scblocker', transition = Dissolve(.5)),Show('new_game', transition = Dissolve(.5))
|
||
text _("New game"):
|
||
xalign .5 yalign .5
|
||
size 24 font 'fonts/h_font.ttf'
|
||
if mm_button_y == 'start':
|
||
color '#FFEEDE'
|
||
else:
|
||
color '#C0B9DB'
|
||
else:
|
||
viewport:
|
||
xsize 180
|
||
xmaximum 180
|
||
ymaximum 50
|
||
imagebutton:
|
||
idle '#0000'
|
||
focus_mask None
|
||
hover Transform('d_menu_button', zoom = .7) xalign .5 yalign .5
|
||
action SetVariable('mm_button_y', 'history'), ShowMenu("history")
|
||
text _("History"):
|
||
xalign .5 yalign .5
|
||
size 24 font 'fonts/h_font.ttf'
|
||
if mm_button_y == 'history':
|
||
color '#FFEEDE'
|
||
else:
|
||
color '#C0B9DB'
|
||
viewport:
|
||
xsize 180
|
||
xmaximum 180
|
||
ymaximum 50
|
||
imagebutton:
|
||
idle '#0000'
|
||
focus_mask None
|
||
hover Transform('d_menu_button', zoom = .7) xalign .5 yalign .5
|
||
action SetVariable('mm_button_y', 'save'), ShowMenu("save")
|
||
text _("Save"):
|
||
xalign .5 yalign .5
|
||
size 24 font 'fonts/h_font.ttf'
|
||
if mm_button_y == 'save':
|
||
color '#FFEEDE'
|
||
else:
|
||
color '#C0B9DB'
|
||
|
||
viewport:
|
||
xsize 180
|
||
xmaximum 180
|
||
ymaximum 50
|
||
imagebutton:
|
||
idle '#0000'
|
||
focus_mask None
|
||
hover Transform('d_menu_button', zoom = .7) xalign .5 yalign .5
|
||
action SetVariable('mm_button_y', 'settings'), ShowMenu("preferences")
|
||
text _("Settings"):
|
||
xalign .5 yalign .5
|
||
size 24 font 'fonts/h_font.ttf'
|
||
if mm_button_y == 'settings':
|
||
color '#FFEEDE'
|
||
else:
|
||
color '#C0B9DB'
|
||
viewport:
|
||
xsize 180
|
||
xmaximum 180
|
||
ymaximum 50
|
||
imagebutton:
|
||
idle '#0000'
|
||
focus_mask None
|
||
hover Transform('d_menu_button', zoom = .7) xalign .5 yalign .5
|
||
action SetVariable('mm_button_y', 'load'), ShowMenu("load")
|
||
text _("Load"):
|
||
xalign .5 yalign .5
|
||
size 24 font 'fonts/h_font.ttf'
|
||
if mm_button_y == 'load':
|
||
color '#FFEEDE'
|
||
else:
|
||
color '#C0B9DB'
|
||
|
||
|
||
if not main_menu:
|
||
viewport:
|
||
xsize 180
|
||
xmaximum 180
|
||
ymaximum 50
|
||
imagebutton:
|
||
idle '#0000'
|
||
focus_mask None
|
||
hover Transform('d_menu_button', zoom = .7) xalign .5 yalign .5
|
||
|
||
action SetVariable('mm_button_y', 'mmenu'), MainMenu()
|
||
text _("Main Menu"):
|
||
xalign .5 yalign .5
|
||
size 24 font 'fonts/h_font.ttf'
|
||
if mm_button_y == 'mmenu':
|
||
color '#FFEEDE'
|
||
else:
|
||
color '#C0B9DB'
|
||
|
||
viewport:
|
||
xsize 180
|
||
xmaximum 180
|
||
ymaximum 50
|
||
imagebutton:
|
||
idle '#0000'
|
||
focus_mask None
|
||
hover Transform('d_menu_button', zoom = .7) xalign .5 yalign .5
|
||
if renpy.get_screen('about_2'):
|
||
action SetVariable('mm_button_y', 'about'), Hide('about_2'), ShowMenu("about")
|
||
else:
|
||
action SetVariable('mm_button_y', 'about'), ShowMenu("about")
|
||
text _("Credits"):
|
||
xalign .5 yalign .5
|
||
size 24 font 'fonts/h_font.ttf'
|
||
if mm_button_y == 'about':
|
||
color '#FFEEDE'
|
||
else:
|
||
color '#C0B9DB'
|
||
|
||
viewport:
|
||
xsize 180
|
||
xmaximum 180
|
||
ymaximum 50
|
||
imagebutton:
|
||
idle '#0000'
|
||
focus_mask None
|
||
hover Transform('d_menu_button', zoom = .7) xalign .5 yalign .5
|
||
action SetVariable('mm_button_y', 'gallery'), ShowMenu("gallery")
|
||
text _("Gallery"):
|
||
xalign .5 yalign .5
|
||
size 24 font 'fonts/h_font.ttf'
|
||
if mm_button_y == 'gallery':
|
||
color '#FFEEDE'
|
||
else:
|
||
color '#C0B9DB'
|
||
|
||
if renpy.variant("pc") or (renpy.variant("web") and not renpy.variant("mobile")):
|
||
|
||
|
||
viewport:
|
||
xsize 180
|
||
xmaximum 180
|
||
ymaximum 50
|
||
imagebutton:
|
||
idle '#0000'
|
||
focus_mask None
|
||
hover Transform('d_menu_button', zoom = .7) xalign .5 yalign .5
|
||
action SetVariable('mm_button_y', 'help'), ShowMenu("help")
|
||
text _("Help"):
|
||
xalign .5 yalign .5
|
||
size 24 font 'fonts/h_font.ttf'
|
||
if mm_button_y == 'help':
|
||
color '#FFEEDE'
|
||
else:
|
||
color '#C0B9DB'
|
||
|
||
|
||
|
||
if renpy.variant("pc"):
|
||
|
||
|
||
|
||
viewport:
|
||
xsize 180
|
||
xmaximum 180
|
||
ymaximum 50
|
||
imagebutton:
|
||
idle '#0000'
|
||
focus_mask None
|
||
hover Transform('d_menu_button', zoom = .7) xalign .5 yalign .5
|
||
action SetVariable('mm_button_y', 'quit'), Quit(confirm=not main_menu)
|
||
text _("Quit"):
|
||
xalign .5 yalign .5
|
||
size 24 font 'fonts/h_font.ttf'
|
||
if mm_button_y == 'quit':
|
||
color '#FFEEDE'
|
||
else:
|
||
color '#C0B9DB'
|
||
hbox:
|
||
xpos 20
|
||
yalign .98
|
||
spacing 8
|
||
if not config.steam_appid:
|
||
imagebutton:
|
||
idle Transform('main_menu/patreon_button.png', zoom = 1.15)
|
||
hover Transform(im.MatrixColor('main_menu/patreon_button.png', im.matrix.brightness(.3)), zoom = 1.15)
|
||
action OpenURL('https://www.patreon.com/bearinthenight')
|
||
imagebutton:
|
||
idle Transform('discord_button', zoom = 1.15)
|
||
hover Transform(im.MatrixColor('main_menu/discord_button.png', im.matrix.brightness(.3)), zoom = 1.15)
|
||
action OpenURL('https://discord.gg/FgFp9NeKsz')
|
||
imagebutton:
|
||
idle Transform('steam_button', zoom = 1.15)
|
||
hover Transform(im.MatrixColor('main_menu/steam_button.png', im.matrix.brightness(.3)), zoom = 1.15)
|
||
|
||
action Function(OpenUrlOverlay, url = 'https://store.steampowered.com/app/1846920/Lust_Academy__Season_1/')
|
||
|
||
if main_menu:
|
||
key "game_menu" action ShowMenu("main_menu")
|
||
|
||
|
||
|
||
imagebutton:
|
||
idle Transform('menu_return_button.png', alpha = .69)
|
||
hover 'menu_return_button.png'
|
||
if renpy.get_screen('about_2'):
|
||
action Hide('about_2', transition = Dissolve(.5)), Show('about', transition = Dissolve(.5))
|
||
elif main_menu:
|
||
action ShowMenu("main_menu")
|
||
else:
|
||
action Return()
|
||
xalign .99
|
||
yalign .99
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
style game_menu_outer_frame is empty
|
||
style game_menu_navigation_frame is empty
|
||
style game_menu_content_frame is empty
|
||
style game_menu_viewport is gui_viewport
|
||
style game_menu_side is gui_side
|
||
style game_menu_scrollbar is gui_vscrollbar
|
||
|
||
style game_menu_label is gui_label
|
||
style game_menu_label_text is gui_label_text
|
||
|
||
style return_button is navigation_button
|
||
style return_button_text is navigation_button_text
|
||
|
||
style game_menu_outer_frame:
|
||
bottom_padding 145
|
||
top_padding 180
|
||
|
||
background "gui/overlay/game_menu.png"
|
||
|
||
style game_menu_navigation_frame:
|
||
xsize 420
|
||
yfill True
|
||
|
||
style game_menu_content_frame:
|
||
left_margin 60
|
||
right_margin 30
|
||
top_margin 15
|
||
|
||
style game_menu_viewport:
|
||
xsize 1380
|
||
|
||
style game_menu_vscrollbar:
|
||
unscrollable gui.unscrollable
|
||
|
||
style game_menu_side:
|
||
spacing 15
|
||
|
||
style game_menu_label:
|
||
xpos 75
|
||
ysize 180
|
||
|
||
style game_menu_label_text:
|
||
size gui.title_text_size
|
||
color gui.accent_color
|
||
yalign 0.5
|
||
|
||
style return_button:
|
||
xpos gui.navigation_xpos
|
||
yalign 1.0
|
||
yoffset -45
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
define -1 gui.about = '''
|
||
Sam Torres - CEO
|
||
Jose Cuervo - Game Designer
|
||
Gordon "Mr. G" Goodman - 3D design
|
||
Vonner Rom - Programmer
|
||
Maria Triangle - 2D design
|
||
Lilu Dallas - 2D design
|
||
Pablo Alexander - Plot
|
||
'''
|
||
|
||
|
||
transform about_transform:
|
||
on start:
|
||
xalign .5 ypos 0
|
||
on show:
|
||
xalign .5 ypos -1080
|
||
linear 1 ypos 0 xalign .5
|
||
on hide:
|
||
xalign .5 ypos 0
|
||
linear 1 ypos -1080 xalign .5
|
||
|
||
transform about_2_transform:
|
||
on show:
|
||
xalign .5 ypos 1080
|
||
linear 1 ypos 0 xalign .5
|
||
on hide:
|
||
xalign .5 ypos 0
|
||
linear 1 ypos 1080 xalign .5
|
||
|
||
screen about():
|
||
tag menu
|
||
|
||
use game_menu(_("Credits"), scroll="viewport")
|
||
|
||
add 'credits_0' xalign .5 yalign .5
|
||
|
||
viewport:
|
||
at about_transform
|
||
xmaximum 1920
|
||
ymaximum 1080
|
||
add '#0000'
|
||
text str(__("Credits")).upper() size 36 color '#FFEEDE' xalign .5 yalign .1 font 'fonts/h_font.ttf'
|
||
viewport:
|
||
xalign .5 yalign .6
|
||
xmaximum 1630
|
||
ymaximum 800
|
||
scrollbars "vertical"
|
||
mousewheel True
|
||
draggable True
|
||
pagekeys True
|
||
add '#0000'
|
||
add 'credits_logo' xalign .51 ypos 1
|
||
hbox:
|
||
xpos 260
|
||
ypos 280
|
||
spacing 4
|
||
viewport:
|
||
xmaximum 384
|
||
add '#0000'
|
||
vbox:
|
||
spacing 4
|
||
add Text('Lust Academy', font= 'fonts/h_font.ttf', color="#FFFFFF", size = 28)
|
||
hbox:
|
||
spacing 4
|
||
add Text('Version {color=#FFE2B6}[config.version]{/color}', font= 'fonts/h_font.ttf', color="#FFC289", size = 18)
|
||
textbutton "(view details)" text_size 18 yoffset -8 action Hide('about', transition = Dissolve(.5)), Show("about_2", transition = Dissolve(.5))
|
||
add Null(30, 30)
|
||
add Text('Bear in the Night Team:', font= 'fonts/h_font.ttf', color="#FFFFFF", size = 28)
|
||
add Null(20, 20)
|
||
add Text('Sam Torres{color=#FFE2B6} - CEO{/color}', font= 'fonts/h_font.ttf', color="#FFC289", size = 18)
|
||
add Text('Jose Cuervo{color=#FFE2B6} - Game Designer{/color}', font= 'fonts/h_font.ttf', color="#FFC289", size = 18)
|
||
add Text('Gordon “Mr. G” Goodman{color=#FFE2B6} - 3D Designer{/color}', font= 'fonts/h_font.ttf', color="#FFC289", size = 18)
|
||
add Text('Skida Des{color=#FFE2B6} - 3D Designer{/color}', font= 'fonts/h_font.ttf', color="#FFC289", size = 18)
|
||
add Text('Max Green{color=#FFE2B6} - Programmer{/color}', font= 'fonts/h_font.ttf', color="#FFC289", size = 18)
|
||
add Text('Paul Meskado{color=#FFE2B6} - 2D Designer{/color}', font= 'fonts/h_font.ttf', color="#FFC289", size = 18)
|
||
add Text('Marie G.{color=#FFE2B6} - 2D/3D Designer{/color}', font= 'fonts/h_font.ttf', color="#FFC289", size = 18)
|
||
add Text('Pablo Alexander{color=#FFE2B6} - Writer{/color}', font= 'fonts/h_font.ttf', color="#FFC289", size = 18)
|
||
add Text('Iris Oswald{color=#FFE2B6} - Writer{/color}', font= 'fonts/h_font.ttf', color="#FFC289", size = 18)
|
||
add Text('Antony Boleyn{color=#FFE2B6} - QA Tester{/color}', font= 'fonts/h_font.ttf', color="#FFC289", size = 18)
|
||
|
||
add Text('Lilu Dallas{color=#FFE2B688} - 2D/3D Designer{/color} {rt}{size=12}{color=#FF785A}LEFT{/color}{/size}{/rt}', font= 'fonts/h_font.ttf', color="#FFC289", size = 18)
|
||
add Text('Maria Triangle{color=#FFE2B688} - 2D Designer{/color} {rt}{size=12}{color=#FF785A}LEFT{/color}{/size}{/rt}', font= 'fonts/h_font.ttf', color="#FFC289", size = 18)
|
||
add Text('Vonner Rom{color=#FFE2B688} - Programmer{/color} {rt}{size=12}{color=#FF785A}LEFT{/color}{/size}{/rt}', font= 'fonts/h_font.ttf', color="#FFC289", size = 18)
|
||
viewport:
|
||
xmaximum 46
|
||
xpos 12
|
||
yalign 0
|
||
add '#0000'
|
||
add 'credits_line' xsize 2
|
||
viewport:
|
||
xmaximum 280
|
||
add '#0000'
|
||
vbox:
|
||
spacing 4
|
||
add Text('Ministry of Magic', font= 'fonts/h_font.ttf', color="#FFFFFF", size = 28)
|
||
add Text('Icy Bacon', font= 'fonts/h_font.ttf', color="#FFC289", size = 18) xpos 30
|
||
add Text('VNwhiteknight', font= 'fonts/h_font.ttf', color="#FFC289", size = 18) xpos 30
|
||
add Text('Jaewon', font= 'fonts/h_font.ttf', color="#FFC289", size = 18) xpos 30
|
||
add Text('GRP-Studio', font= 'fonts/h_font.ttf', color="#FFC289", size = 18) xpos 30
|
||
add Text('Paul Anderson', font= 'fonts/h_font.ttf', color="#FFC289", size = 18) xpos 30
|
||
add Text('Kytronix', font= 'fonts/h_font.ttf', color="#FFC289", size = 18) xpos 30
|
||
add Text('Kent', font= 'fonts/h_font.ttf', color="#FFC289", size = 18) xpos 30
|
||
viewport:
|
||
xmaximum 132
|
||
xpos 12
|
||
yalign 0
|
||
add '#0000'
|
||
add 'credits_line' xsize 2
|
||
viewport:
|
||
xmaximum 390
|
||
add '#0000'
|
||
vbox:
|
||
spacing 4
|
||
add Text('Wizard Union', font= 'fonts/h_font.ttf', color="#FFFFFF", size = 28)
|
||
add Text('Brandon Shanon', font= 'fonts/h_font.ttf', color="#FFC289", size = 18) xpos 30
|
||
add Text('1Yares1', font= 'fonts/h_font.ttf', color="#FFC289", size = 18) xpos 30
|
||
add Text('Karl Wild', font= 'fonts/h_font.ttf', color="#FFC289", size = 18) xpos 30
|
||
add Text('kb_schro', font= 'fonts/h_font.ttf', color="#FFC289", size = 18) xpos 30
|
||
add Text('Ricardo Earthdragon', font= 'fonts/h_font.ttf', color="#FFC289", size = 18) xpos 30
|
||
add Text('DaveyD', font= 'fonts/h_font.ttf', color="#FFC289", size = 18) xpos 30
|
||
add Text('Cyrus James', font= 'fonts/h_font.ttf', color="#FFC289", size = 18) xpos 30
|
||
add Text('Nax', font= 'fonts/h_font.ttf', color="#FFC289", size = 18) xpos 30
|
||
add Text('TideLicious', font= 'fonts/h_font.ttf', color="#FFC289", size = 18) xpos 30
|
||
add Text('Sintei', font= 'fonts/h_font.ttf', color="#FFC289", size = 18) xpos 30
|
||
add Text('Jacktheripper', font= 'fonts/h_font.ttf', color="#FFC289", size = 18) xpos 30
|
||
add Text('ImmortalPickle78', font= 'fonts/h_font.ttf', color="#FFC289", size = 18) xpos 30
|
||
add Text('Ultrary', font= 'fonts/h_font.ttf', color="#FFC289", size = 18) xpos 30
|
||
add Text('mclauzell', font= 'fonts/h_font.ttf', color="#FFC289", size = 18) xpos 30
|
||
add Text('Brandon Black', font= 'fonts/h_font.ttf', color="#FFC289", size = 18) xpos 30
|
||
add Text('Seiryu', font= 'fonts/h_font.ttf', color="#FFC289", size = 18) xpos 30
|
||
add Text('Helvetesfyr', font= 'fonts/h_font.ttf', color="#FFC289", size = 18) xpos 30
|
||
add Text('Black58a', font= 'fonts/h_font.ttf', color="#FFC289", size = 18) xpos 30
|
||
screen about_2():
|
||
|
||
|
||
use game_menu(_("Credits"), scroll="viewport")
|
||
|
||
add 'credits_0' xalign .5 yalign .5
|
||
|
||
viewport:
|
||
at about_2_transform
|
||
|
||
xmaximum 1920
|
||
ymaximum 1080
|
||
add '#0000'
|
||
text str("Patch Notes").upper() size 36 color '#FFEEDE' xalign .5 yalign .1 font 'fonts/h_font.ttf'
|
||
viewport:
|
||
xalign .5 yalign .6
|
||
xmaximum 1630
|
||
ymaximum 800
|
||
scrollbars "vertical"
|
||
mousewheel True
|
||
draggable True
|
||
pagekeys True
|
||
add '#0000'
|
||
vbox:
|
||
xalign .5
|
||
for i in [
|
||
'v0.7.1f',
|
||
"Added an option to {font=fonts/roboto_medium.ttf}{color=#ffe2b6}transfer{/color}{/font} your {font=fonts/roboto_medium.ttf}{color=#ffe2b6}progress{/color}{/font} to the {font=fonts/roboto_medium.ttf}{color=#ffe2b6}next season{/color}{/font} build.",
|
||
"Rewritten and {font=fonts/roboto_medium.ttf}{color=#ffe2b6}improved{/color}{/font} pieces of {font=fonts/roboto_medium.ttf}{color=#ffe2b6}dialogue{/color}{/font} all across the game.",
|
||
"{font=fonts/roboto_medium.ttf}{color=#ffe2b6}Fixed{/color}{/font} a lot of bugs and {font=fonts/roboto_medium.ttf}{color=#ffe2b6}typos{/color}{/font}.",
|
||
'v0.7.1d',
|
||
"Now you can rewatch all animations at the end of the scene.",
|
||
"Added sound design for X-scenes, including female moans.",
|
||
"Added final infographics of the main characters to the endgame screen.",
|
||
"Improved some old dialogues.",
|
||
"Fixed several bugs.",
|
||
'v0.7.1b',
|
||
"Added {font=fonts/roboto_medium.ttf}{color=#ffe2b6}Visual Novel{/color}{/font} version for {font=fonts/roboto_medium.ttf}{color=#ffe2b6}0.7.1{/color}{/font}.",
|
||
"Added {font=fonts/roboto_medium.ttf}{color=#ffe2b6}105{/color}{/font} new beautiful {font=fonts/roboto_medium.ttf}{color=#ffe2b6}renders{/color}{/font} for Visual Novel and active objects.",
|
||
"Added a new lesson in {font=fonts/roboto_medium.ttf}{color=#ffe2b6}Victoria{/color}{/font}'s class available in {font=fonts/roboto_medium.ttf}{color=#ffe2b6}Sandbox{/color}{/font} only.",
|
||
"Added eastern eggs in {font=fonts/roboto_medium.ttf}{color=#ffe2b6}Sandbox{/color}{/font} only, including a scene with {font=fonts/roboto_medium.ttf}{color=#ffe2b6}new girl{/color}{/font}.",
|
||
"{font=fonts/roboto_medium.ttf}{color=#ffe2b6}Added{/color}{/font} several decorative & active {font=fonts/roboto_medium.ttf}{color=#ffe2b6}objects{/color}{/font} across the Cordale.",
|
||
"Updated {font=fonts/roboto_medium.ttf}{color=#ffe2b6}BIO{/color}{/font} in Character Info.",
|
||
"Fixed several bugs.",
|
||
'v0.7.1a',
|
||
"{font=fonts/roboto_medium.ttf}{color=#ffe2b6}15{/color}{/font} new thrilling, action-packed {font=fonts/roboto_medium.ttf}{color=#ffe2b6}scenes{/color}{/font}.",
|
||
"{font=fonts/roboto_medium.ttf}{color=#ffe2b6}625{/color}{/font} new top-notch {font=fonts/roboto_medium.ttf}{color=#ffe2b6}renders{/color}{/font}.",
|
||
"{font=fonts/roboto_medium.ttf}{color=#ffe2b6}35{/color}{/font} new scorching hot {font=fonts/roboto_medium.ttf}{color=#ffe2b6}60{/color}{/font}fps HD animations.",
|
||
"Added {font=fonts/roboto_medium.ttf}{color=#ffe2b6}3{/color}{/font} new episodes to the {font=fonts/roboto_medium.ttf}{color=#ffe2b6}Gallery{/color}{/font}.",
|
||
"{font=fonts/roboto_medium.ttf}{color=#ffe2b6}20{/color}{/font} new {font=fonts/roboto_medium.ttf}{color=#ffe2b6}Lustagram{/color}{/font} photos.",
|
||
"Season 1 {font=fonts/roboto_medium.ttf}{color=#ffe2b6}Outro{/color}{/font} scene.",
|
||
"Fixed a few bugs.",
|
||
'v0.6.1f',
|
||
"Improved the quality of some {font=fonts/roboto_medium.ttf}{color=#ffe2b6}dialogues{/color}{/font} in old scenes.",
|
||
"Improved the quality of some animations.",
|
||
"Added new {font=fonts/roboto_medium.ttf}{color=#ffe2b6}sounds{/color}{/font} and {font=fonts/roboto_medium.ttf}{color=#ffe2b6}music{/color}{/font}.",
|
||
"Fixed several game logic errors.",
|
||
'v0.6.1d',
|
||
"Added new animated objects.",
|
||
"Added the possibility to go to the Bathroom to take a {font=fonts/roboto_medium.ttf}{color=#ffe2b6}shower{/color}{/font}.",
|
||
"Improved hints on some routes in {font=fonts/roboto_medium.ttf}{color=#ffe2b6}Character Info{/color}{/font}.",
|
||
"Fixed bugs in {font=fonts/roboto_medium.ttf}{color=#ffe2b6}Audrey{/color}{/font}'s route logic.",
|
||
"Fixed some character sprites in the {font=fonts/roboto_medium.ttf}{color=#ffe2b6}Living Room{/color}{/font}.",
|
||
"Increased the number of house points you get passively.",
|
||
"Returning {font=fonts/roboto_medium.ttf}{color=#ffe2b6}books{/color}{/font} is now rewarded with {font=fonts/roboto_medium.ttf}{color=#ffe2b6}2{/color}{/font} house points.",
|
||
"Minor interface improvements.",
|
||
'v0.6.1b',
|
||
"Added {font=fonts/roboto_medium.ttf}{color=#ffe2b6}Visual Novel{/color}{/font} version for {font=fonts/roboto_medium.ttf}{color=#ffe2b6}0.6.1{/color}{/font}.",
|
||
"Now you change {font=fonts/roboto_medium.ttf}{color=#ffe2b6}camera{/color}{/font} angles in sex animations.",
|
||
"Added useful {font=fonts/roboto_medium.ttf}{color=#ffe2b6}tips{/color}{/font} for the new day preloaders.",
|
||
"You can now brew potions by clicking on the {font=fonts/roboto_medium.ttf}{color=#ffe2b6}Cauldron{/color}{/font}.",
|
||
"Added animated {font=fonts/roboto_medium.ttf}{color=#ffe2b6}objects{/color}{/font} on the map.",
|
||
"Fixed a problem when you couldn't refuse sex in {font=fonts/roboto_medium.ttf}{color=#ffe2b6}Naomi{/color}{/font}'s route.",
|
||
"Fixed several bugs.",
|
||
'v0.6.1a',
|
||
"{font=fonts/roboto_medium.ttf}{color=#ffe2b6}13{/color}{/font} new exciting, action-packed {font=fonts/roboto_medium.ttf}{color=#ffe2b6}scenes{/color}{/font}.",
|
||
"{font=fonts/roboto_medium.ttf}{color=#ffe2b6}480{/color}{/font} new stunningly beautiful {font=fonts/roboto_medium.ttf}{color=#ffe2b6}renders{/color}{/font}.",
|
||
"{font=fonts/roboto_medium.ttf}{color=#ffe2b6}30{/color}{/font} new hot 60fps {font=fonts/roboto_medium.ttf}{color=#ffe2b6}HD animations{/color}{/font}.",
|
||
"Added 3 new episodes to the {font=fonts/roboto_medium.ttf}{color=#ffe2b6}Gallery{/color}{/font}.",
|
||
"New girl - Samantha's rival and Adderin's uprising star {font=fonts/roboto_medium.ttf}{color=#ffe2b6}Dakota{/color}{/font}.",
|
||
"Moved {font=fonts/roboto_medium.ttf}{color=#ffe2b6}Xmas{/color}{/font} story from the main menu.",
|
||
"Added {font=fonts/roboto_medium.ttf}{color=#ffe2b6}Xmas{/color}{/font} story activation to MC's room photo wall.",
|
||
"Added a {font=fonts/roboto_medium.ttf}{color=#ffe2b6}new recipe{/color}{/font} to Potions.",
|
||
"Fixed a few bugs.",
|
||
'v0.5.1f',
|
||
"Added notifications at the beginning of a {font=fonts/roboto_medium.ttf}{color=#ffe2b6}new game day{/color}{/font}.",
|
||
"Added {font=fonts/roboto_medium.ttf}{color=#ffe2b6}camera{/color}{/font} angle change (only in one scene with {font=fonts/roboto_medium.ttf}{color=#ffe2b6}Naomi{/color}{/font} so far).",
|
||
"Adapted code to allow {font=fonts/roboto_medium.ttf}{color=#ffe2b6}translations{/color}{/font} into other languages.",
|
||
"Fixed several structural errors.",
|
||
'v0.5.1d',
|
||
'Added {font=fonts/roboto_medium.ttf}{color=#ffe2b6}5{/color}{/font} new mini-scenes tutorials on how to move around the {font=fonts/roboto_medium.ttf}{color=#ffe2b6}Academy{/color}{/font}.',
|
||
'Added {font=fonts/roboto_medium.ttf}{color=#ffe2b6}Guide{/color}{/font} to help the player navigate through the main story.',
|
||
'Fixed some character sprites in {font=fonts/roboto_medium.ttf}{color=#ffe2b6}Dale{/color}{/font}.',
|
||
'Dozens of small bugfixes.',
|
||
'v0.5.1b',
|
||
"Scenes from the last release have been added to the {font=fonts/roboto_medium.ttf}{color=#ffe2b6}VN{/color}{/font} version.",
|
||
"Fixed {font=fonts/roboto_medium.ttf}{color=#ffe2b6}10{/color}{/font} unfortunate animations.",
|
||
"Removed the limit of 5 slots in {font=fonts/roboto_medium.ttf}{color=#ffe2b6}Character Info{/color}{/font} favorites.",
|
||
"Improved {font=fonts/roboto_medium.ttf}{color=#ffe2b6}MC name{/color}{/font} detection when viewing the Gallery.",
|
||
"Fixed errors in {font=fonts/roboto_medium.ttf}{color=#ffe2b6}Amelie{/color}{/font} and {font=fonts/roboto_medium.ttf}{color=#ffe2b6}Audrey{/color}{/font} route logic.",
|
||
"Increased the size of the scroll slider in {font=fonts/roboto_medium.ttf}{color=#ffe2b6}Lustagram{/color}{/font}.",
|
||
"Optimized function to calculate results when drawing glyphs.",
|
||
"Added a Background transparency setting for {font=fonts/roboto_medium.ttf}{color=#ffe2b6}Android{/color}{/font}.",
|
||
"Fixed typos in old scenes.",
|
||
"Other bugfixes.",
|
||
'v0.5.1a',
|
||
"More than {font=fonts/roboto_medium.ttf}{color=#ffe2b6}500{/color}{/font} new top-quality renders!",
|
||
"New dynamic and intriguing scenes!",
|
||
"{font=fonts/roboto_medium.ttf}{color=#ffe2b6}19{/color}{/font} new custom-made {font=fonts/roboto_medium.ttf}{color=#ffe2b6}60-fps{/color}{/font} animations! ",
|
||
"{font=fonts/roboto_medium.ttf}{color=#ffe2b6}Three{/color}{/font} new beautiful locations in {font=fonts/roboto_medium.ttf}{color=#ffe2b6}Dale{/color}{/font}.",
|
||
"New scenes in Dale with {font=fonts/roboto_medium.ttf}{color=#ffe2b6}Haley{/color}{/font}, {font=fonts/roboto_medium.ttf}{color=#ffe2b6}Lily{/color}{/font}, {font=fonts/roboto_medium.ttf}{color=#ffe2b6}Samantha{/color}{/font} and {font=fonts/roboto_medium.ttf}{color=#ffe2b6}Audrey{/color}{/font}.",
|
||
"New character in {font=fonts/roboto_medium.ttf}{color=#ffe2b6}Dale{/color}{/font}.",
|
||
"New awesome {font=fonts/roboto_medium.ttf}{color=#ffe2b6}map{/color}{/font}!",
|
||
"New {font=fonts/roboto_medium.ttf}{color=#ffe2b6}18+{/color}{/font} scenes added to {font=fonts/roboto_medium.ttf}{color=#ffe2b6}Gallery{/color}{/font}.",
|
||
"Improved {font=fonts/roboto_medium.ttf}{color=#ffe2b6}Calendar{/color}{/font} system.",
|
||
"Improved some old dialogues.",
|
||
"Fixed minor bugs all across the game.",
|
||
'v0.4.2',
|
||
'{font=fonts/roboto_medium.ttf}{color=#ffe2b6}Xmas special.{/color}{/font}',
|
||
'v0.4.1f',
|
||
'Bugfixes.',
|
||
'v0.4.1d',
|
||
'Added visual hints in the {font=fonts/roboto_medium.ttf}{color=#ffe2b6}Calendar{/color}{/font}.',
|
||
'Improved the interface of {font=fonts/roboto_medium.ttf}{color=#ffe2b6}Alchemy{/color}{/font}.',
|
||
'Added night visits and Lustagram in {font=fonts/roboto_medium.ttf}{color=#ffe2b6}Novel{/color}{/font} version.',
|
||
'Several improvements to the interface.',
|
||
'Optimized rollback feature.',
|
||
'{font=fonts/roboto_medium.ttf}{color=#ffe2b6}Bugfixes{/color}{/font}.',
|
||
'v0.4.1b',
|
||
'Added an alternate {font=fonts/roboto_medium.ttf}{color=#ffe2b6}visual novel{/color}{/font} style version.',
|
||
'Fixed the speed of magic glyphs being painted over.',
|
||
'Improved the quality of more than {font=fonts/roboto_medium.ttf}{color=#ffe2b6}20{/color}{/font} renders.',
|
||
'Fixed dozens of grammatical errors.',
|
||
'Now you can {font=fonts/roboto_medium.ttf}{color=#ffe2b6}delete{/color}{/font} unwanted saves.',
|
||
'All saves are now marked with stickers for {font=fonts/roboto_medium.ttf}{color=#ffe2b6}Novel{/color}{/font} or {font=fonts/roboto_medium.ttf}{color=#ffe2b6}Sandbox{/color}{/font}.',
|
||
'Improved Auto-forward time function.',
|
||
'Improved {font=fonts/roboto_medium.ttf}{color=#ffe2b6}History{/color}{/font} tab functionality.',
|
||
'Optimized code for Sound Design.',
|
||
'Changed color for character names to softer ones.',
|
||
'The number of books that can be found in one day increased to 4.',
|
||
'Improved scene structure in {font=fonts/roboto_medium.ttf}{color=#ffe2b6}Dale{/color}{/font}\'s nightclub.',
|
||
'v0.4.1a',
|
||
'New scenes for {font=fonts/roboto_medium.ttf}{color=#ffe2b6}Leona{/color}{/font}, {font=fonts/roboto_medium.ttf}{color=#ffe2b6}Haley{/color}{/font}, {font=fonts/roboto_medium.ttf}{color=#ffe2b6}Samantha{/color}{/font}, {font=fonts/roboto_medium.ttf}{color=#ffe2b6}Naomi{/color}{/font}, {font=fonts/roboto_medium.ttf}{color=#ffe2b6}Victoria{/color}{/font}, {font=fonts/roboto_medium.ttf}{color=#ffe2b6}Sabrina{/color}{/font} and {font=fonts/roboto_medium.ttf}{color=#ffe2b6}Audrey{/color}{/font}.',
|
||
'{font=fonts/roboto_medium.ttf}{color=#ffe2b6}520{/color}{/font} new beautiful renders.',
|
||
'{font=fonts/roboto_medium.ttf}{color=#ffe2b6}13{/color}{/font} new 60fps HD animations.',
|
||
'{font=fonts/roboto_medium.ttf}{color=#ffe2b6}15{/color}{/font} new {font=fonts/roboto_medium.ttf}{color=#ffe2b6}Lustagram{/color}{/font} posts.',
|
||
'v0.3.1d',
|
||
'Bugfixes.',
|
||
'v0.3.1c',
|
||
'Reworked and improved {font=fonts/roboto_medium.ttf}{color=#ffe2b6}Lustagram{/color}{/font} mechanics.',
|
||
'Added {font=fonts/roboto_medium.ttf}{color=#ffe2b6}31 new{/color}{/font} photos for Lustagram!',
|
||
'Improved Character Info sorting logic.',
|
||
'Added an option to {font=fonts/roboto_medium.ttf}{color=#ffe2b6}change your Name{/color}{/font} during the game.',
|
||
'Fixed graphic issues during prologue exams.',
|
||
'Fixed minor bugs all across the game.',
|
||
'v0.3.1b',
|
||
'Combined inventory and profile.',
|
||
'Reworked notifications.',
|
||
'Improved the tutorial.',
|
||
'Added {font=fonts/roboto_medium.ttf}{color=#ffe2b6}$50{/color}{/font} allowance bonus for the house that wins the weekly competition.',
|
||
'Repaired menu and interface bugs.',
|
||
'Fixed bugs in the {font=fonts/roboto_medium.ttf}{color=#ffe2b6}calendar{/color}{/font}.',
|
||
'Fixed minor bugs all across the game.',
|
||
'Improved some old dialogues.',
|
||
'v0.3.1a',
|
||
'More than {font=fonts/roboto_medium.ttf}{color=#ffe2b6}550{/color}{/font} new to-quality renders!',
|
||
'Over {font=fonts/roboto_medium.ttf}{color=#ffe2b6}27{/color}{/font} new 60-fps animations!',
|
||
'Reworked avatars for Character Info and Calendar.',
|
||
'New potion crafting system.',
|
||
'House points distribution system reworked.',
|
||
'Added {font=fonts/roboto_medium.ttf}{color=#ffe2b6}LGBTQ+{/color}{/font} switch to Settings (can be enabled/disabled) at any point.',
|
||
'Added an option to choose {font=fonts/roboto_medium.ttf}{color=#ffe2b6}LGBTQ+{/color}{/font} settings individually for characters.',
|
||
'Fixed a few dozen minor bugs.',
|
||
'v0.2.2',
|
||
'Fourth release! Time to get to know the world better!',
|
||
'Introduced weekend activities in {font=fonts/roboto_medium.ttf}{color=#ffe2b6}Dale{/color}{/font}. Win a weekly house competition to get there!',
|
||
'Over {font=fonts/roboto_medium.ttf}{color=#ffe2b6}1000{/color}{/font} renders.',
|
||
'More than {font=fonts/roboto_medium.ttf}{color=#ffe2b6}55{/color}{/font} animations in 60fps.',
|
||
'New in-game locations: {font=fonts/roboto_medium.ttf}{color=#ffe2b6}Dale main street, Shop, Spa, Hotel, Night club.{/color}{/font}.',
|
||
'{font=fonts/roboto_medium.ttf}{color=#ffe2b6}12{/color}{/font} new characters.',
|
||
'Improved {font=fonts/roboto_medium.ttf}{color=#ffe2b6}UI\\UX.{/color}{/font}.',
|
||
'Improved {font=fonts/roboto_medium.ttf}{color=#ffe2b6}Navigation{/color}{/font} and {font=fonts/roboto_medium.ttf}{color=#ffe2b6}Quest Log.{/color}{/font}.',
|
||
'Reworked all mini-games.',
|
||
'Added {font=fonts/roboto_medium.ttf}{color=#ffe2b6}1{/color}{/font} new mini-game.',
|
||
'v0.2.1f',
|
||
'Minor patch with a bunch of fixes and improvements to the game.',
|
||
'Fixed bugs in {font=fonts/roboto_medium.ttf}{color=#ffe2b6}Lily{/color}{/font}’s route.',
|
||
'Fixed bugs in {font=fonts/roboto_medium.ttf}{color=#ffe2b6}Naomi{/color}{/font}’s route.',
|
||
'Fixed bug with quest log.',
|
||
'Fixed some problems with duels.',
|
||
'Fixed other small errors and bugs.',
|
||
'v0.2.1g',
|
||
'Minor update with a bunch of fixes and improvements to the game.',
|
||
'Added {font=fonts/roboto_medium.ttf}{color=#ffe2b6}Android{/color}{/font} version.',
|
||
'Fixed prologue mini game crashes.',
|
||
"Fixed problem with {font=fonts/roboto_medium.ttf}{color=#ffe2b6}Samantha{/color}{/font}'s room in the prologue.",
|
||
'Fixed "Memory run" problem.',
|
||
'Fixed some typos and logic problems.',
|
||
'Fixed other small errors and bugs.',
|
||
'v0.2.1',
|
||
'Third release! Welcome to the Academy. Yay!',
|
||
'This release features the beginning of the main game.',
|
||
'Introduced open world (sandox mechanics).',
|
||
'Over {font=fonts/roboto_medium.ttf}{color=#ffe2b6}800{/color}{/font} renders.',
|
||
'More than {font=fonts/roboto_medium.ttf}{color=#ffe2b6}30{/color}{/font} animations in 60fps.',
|
||
'{font=fonts/roboto_medium.ttf}{color=#ffe2b6}5{/color}{/font} new characters.',
|
||
'Sandbox mechanic.',
|
||
'Added Interface with Quest log and Fast-travel system.',
|
||
'Added Sound design for 0.2.1 + some minor fixes for 0.1.2.',
|
||
'Added 4 new mini-games.',
|
||
'New in-game locations: {font=fonts/roboto_medium.ttf}{color=#ffe2b6}Library, Victoria’s class, Sabrina’s class, Cafe.{/color}{/font}',
|
||
'v0.1.2 Hot-fix',
|
||
'Minor update with a bunch of fixes and improvements to the game.',
|
||
'Added {font=fonts/roboto_medium.ttf}{color=#ffe2b6}Gallery{/color}{/font} (now you can replay all erotic scenes).',
|
||
'Added a few renders and text, to make some scenes more logical.',
|
||
'Fixed some bugs with sounds.',
|
||
'Fixed bugs with minigame crashes.',
|
||
'Fixed grammar errors.',
|
||
'Fixed bug with "Return" button in the main menu.',
|
||
"Fixed android version text space. Now it's smaller.",
|
||
'v0.1.2E',
|
||
'Minor patch needed to fix one critical bug that caused game crashes.',
|
||
'Fixed a critical bug in a mini-game.',
|
||
'v0.1.2d',
|
||
'Minor patch with a bunch of fixes and improvements to the game.',
|
||
'Fixed critical bug that caused game crashes.',
|
||
'Fixed small bugs and typos.',
|
||
'Fixed menu glitch.',
|
||
'Retouched additional renders.',
|
||
'v0.1.2',
|
||
'Second Release. The prologue is complete! Yay!',
|
||
'This release includes the second half of the prologue and features:',
|
||
'Over {font=fonts/roboto_medium.ttf}{color=#ffe2b6}200{/color}{/font} renders.',
|
||
'More than {font=fonts/roboto_medium.ttf}{color=#ffe2b6}25{/color}{/font} 60 fps animations.',
|
||
'{font=fonts/roboto_medium.ttf}{color=#ffe2b6}6{/color}{/font} new characters: {font=fonts/roboto_medium.ttf}{color=#ffe2b6}3{/color}{/font} New girls + {font=fonts/roboto_medium.ttf}{color=#ffe2b6}3{/color}{/font} side characters.',
|
||
'Updated interface.',
|
||
'New Sound-Design for {font=fonts/roboto_medium.ttf}{color=#ffe2b6}0.1.1{/color}{/font} and {font=fonts/roboto_medium.ttf}{color=#ffe2b6}0.1.2{/color}{/font}.',
|
||
|
||
'New in-game locations: {font=fonts/roboto_medium.ttf}{color=#ffe2b6}Main Hall, Entrance Hall, Inner Garden, Campus, Mystic Forest{/color}{/font}.',
|
||
|
||
'v0.1.1f ',
|
||
|
||
'Minor update with a bunch of fixes and improvements to the game.',
|
||
'Fixed bugs and typos.',
|
||
'Added the “Skip” option to the game.',
|
||
'Added emojis and expanded photos to Lustagram.',
|
||
'Added default name for MC.',
|
||
'v0.1.1',
|
||
'First Release. Our history starts here! Yay!',
|
||
'This release included the first half of the prologue and features:',
|
||
'Over {font=fonts/roboto_medium.ttf}{color=#ffe2b6}140{/color}{/font} renders.',
|
||
'{font=fonts/roboto_medium.ttf}{color=#ffe2b6}10{/color}{/font} 60 fps animations.',
|
||
'7 characters.'
|
||
]:
|
||
|
||
if 'v0.' in i:
|
||
text i size 24 font 'fonts/h_font_2.ttf' xalign .5
|
||
|
||
else:
|
||
text i size 20 font 'fonts/roboto_regular.ttf' color '#C19273' xalign 0
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
style about_label is gui_label
|
||
style about_label_text is gui_label_text
|
||
style about_text is gui_text
|
||
|
||
style about_label_text:
|
||
size gui.label_text_size
|
||
|
||
|
||
screen save():
|
||
tag menu
|
||
|
||
timer 0.1 action SetVariable('button_menu_now_2', 'Save')
|
||
use file_slots(_("Save"))
|
||
|
||
|
||
screen load():
|
||
tag menu
|
||
|
||
use file_slots(_("Load"))
|
||
|
||
|
||
|
||
screen gallery():
|
||
tag menu
|
||
|
||
use file_slots(_("Gallery"))
|
||
|
||
screen transfer():
|
||
tag menu
|
||
|
||
use file_slots(_("Transfer"))
|
||
|
||
init -100 python:
|
||
gallery_picks = [
|
||
'images/ero/x0.png',
|
||
'images/ero/x1.png',
|
||
'images/ero/1.png',
|
||
'images/ero/2.png',
|
||
'images/ero/3.png',
|
||
'images/ero/4.png',
|
||
'images/ero/5.png',
|
||
'images/ero/6.png',
|
||
'images/ero/7.png',
|
||
'images/ero/8.png',
|
||
'images/ero/9.png',
|
||
'images/ero/10.png',
|
||
'images/ero/11.png',
|
||
'images/ero/12.png',
|
||
'images/ero/13.png',
|
||
'images/ero/14.png',
|
||
'images/ero/15.png',
|
||
'images/ero/16.png',
|
||
'images/ero/17.png',
|
||
'images/ero/18.png',
|
||
'images/ero/19a.png',
|
||
'images/ero/20.png',
|
||
'images/ero/21.png',
|
||
'images/ero/22.png',
|
||
'images/ero/23.png',
|
||
'images/ero/24.png',
|
||
'images/ero/25.png',
|
||
'images/ero/26.png',
|
||
'images/ero/27.png',
|
||
'images/ero/28.png',
|
||
'images/ero/29.png',
|
||
|
||
|
||
|
||
'images/ero/19.png',
|
||
]
|
||
|
||
gallery_data = {
|
||
'images/ero/x0.png' : {'name':'Audrey','label':"Xmas_4_label.L_56","q_access":""},
|
||
'images/ero/x1.png' : {'name':'Selene','label':"Xmas_6_label","q_access":""},
|
||
'images/ero/1.png' : {'name':'Ashley','label':"ashlie_room_label_2","q_access":"Q_Arthur > 0"},
|
||
'images/ero/2.png' : {'name':'Olivia & Don','label':"i_1_051_test.from_gallery","q_access":"Q_Arthur > 0"},
|
||
'images/ero/3.png' : {'name':'Haley','label':"train_menu_after_drunk_girls.from_gallery","q_access":"Q_Arthur > 0"},
|
||
'images/ero/4.png' : {'name':'Leona & Katrina','label':"sheet_28.from_gallery","q_access":"Q_Arthur > 0"},
|
||
'images/ero/5.png' : {'name':'Leona','label':"Leona_1_label","q_access":"Q_Leona > 0"},
|
||
'images/ero/6.png' : {'name':'Lily','label':"lily_events_4_label.from_gallery","q_access":"Q_Lily > 4"},
|
||
'images/ero/7.png' : {'name':'Lily','label':"Lily_6_label.from_gallery","q_access":"Q_Lily > 5"},
|
||
'images/ero/8.png' : {'name':'Naomi','label':"Naomi_8_label","q_access":"Q_Naomi > 7"},
|
||
'images/ero/9.png' : {'name':'Faith','label':"Jill_2_label_8","q_access":"Q_Jill > 1"},
|
||
'images/ero/10.png' : {'name':'Adele','label':"romul_2_label","q_access":"Q_Romul > 1"},
|
||
'images/ero/11.png' : {'name':'Lucy','label':"vip_lucy_1_label_1","q_access":""},
|
||
'images/ero/12.png' : {'name':'Sadira','label':"vip_sadira_1_label_1","q_access":""},
|
||
'images/ero/13.png' : {'name':'Samantha','label':"Samantha_8_label","q_access":"Q_Samantha > 7"},
|
||
'images/ero/14.png' : {'name':'Audrey','label':"Audrey_7_label","q_access":"Q_Audrey > 6"},
|
||
'images/ero/15.png' : {'name':'Audrey','label':"Audrey_7_label.from_gallery","q_access":"Q_Audrey > 6"},
|
||
'images/ero/16.png' : {'name':'Samantha','label':"Samantha_10_label.from_gallery","q_access":"Q_Samantha >= 10"},
|
||
'images/ero/17.png' : {'name':'Haley','label':"Haley_15_label.from_gallery","q_access":"Q_Haley >= 15"},
|
||
'images/ero/18.png' : {'name':'Naomi','label':"Naomi_10_label.from_gallery","q_access":"Q_Naomi >= 10"},
|
||
'images/ero/19a.png' : {'name':'Naomi','label':"Leona_5_label.from_gallery","q_access":""},
|
||
'images/ero/20.png' : {'name':'Lily','label':"Lily_8_label.L_122","q_access":""},
|
||
'images/ero/21.png' : {'name':'Jill','label':"Jill_4_label.from_gallery","q_access":""},
|
||
'images/ero/22.png' : {'name':'Lucy','label':"vip_lucy_1_label_2","q_access":""},
|
||
'images/ero/23.png' : {'name':'Sadira','label':"vip_sadira_1_label_2","q_access":""},
|
||
'images/ero/24.png' : {'name':'Adele','label':"Adele_5_label.from_gallery","q_access":"Q_Adele >= 5"},
|
||
'images/ero/25.png' : {'name':'Haley','label':"Haley_19_label.from_gallery","q_access":"Q_Haley >= 19"},
|
||
'images/ero/26.png' : {'name':'Audrey','label':"Audrey_12_label.from_gallery","q_access":"Q_Audrey >= 12"},
|
||
'images/ero/27.png' : {'name':'Haley','label':"Haley_20_label.from_gallery","q_access":"Q_Haley >= 22"},
|
||
'images/ero/28.png' : {'name':'Adele','label':"Adele_6_label.from_gallery","q_access":"Q_Adele >= 6"},
|
||
'images/ero/29.png' : {'name':'Samantha','label':"Outro_2_label.L_431","q_access":""},
|
||
|
||
|
||
'images/ero/19.png' : {'name':'Victoria','label':"","q_access":""},
|
||
}
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
page_gallery = 1
|
||
|
||
def ShowReplay(label):
|
||
|
||
rName = getDataFromLastSave('Name')
|
||
rLGBTQ = getDataFromLastSave('LGBTQ')
|
||
|
||
Replay( label, scope = {"Name" : rName, "LGBTQ" : rLGBTQ}, locked = False )()
|
||
|
||
screen file_slots(title):
|
||
|
||
default page_name_value = FilePageNameInputValue(pattern=_("Page {}"), auto=_("Automatic saves"), quick=_("Quick saves"))
|
||
|
||
use game_menu(title)
|
||
add 'file_slots_bg' xalign .5 yalign .5
|
||
|
||
fixed:
|
||
|
||
order_reverse True
|
||
|
||
if title == "Transfer":
|
||
|
||
text _("Choose a save file with progress that you want to transfer to the next season") style "page_label_text" color '#FFEEDE' size 24 font 'fonts/h_font.ttf' xalign .5 yalign .16
|
||
|
||
button:
|
||
style "page_label"
|
||
|
||
key_events True
|
||
xalign 0.5
|
||
yalign .24
|
||
action page_name_value.Toggle()
|
||
|
||
input:
|
||
style "page_label_text"
|
||
color '#FFEEDE'
|
||
size 30
|
||
font 'fonts/h_font.ttf'
|
||
value page_name_value
|
||
|
||
grid 5 3:
|
||
style_prefix "slot"
|
||
xalign 0.5
|
||
yalign 0.5
|
||
spacing 15
|
||
for i in range(5 * 3):
|
||
$ slot = i + 1
|
||
$ ttt = FileTime(slot, format=_("{#file_time}%A, %B %d %Y, %H:%M"), empty=_("empty slot"))
|
||
$ _data = FileJson(slot)
|
||
if _data is not None and _data.get('_game') is not None and not _data['_game']:
|
||
$ _lsave = "save_nv"
|
||
$ selecting = 'Visual novel'
|
||
else:
|
||
$ _lsave = "save_sb"
|
||
$ selecting = 'Sandbox'
|
||
|
||
$ confirm_text = "Congratulations!\nYou have chosen to transfer the progress from save file: {0}\nUse it in the next season when selecting \"{1}\"".format(persistent._file_page + "-" + str(slot) + ".save ("+ttt+")", selecting)
|
||
|
||
viewport:
|
||
xmaximum 220
|
||
ymaximum 146
|
||
imagebutton:
|
||
idle 'main_menu/slot_idle_background.png'
|
||
hover 'main_menu/slot_idle_background.png'
|
||
action NullAction()
|
||
viewport:
|
||
add Frame(FileScreenshot(slot))
|
||
ymaximum 124
|
||
|
||
if ttt != "empty slot":
|
||
|
||
imagebutton:
|
||
idle '#0f00'
|
||
hover '#0f02'
|
||
action Show('confirm', message= confirm_text, yes_action = [Function(TransferDataToNewS, name_slot = persistent._file_page + "-" + str(slot), name_save = _lsave, time = FileTime(slot, format=_("%m/%d/%Y %H:%M"))),Hide('confirm'),ShowMenu("load")], no_action = [Hide('confirm')], yes_text = _('Agree'), no_text = _('Cancel'))
|
||
|
||
add 'load_save_icon' yalign 1.0
|
||
add Text(ttt, color = '#160F32', size = 10, font = 'fonts/h_font.ttf') alpha .7 xalign .5 yalign .97
|
||
viewport:
|
||
xpos 6
|
||
ypos 0
|
||
xmaximum 40
|
||
ymaximum 125
|
||
add _lsave
|
||
|
||
viewport:
|
||
xalign .99
|
||
yalign .82
|
||
xsize 50
|
||
ysize 20
|
||
add '#000a'
|
||
add Text(_data['_version'], color = '#FFF', size = 10, font = 'fonts/h_font.ttf') xalign .5 yalign .5
|
||
|
||
hbox:
|
||
style_prefix "page"
|
||
xalign 0.5
|
||
yalign .76
|
||
spacing gui.page_spacing
|
||
imagebutton:
|
||
idle Transform('main_menu/arrow_left_right.png')
|
||
hover Transform(im.MatrixColor('main_menu/arrow_left_right.png', im.matrix.brightness(.3)))
|
||
action FilePagePrevious()
|
||
ypos 15
|
||
if config.has_autosave:
|
||
textbutton _("{#auto_page}A") action FilePage("auto") text_idle_color '#D6B49D' text_hover_color '#FFEEDE' text_selected_color '#FFEEDE' ypos 12
|
||
|
||
if config.has_quicksave:
|
||
textbutton _("{#quick_page}Q") action FilePage("quick") text_idle_color '#D6B49D' text_hover_color '#FFEEDE' text_selected_color '#FFEEDE' ypos 12
|
||
|
||
|
||
for page in range(1, 10):
|
||
textbutton "[page]" action FilePage(page) text_idle_color '#D6B49D' text_hover_color '#FFEEDE' text_selected_color '#FFEEDE' ypos 12
|
||
|
||
imagebutton:
|
||
idle Transform('main_menu/arrow_left_right.png', xzoom = -1)
|
||
hover Transform(im.MatrixColor('main_menu/arrow_left_right.png', im.matrix.brightness(.3)), xzoom = -1)
|
||
action FilePageNext()
|
||
ypos 15
|
||
|
||
elif title == "Gallery":
|
||
|
||
$ max_page_gallery = 1 + (len(gallery_data) // 15)
|
||
|
||
$ all_picks = []
|
||
for d in gallery_picks:
|
||
if d in mp.gallery:
|
||
$ all_picks.append({"img":d,"show":False})
|
||
elif d not in ['images/ero/x0.png','images/ero/x1.png','images/ero/12.png','images/ero/13.png','images/ero/22.png','images/ero/23.png']:
|
||
$ all_picks.append({"img":d,"show":True})
|
||
|
||
text 'Page ' + str(page_gallery) style "page_label_text" color '#FFEEDE' size 30 font 'fonts/h_font.ttf' xalign 0.5 yalign .24
|
||
|
||
grid 5 3:
|
||
style_prefix "slot"
|
||
xalign 0.5
|
||
yalign 0.5
|
||
spacing 15
|
||
for i in range(15 * (page_gallery - 1), 15 * page_gallery):
|
||
viewport:
|
||
xmaximum 225
|
||
ymaximum 146
|
||
imagebutton:
|
||
idle 'main_menu/slot_idle_background_gallery.png'
|
||
hover im.MatrixColor('main_menu/slot_idle_background_gallery.png', im.matrix.brightness(.3))
|
||
action NullAction()
|
||
viewport:
|
||
ymaximum 146
|
||
xmaximum 225
|
||
add '#0000'
|
||
if i < len(all_picks):
|
||
if all_picks[i]['img'] in mp.gallery:
|
||
imagebutton:
|
||
idle Transform(im.MatrixColor(all_picks[i]['img'], im.matrix.desaturate()), xsize=225, ysize=146)
|
||
hover Transform(all_picks[i]['img'], xsize=225, ysize=146)
|
||
if gallery_data[all_picks[i]['img']]['label']:
|
||
action Function(ShowReplay, label = gallery_data[all_picks[i]['img']]['label'])
|
||
else:
|
||
action NullAction()
|
||
else:
|
||
add Transform(im.Blur(im.MatrixColor(im.MatrixColor(all_picks[i]['img'], im.matrix.desaturate()), im.matrix.brightness(-.1)),2.5), xsize=225, ysize=146)
|
||
if '/x' in all_picks[i]['img']:
|
||
add Transform('xmas_special', zoom = .5) xalign .99 yalign .99
|
||
hbox:
|
||
style_prefix "page"
|
||
xalign 0.5
|
||
yalign .76
|
||
spacing (gui.page_spacing * 10) // max_page_gallery
|
||
imagebutton:
|
||
idle Transform('main_menu/arrow_left_right.png')
|
||
hover Transform(im.MatrixColor('main_menu/arrow_left_right.png', im.matrix.brightness(.3)))
|
||
action If(page_gallery > 1, true = SetVariable('page_gallery',page_gallery-1))
|
||
ypos 15
|
||
|
||
for page_g in range(1, max_page_gallery + 1):
|
||
textbutton "[page_g]" action SetVariable('page_gallery',page_g) text_idle_color '#D6B49D' text_hover_color '#FFEEDE' text_selected_color '#FFEEDE' ypos 12
|
||
|
||
imagebutton:
|
||
idle Transform('main_menu/arrow_left_right.png', xzoom = -1)
|
||
hover Transform(im.MatrixColor('main_menu/arrow_left_right.png', im.matrix.brightness(.3)), xzoom = -1)
|
||
action If(page_gallery < max_page_gallery, true = SetVariable('page_gallery',page_gallery+1))
|
||
ypos 15
|
||
else:
|
||
|
||
if renpy.current_screen().screen_name[0] == "load" and len(renpy.list_slots()) > 0:
|
||
|
||
imagebutton:
|
||
yalign .1
|
||
xalign .786
|
||
idle 'main_interface/transfer_banner.png'
|
||
hover Transform(im.MatrixColor('main_interface/transfer_banner.png', im.matrix.brightness(.2)))
|
||
action ShowMenu("transfer")
|
||
|
||
button:
|
||
style "page_label"
|
||
|
||
key_events True
|
||
xalign 0.5
|
||
yalign .24
|
||
action page_name_value.Toggle()
|
||
|
||
input:
|
||
style "page_label_text"
|
||
color '#FFEEDE'
|
||
size 30
|
||
font 'fonts/h_font.ttf'
|
||
value page_name_value
|
||
|
||
grid 5 3:
|
||
style_prefix "slot"
|
||
xalign 0.5
|
||
yalign 0.5
|
||
spacing 15
|
||
for i in range(5 * 3):
|
||
$ slot = i + 1
|
||
|
||
$ ttt = FileTime(slot, format=_("{#file_time}%A, %B %d %Y, %H:%M"), empty=_("empty slot"))
|
||
|
||
$ err_save = False
|
||
$ err_text = "Unfortunately, this file is outdated and can CAUSE CRITICAL ERRORS IN THE GAME. Delete this save?"
|
||
$ _data = FileJson(slot)
|
||
if _data is not None and _data.get('_game') is not None and not _data['_game']:
|
||
$ _lsave = "save_nv"
|
||
if _data is not None and _data.get('_version') and _data['_version'] in ['0.4.1a','0.4.1b','0.4.1c'] and renpy.current_screen().screen_name[0] == "load":
|
||
$ err_save = True
|
||
else:
|
||
$ _lsave = "save_sb"
|
||
|
||
if _data is not None and _data.get('_xmas') is not None and _data['_xmas']:
|
||
$ _lsave = "save_xmas"
|
||
|
||
viewport:
|
||
xmaximum 220
|
||
ymaximum 146
|
||
imagebutton:
|
||
idle 'main_menu/slot_idle_background.png'
|
||
if persistent._file_page != "quick" or renpy.current_screen().screen_name[0] == "load":
|
||
hover im.MatrixColor('main_menu/slot_idle_background.png', im.matrix.brightness(.3))
|
||
action If( err_save , true = Show('confirm', message= err_text, yes_action = [FileDelete(slot, confirm = False), Hide('confirm')], no_action = [Hide('confirm')], yes_text = _('Yes'), no_text = _('No')), false = FileAction(slot))
|
||
else:
|
||
hover 'main_menu/slot_idle_background.png'
|
||
action NullAction()
|
||
viewport:
|
||
add Frame(FileScreenshot(slot))
|
||
ymaximum 124
|
||
|
||
if ttt != "empty slot":
|
||
add 'load_save_icon' yalign 1.0
|
||
add Text(ttt, color = '#160F32', size = 10, font = 'fonts/h_font.ttf') alpha .7 xalign .5 yalign .97
|
||
viewport:
|
||
xpos 6
|
||
ypos 0
|
||
xmaximum 40
|
||
ymaximum 125
|
||
add _lsave
|
||
|
||
if persistent._file_page != "auto":
|
||
imagebutton:
|
||
focus_mask None
|
||
idle Transform('trash_mask', alpha = 0)
|
||
hover Transform('trash_mask', alpha = .9)
|
||
if persistent._file_page != "quick" or renpy.current_screen().screen_name[0] == "load":
|
||
action If( err_save , true = Show('confirm', message= err_text, yes_action = [FileDelete(slot, confirm = False), Hide('confirm')], no_action = [Hide('confirm')], yes_text = _('Yes'), no_text = _('No')), false = FileAction(slot))
|
||
else:
|
||
action NullAction()
|
||
|
||
imagebutton:
|
||
xsize 32
|
||
ysize 32
|
||
xpos 178
|
||
ypos 8
|
||
if not renpy.android:
|
||
idle Transform('trash', alpha = 0, zoom = .5)
|
||
else:
|
||
idle Transform('trash', alpha = 0.8, zoom = .5)
|
||
hover Transform('trash', alpha = 1.0, zoom = .5)
|
||
action FileDelete(slot)
|
||
|
||
if config.developer and _data is not None:
|
||
viewport:
|
||
xalign .99
|
||
yalign .82
|
||
xsize 50
|
||
ysize 20
|
||
add '#000a'
|
||
add Text(_data['_version'], color = '#FFF', size = 10, font = 'fonts/h_font.ttf') xalign .5 yalign .5
|
||
|
||
hbox:
|
||
style_prefix "page"
|
||
xalign 0.5
|
||
yalign .76
|
||
spacing gui.page_spacing
|
||
imagebutton:
|
||
idle Transform('main_menu/arrow_left_right.png')
|
||
hover Transform(im.MatrixColor('main_menu/arrow_left_right.png', im.matrix.brightness(.3)))
|
||
action FilePagePrevious()
|
||
ypos 15
|
||
if config.has_autosave:
|
||
textbutton _("{#auto_page}A") action FilePage("auto") text_idle_color '#D6B49D' text_hover_color '#FFEEDE' text_selected_color '#FFEEDE' ypos 12
|
||
|
||
if config.has_quicksave:
|
||
textbutton _("{#quick_page}Q") action FilePage("quick") text_idle_color '#D6B49D' text_hover_color '#FFEEDE' text_selected_color '#FFEEDE' ypos 12
|
||
|
||
|
||
for page in range(1, 10):
|
||
textbutton "[page]" action FilePage(page) text_idle_color '#D6B49D' text_hover_color '#FFEEDE' text_selected_color '#FFEEDE' ypos 12
|
||
|
||
imagebutton:
|
||
idle Transform('main_menu/arrow_left_right.png', xzoom = -1)
|
||
hover Transform(im.MatrixColor('main_menu/arrow_left_right.png', im.matrix.brightness(.3)), xzoom = -1)
|
||
action FilePageNext()
|
||
ypos 15
|
||
|
||
|
||
style page_label is gui_label
|
||
style page_label_text is gui_label_text
|
||
style page_button is gui_button
|
||
style page_button_text is gui_button_text
|
||
|
||
style slot_button is gui_button
|
||
style slot_button_text is gui_button_text
|
||
style slot_time_text is slot_button_text
|
||
style slot_name_text is slot_button_text
|
||
|
||
style page_label:
|
||
xpadding 75
|
||
ypadding 5
|
||
|
||
style page_label_text:
|
||
text_align 0.5
|
||
layout "subtitle"
|
||
hover_color gui.hover_color
|
||
|
||
style page_button:
|
||
properties gui.button_properties("page_button")
|
||
|
||
style page_button_text:
|
||
properties gui.button_text_properties("page_button")
|
||
|
||
style slot_button:
|
||
properties gui.button_properties("slot_button")
|
||
|
||
style slot_button_text:
|
||
properties gui.button_text_properties("slot_button")
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
init python:
|
||
if persistent.dialogue_color is None:
|
||
persistent.dialogue_color = '#FFF'
|
||
|
||
|
||
class ColorButton():
|
||
def __init__(self):
|
||
self.color_1 = '#FFC42C'
|
||
self.color_2 = '#ffdf8c'
|
||
self.color_now = self.color_1
|
||
def change_color(self):
|
||
if self.color_now == self.color_1:
|
||
self.color_now = self.color_2
|
||
else:
|
||
self.color_now = self.color_1
|
||
|
||
|
||
init 499 image main_menu_idle_hover_button:
|
||
on idle:
|
||
'images/main_menu/buttons/idle.png' with Dissolve(.2)
|
||
on hover:
|
||
'images/main_menu/buttons/hover.png' with Dissolve(.2)
|
||
on selected_idle:
|
||
'images/main_menu/buttons/hover.png'
|
||
on selected_hover:
|
||
'images/main_menu/buttons/hover.png'
|
||
|
||
init python:
|
||
if persistent.window is None:
|
||
persistent.window = True
|
||
if persistent.rollback is None:
|
||
persistent.rollback = 'left'
|
||
|
||
if persistent.skip is None:
|
||
persistent.skip = []
|
||
if persistent.text_color is None:
|
||
persistent.text_color = '#FFF'
|
||
|
||
screen preferences():
|
||
tag menu
|
||
|
||
use game_menu(_("Settings"), scroll="viewport")
|
||
viewport:
|
||
xmaximum 1360
|
||
ymaximum 613
|
||
if renpy.android and renpy.variant("small"):
|
||
add 'settings_blocks_android' xalign .5 yalign .5
|
||
else:
|
||
add 'settings_blocks' xalign .5 yalign .5
|
||
xalign .5 yalign .5
|
||
viewport:
|
||
xmaximum 668
|
||
ymaximum 613
|
||
add '#0000'
|
||
vbox:
|
||
xpos 42
|
||
ypos 15
|
||
spacing 40
|
||
vbox:
|
||
text _('DISPLAY') color '#FFEEDE' size 20 font 'fonts/h_font.ttf'
|
||
spacing 4
|
||
hbox:
|
||
spacing 8
|
||
viewport:
|
||
xmaximum 290
|
||
ymaximum 55
|
||
imagebutton:
|
||
idle 'settings_button_long_0'
|
||
hover 'settings_button_long_1'
|
||
|
||
|
||
action SetField(persistent, 'fullscreen', True), SetField(persistent, 'window', False), Preference("display", "fullscreen")
|
||
add Text(_('FULLSCREEN'), size = 16, color = '#FFEEDE', font = 'fonts/h_font.ttf' ):
|
||
if not persistent.fullscreen:
|
||
alpha .3
|
||
xalign .5 yalign .5
|
||
|
||
viewport:
|
||
xmaximum 290
|
||
ymaximum 55
|
||
imagebutton:
|
||
idle 'settings_button_long_0'
|
||
hover 'settings_button_long_1'
|
||
action SetField(persistent, 'fullscreen', False), SetField(persistent, 'window', True), Preference("display", "window")
|
||
add Text(_('WINDOWED'), size = 16, color = '#FFEEDE', font = 'fonts/h_font.ttf' ):
|
||
if not persistent.window:
|
||
alpha .3
|
||
xalign .5 yalign .5
|
||
vbox:
|
||
text _('ROLLBACK SLIDE') color '#FFEEDE' size 20 font 'fonts/h_font.ttf'
|
||
spacing 4
|
||
hbox:
|
||
spacing 8
|
||
viewport:
|
||
xmaximum 195
|
||
ymaximum 52
|
||
imagebutton:
|
||
idle 'main_menu/settings_button_short_0.png'
|
||
hover 'main_menu/settings_button_short_1.png'
|
||
action SetField(persistent, 'rollback', 'left'), Preference("rollback side", "left")
|
||
add Text(_('LEFT'), size = 16, color = '#FFEEDE', font = 'fonts/h_font.ttf' ):
|
||
if persistent.rollback != 'left':
|
||
alpha .3
|
||
xalign .5 yalign .5
|
||
|
||
viewport:
|
||
xmaximum 195
|
||
ymaximum 52
|
||
imagebutton:
|
||
idle 'main_menu/settings_button_short_0.png'
|
||
hover 'main_menu/settings_button_short_1.png'
|
||
action SetField(persistent, 'rollback', 'disable'), Preference("rollback side", "disable")
|
||
add Text(_('DISABLE'), size = 16, color = '#FFEEDE', font = 'fonts/h_font.ttf' ):
|
||
if persistent.rollback != 'disable':
|
||
alpha .3
|
||
xalign .5 yalign .5
|
||
|
||
viewport:
|
||
xmaximum 195
|
||
ymaximum 52
|
||
imagebutton:
|
||
idle 'main_menu/settings_button_short_0.png'
|
||
hover 'main_menu/settings_button_short_1.png'
|
||
action SetField(persistent, 'rollback', 'right'), Preference("rollback side", "right")
|
||
add Text(_('RIGHT'), size = 16, color = '#FFEEDE', font = 'fonts/h_font.ttf' ):
|
||
if persistent.rollback != 'right':
|
||
alpha .3
|
||
xalign .5 yalign .5
|
||
|
||
|
||
vbox:
|
||
text _('SKIP') color '#FFEEDE' size 20 font 'fonts/h_font.ttf'
|
||
spacing 4
|
||
hbox:
|
||
spacing 8
|
||
viewport:
|
||
xmaximum 195
|
||
ymaximum 52
|
||
imagebutton:
|
||
idle 'main_menu/settings_button_short_0.png'
|
||
hover 'main_menu/settings_button_short_1.png'
|
||
if 'skip' in persistent.skip:
|
||
action Preference("skip", "toggle"), Function(persistent.skip.remove, 'skip')
|
||
else:
|
||
action Preference("skip", "toggle"), Function(persistent.skip.append, 'skip')
|
||
add Text(_('UNSEEN TEXT'), size = 16, color = '#FFEEDE', font = 'fonts/h_font.ttf' ):
|
||
if "skip" not in persistent.skip:
|
||
alpha .3
|
||
xalign .5 yalign .5
|
||
|
||
viewport:
|
||
xmaximum 195
|
||
ymaximum 52
|
||
imagebutton:
|
||
idle 'main_menu/settings_button_short_0.png'
|
||
hover 'main_menu/settings_button_short_1.png'
|
||
if "after choices" in persistent.skip:
|
||
action Preference("after choices", "toggle"), Function(persistent.skip.remove, "after choices")
|
||
else:
|
||
action Preference("after choices", "toggle"), Function(persistent.skip.append, "after choices")
|
||
|
||
add Text(_('AFTER CHOICES'), size = 16, color = '#FFEEDE', font = 'fonts/h_font.ttf' ):
|
||
if "after choices" not in persistent.skip:
|
||
alpha .3
|
||
xalign .5 yalign .5
|
||
|
||
viewport:
|
||
xmaximum 195
|
||
ymaximum 52
|
||
imagebutton:
|
||
idle 'main_menu/settings_button_short_0.png'
|
||
hover 'main_menu/settings_button_short_1.png'
|
||
if "transitions" in persistent.skip:
|
||
action InvertSelected(Preference("transitions", "toggle")), Function(persistent.skip.remove, "transitions")
|
||
else:
|
||
action InvertSelected(Preference("transitions", "toggle")), Function(persistent.skip.append, "transitions")
|
||
|
||
add Text(_('TRANSITIONS'), size = 16, color = '#FFEEDE', font = 'fonts/h_font.ttf' ):
|
||
if "transitions" not in persistent.skip:
|
||
alpha .3
|
||
xalign .5 yalign .5
|
||
|
||
|
||
|
||
vbox:
|
||
text _('TEXT COLOR') color '#FFEEDE' size 20 font 'fonts/h_font.ttf'
|
||
spacing 4
|
||
hbox:
|
||
spacing 8
|
||
viewport:
|
||
xmaximum 195
|
||
ymaximum 52
|
||
imagebutton:
|
||
idle 'main_menu/settings_button_short_0.png'
|
||
hover 'main_menu/settings_button_short_1.png'
|
||
action SetField(persistent, 'dialogue_color', '#FFF')
|
||
|
||
add Text(_('WHITE'), size = 16, color = '#FFEEDE', font = 'fonts/h_font.ttf' ):
|
||
if persistent.dialogue_color != '#FFF':
|
||
alpha .3
|
||
xalign .5 yalign .5
|
||
|
||
viewport:
|
||
xmaximum 195
|
||
ymaximum 52
|
||
imagebutton:
|
||
idle 'main_menu/settings_button_short_0.png'
|
||
hover 'main_menu/settings_button_short_1.png'
|
||
action SetField(persistent, 'dialogue_color', '#3877cf')
|
||
|
||
add Text(_('BLUE'), size = 16, color = '#FFEEDE', font = 'fonts/h_font.ttf' ):
|
||
if persistent.dialogue_color != '#3877cf':
|
||
alpha .3
|
||
xalign .5 yalign .5
|
||
|
||
viewport:
|
||
xmaximum 195
|
||
ymaximum 52
|
||
imagebutton:
|
||
idle 'main_menu/settings_button_short_0.png'
|
||
hover 'main_menu/settings_button_short_1.png'
|
||
action SetField(persistent, 'dialogue_color', '#FFCA42')
|
||
add Text(_('GOLD'), size = 16, color = '#FFEEDE', font = 'fonts/h_font.ttf' ):
|
||
if persistent.dialogue_color != '#FFCA42':
|
||
alpha .3
|
||
xalign .5 yalign .5
|
||
|
||
vbox:
|
||
text _('Optional LGBTQ+ content') color '#FFEEDE' size 20 font 'fonts/h_font.ttf'
|
||
spacing 4
|
||
hbox:
|
||
spacing 8
|
||
viewport:
|
||
xmaximum 290
|
||
ymaximum 55
|
||
imagebutton:
|
||
idle 'settings_button_long_0'
|
||
hover 'settings_button_long_1'
|
||
if not persistent.LGBTQ:
|
||
action Function(checkedLGBTQ, chk = True)
|
||
else:
|
||
action NullAction()
|
||
|
||
add Text(_('ENABLE'), size = 16, color = '#FFEEDE', font = 'fonts/h_font.ttf' ):
|
||
if not persistent.LGBTQ:
|
||
alpha .3
|
||
xalign .5 yalign .5
|
||
|
||
viewport:
|
||
xmaximum 290
|
||
ymaximum 55
|
||
imagebutton:
|
||
idle 'settings_button_long_0'
|
||
hover 'settings_button_long_1'
|
||
if persistent.LGBTQ:
|
||
action Function(checkedLGBTQ, chk = False)
|
||
|
||
else:
|
||
action NullAction()
|
||
add Text(_('DISABLE'), size = 16, color = '#FFEEDE', font = 'fonts/h_font.ttf' ):
|
||
if persistent.LGBTQ:
|
||
alpha .3
|
||
xalign .5 yalign .5
|
||
|
||
viewport:
|
||
xmaximum 670
|
||
ymaximum 253
|
||
xpos 688
|
||
add '#0000'
|
||
vbox:
|
||
spacing 35
|
||
ypos 25
|
||
xpos 42
|
||
vbox:
|
||
spacing 10
|
||
viewport:
|
||
ysize 23
|
||
xsize 650
|
||
text _('AUTO-FORWARD TIME') color '#FFEEDE' size 20 font 'fonts/h_font.ttf'
|
||
if preferences.afm_time < 30:
|
||
if preferences.afm_enable:
|
||
$ preferences.afm_enable = False
|
||
text str(round(preferences.afm_time // 4)) + ' sec' color '#FFEEDE' size 20 font 'fonts/h_font.ttf' xalign .9
|
||
else:
|
||
$ preferences.afm_enable = True
|
||
text _('OFF') color '#FFEEDE' size 20 font 'fonts/h_font.ttf' xalign .9
|
||
bar value Preference("auto-forward time"):
|
||
left_bar 'main_menu/left_bar.png'
|
||
right_bar 'main_menu/right_bar.png'
|
||
xmaximum 595 yminimum 35
|
||
left_gutter 6
|
||
right_gutter 16
|
||
vbox:
|
||
spacing 10
|
||
viewport:
|
||
ysize 23
|
||
xsize 650
|
||
text _('TEXT SPEED') color '#FFEEDE' size 20 font 'fonts/h_font.ttf' xalign 0
|
||
if preferences.text_cps:
|
||
text str(round(preferences.text_cps)) + ' char per sec' color '#FFEEDE' size 20 font 'fonts/h_font.ttf' xalign .9
|
||
else:
|
||
text _('OFF') color '#FFEEDE' size 20 font 'fonts/h_font.ttf' xalign .9
|
||
bar value Preference("text speed"):
|
||
left_bar 'main_menu/left_bar.png'
|
||
right_bar 'main_menu/right_bar.png'
|
||
xmaximum 595 yminimum 35
|
||
left_gutter 6
|
||
right_gutter 16
|
||
|
||
viewport:
|
||
xpos 690
|
||
if renpy.android and renpy.variant("small"):
|
||
ypos 310
|
||
else:
|
||
ypos 270
|
||
ymaximum 340
|
||
xmaximum 670
|
||
add '#0000'
|
||
vbox:
|
||
spacing 35
|
||
ypos 25
|
||
xpos 42
|
||
vbox:
|
||
spacing 10
|
||
text _('MUSIC VOLUME') color '#FFEEDE' size 20 font 'fonts/h_font.ttf'
|
||
bar value Preference("music volume"):
|
||
left_bar 'main_menu/left_bar.png'
|
||
right_bar 'main_menu/right_bar.png'
|
||
xmaximum 595 yminimum 35
|
||
left_gutter 6
|
||
right_gutter 16
|
||
|
||
vbox:
|
||
spacing 10
|
||
text _('SOUND VOLUME') color '#FFEEDE' size 20 font 'fonts/h_font.ttf'
|
||
bar value Preference("sound volume"):
|
||
left_bar 'main_menu/left_bar.png'
|
||
right_bar 'main_menu/right_bar.png'
|
||
xmaximum 595 yminimum 35
|
||
left_gutter 6
|
||
right_gutter 16
|
||
|
||
hbox:
|
||
xpos -27
|
||
textbutton _("MUTE ALL"):
|
||
ypos 3
|
||
if _preferences.get_volume("sfx") or _preferences.get_volume("music"):
|
||
|
||
text_idle_color '#FFEEDE'
|
||
text_hover_color '#FFEEDE'
|
||
else:
|
||
text_idle_color '#FFEEDE'
|
||
text_hover_color '#FFEEDE'
|
||
text_font 'fonts/h_font.ttf'
|
||
text_size 20
|
||
|
||
action NullAction()
|
||
style "mute_all_button"
|
||
|
||
imagebutton:
|
||
if _preferences.get_volume("sfx") or _preferences.get_volume("music"):
|
||
idle 'mute_icon_0'
|
||
hover 'mute_icon_0'
|
||
|
||
else:
|
||
idle 'mute_icon'
|
||
hover 'mute_icon'
|
||
|
||
focus_mask None
|
||
action Preference("all mute", "toggle")
|
||
|
||
if renpy.android and renpy.variant("small"):
|
||
viewport:
|
||
xpos 690
|
||
ypos 205
|
||
ymaximum 100
|
||
xmaximum 670
|
||
add '#0000'
|
||
vbox:
|
||
spacing 0
|
||
ypos 25
|
||
xpos 42
|
||
vbox:
|
||
spacing 6
|
||
text ' Background transparency'.upper() color '#FFEEDE' size 20 font 'fonts/h_font.ttf'
|
||
bar value FieldValue(persistent, "phone_alpha_bg_txt", range = 100, step = 1, style = 'slider'):
|
||
left_bar 'main_menu/left_bar.png'
|
||
right_bar 'main_menu/right_bar.png'
|
||
xmaximum 595 yminimum 35
|
||
left_gutter 6
|
||
right_gutter 16
|
||
|
||
|
||
style pref_label is gui_label
|
||
style pref_label_text is gui_label_text
|
||
style pref_vbox is vbox
|
||
|
||
style radio_label is pref_label
|
||
style radio_label_text is pref_label_text
|
||
style radio_button is gui_button
|
||
style radio_button_text is gui_button_text
|
||
style radio_vbox is pref_vbox
|
||
|
||
style check_label is pref_label
|
||
style check_label_text is pref_label_text
|
||
style check_button is gui_button
|
||
style check_button_text is gui_button_text
|
||
style check_vbox is pref_vbox
|
||
|
||
style slider_label is pref_label
|
||
style slider_label_text is pref_label_text
|
||
style slider_slider is gui_slider
|
||
style slider_button is gui_button
|
||
style slider_button_text is gui_button_text
|
||
style slider_pref_vbox is pref_vbox
|
||
|
||
style mute_all_button is check_button
|
||
style mute_all_button_text is check_button_text
|
||
|
||
style pref_label:
|
||
top_margin gui.pref_spacing
|
||
bottom_margin 3
|
||
|
||
style pref_label_text:
|
||
yalign 1.0
|
||
|
||
style pref_vbox:
|
||
xsize 338
|
||
|
||
style radio_vbox:
|
||
spacing gui.pref_button_spacing
|
||
|
||
style radio_button:
|
||
properties gui.button_properties("radio_button")
|
||
foreground "gui/button/radio_[prefix_]foreground.png"
|
||
|
||
|
||
style radio_button_text:
|
||
properties gui.button_text_properties("radio_button")
|
||
|
||
style check_vbox:
|
||
spacing gui.pref_button_spacing
|
||
|
||
style check_button:
|
||
properties gui.button_properties("check_button")
|
||
foreground "gui/button/check_[prefix_]foreground.png"
|
||
|
||
style check_button_text:
|
||
properties gui.button_text_properties("check_button")
|
||
|
||
style slider_slider:
|
||
xsize 525
|
||
|
||
style slider_button:
|
||
properties gui.button_properties("slider_button")
|
||
yalign 0.5
|
||
left_margin 15
|
||
|
||
style slider_button_text:
|
||
properties gui.button_text_properties("slider_button")
|
||
|
||
style slider_vbox:
|
||
xsize 675
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
screen history():
|
||
tag menu
|
||
|
||
|
||
|
||
|
||
|
||
|
||
use game_menu(_("History"), scroll=("vpgrid" if gui.history_height else "viewport"), yinitial=1.0)
|
||
|
||
|
||
add 'help_bg'
|
||
viewport:
|
||
xmaximum 1200
|
||
ymaximum 800
|
||
xalign .8
|
||
yalign .7
|
||
|
||
scrollbars "vertical"
|
||
mousewheel True
|
||
draggable True
|
||
pagekeys True
|
||
yinitial 1.0
|
||
has vbox:
|
||
spacing 10
|
||
for h in _history_list:
|
||
viewport:
|
||
ymaximum 80
|
||
has fixed:
|
||
yfit True
|
||
hbox:
|
||
spacing 30
|
||
viewport:
|
||
xmaximum 160
|
||
ymaximum 60
|
||
add "#f000"
|
||
if h.who:
|
||
$ _color = '#8b00ff'
|
||
if hasattr(store, 'gg'):
|
||
|
||
|
||
python:
|
||
try:
|
||
if h.who != str(gg) and eval(h.who).who_args.get('color'):
|
||
_color = eval(h.who).who_args.get('color')
|
||
except:
|
||
_color = '#8b00ff'
|
||
|
||
add Text(h.who, substitute = False, font = 'fonts/h_font.ttf', bold = True, size = 18, color = _color, xalign = 1.0)
|
||
|
||
viewport:
|
||
xmaximum 980
|
||
ymaximum 60
|
||
add "#0f00"
|
||
add Text(renpy.filter_text_tags(h.what, allow=[gui.history_allow_tags,"i","b"]), substitute = False, font = 'fonts/h_font.ttf', size = 18, color = '#fff', xalign = 0)
|
||
|
||
if not _history_list:
|
||
label _("The dialogue history is empty.") text_font 'fonts/Bodoni.ttf' text_color '#fff' text_outlines [(1, "#000", 0, 0)] text_size 30
|
||
|
||
|
||
define -1 gui.history_allow_tags = set()
|
||
|
||
|
||
style history_window is empty
|
||
|
||
style history_name is gui_label
|
||
style history_name_text is gui_label_text
|
||
style history_text is gui_text
|
||
|
||
style history_text is gui_text
|
||
|
||
style history_label is gui_label
|
||
style history_label_text is gui_label_text
|
||
|
||
style history_window:
|
||
xfill True
|
||
ysize gui.history_height
|
||
|
||
style history_name:
|
||
xpos gui.history_name_xpos
|
||
xanchor gui.history_name_xalign
|
||
ypos gui.history_name_ypos
|
||
xsize gui.history_name_width
|
||
|
||
style history_name_text:
|
||
min_width gui.history_name_width
|
||
text_align gui.history_name_xalign
|
||
|
||
style history_text:
|
||
xpos gui.history_text_xpos
|
||
ypos gui.history_text_ypos
|
||
xanchor gui.history_text_xalign
|
||
xsize gui.history_text_width
|
||
min_width gui.history_text_width
|
||
text_align gui.history_text_xalign
|
||
layout ("subtitle" if gui.history_text_xalign else "tex")
|
||
|
||
style history_label:
|
||
xfill True
|
||
|
||
style history_label_text:
|
||
xalign 0.5
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
screen help():
|
||
tag menu
|
||
|
||
|
||
default device = "keyboard"
|
||
$ btns = 'images/main_menu/buttons/'
|
||
|
||
use game_menu(_("Help"), scroll="viewport")
|
||
add 'help_bg' xalign .5 yalign .5
|
||
|
||
hbox xpos 220 ypos 190:
|
||
spacing 20
|
||
|
||
vbox:
|
||
spacing 10
|
||
for i in (("left", "Enter", "Advances dialogue and activates the interface."), ("middle", "H", "Hides the user interface."), ("right", "Escape", "Accesses the game menu.")):
|
||
hbox:
|
||
viewport:
|
||
xmaximum 140
|
||
ymaximum 40
|
||
ypos 30
|
||
add 'really_short_button_help'
|
||
text i[1] size 20 color '#FFEEDE' xalign .5 yalign .48 font 'fonts/h_font.ttf'
|
||
text "or" size 24 color '#EFC8AD' font 'fonts/h_font.ttf' ypos 30
|
||
viewport:
|
||
xmaximum 60
|
||
ymaximum 80
|
||
add '#0000'
|
||
add 'help_'+i[0]+'_mouse' xalign .5 yalign 1.0
|
||
text i[2] size 24 color '#EFC8AD' font 'fonts/h_font.ttf' ypos 30
|
||
spacing 15
|
||
|
||
for i in (
|
||
|
||
("Page Down", _("Rolls forward to later dialogue.")),
|
||
|
||
("I", _("Opens the inventory menu.")),
|
||
|
||
("P", _("Opens the phone menu.")),
|
||
|
||
("Q", _("Opens the list of available routes.")),
|
||
|
||
|
||
|
||
):
|
||
hbox:
|
||
viewport:
|
||
xmaximum 140
|
||
ymaximum 40
|
||
add 'really_short_button_help'
|
||
text i[0] size 20 color '#FFEEDE' xalign .5 yalign .48 font 'fonts/h_font.ttf'
|
||
|
||
text i[1] size 24 color '#EFC8AD' font 'fonts/h_font.ttf' ypos 5
|
||
spacing 15
|
||
vbox:
|
||
ypos 30
|
||
spacing 10
|
||
for i in (
|
||
("S", _("Takes a screenshot.")),
|
||
|
||
("M", _("Opens the map.")),
|
||
|
||
("Space", _("Advances dialogue without selecting choices.")),
|
||
|
||
("Ctrl", _("Skips dialogue while held down.")),
|
||
|
||
("Tab", _("Toggles dialogue skipping.")),
|
||
|
||
("Page Up", _("Rolls back to earlier dialogue.")),
|
||
|
||
("L", _("Highlights all active objects.")),
|
||
|
||
("F", _("Enables fullscreen mode.")),
|
||
|
||
("Arrow Keys", _("Navigate the interface.")),
|
||
|
||
):
|
||
hbox:
|
||
viewport:
|
||
xmaximum 140
|
||
ymaximum 40
|
||
add 'really_short_button_help'
|
||
text i[0] size 20 color '#FFEEDE' xalign .5 yalign .48 font 'fonts/h_font.ttf'
|
||
|
||
text i[1] size 24 color '#EFC8AD' font 'fonts/h_font.ttf' ypos 5
|
||
spacing 15
|
||
|
||
|
||
|
||
screen keyboard_help():
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
hbox xpos 200 ypos 100:
|
||
label _("Enter") text_size 18 text_outlines [(1, "#000", 0, 0)] text_color '#fff'
|
||
text _("Advances dialogue and activates the interface.") color "#808080" bold True outlines [(1, "#000", 0, 0)]
|
||
|
||
hbox xpos 200 ypos 100:
|
||
label _("Space") text_size 18 text_outlines [(1, "#000", 0, 0)] text_color '#fff'
|
||
text _("Advances dialogue without selecting choices.") color "#808080" bold True outlines [(1, "#000", 0, 0)]
|
||
|
||
hbox xpos 200 ypos 100:
|
||
label _("Arrow Keys") text_size 18 text_outlines [(1, "#000", 0, 0)] text_color '#fff'
|
||
text _("Navigate the interface.") color "#808080" bold True outlines [(1, "#000", 0, 0)]
|
||
|
||
hbox xpos 200 ypos 100:
|
||
label _("Escape") text_size 18 text_outlines [(1, "#000", 0, 0)] text_color '#fff'
|
||
text _("Accesses the game menu.") color "#808080" bold True outlines [(1, "#000", 0, 0)]
|
||
|
||
hbox xpos 200 ypos 100:
|
||
label _("Ctrl") text_size 18 text_outlines [(1, "#000", 0, 0)] text_color '#fff'
|
||
text _("Skips dialogue while held down.") color "#808080" bold True outlines [(1, "#000", 0, 0)]
|
||
|
||
hbox xpos 200 ypos 100:
|
||
label _("Tab") text_size 18 text_outlines [(1, "#000", 0, 0)] text_color '#fff'
|
||
text _("Toggles dialogue skipping.") color "#808080" bold True outlines [(1, "#000", 0, 0)]
|
||
|
||
hbox xpos 200 ypos 100:
|
||
label _("Page Up") text_size 18 text_outlines [(1, "#000", 0, 0)] text_color '#fff'
|
||
text _("Rolls back to earlier dialogue.") color "#808080" bold True outlines [(1, "#000", 0, 0)]
|
||
|
||
hbox xpos 200 ypos 100:
|
||
label _("Page Down") text_size 18 text_outlines [(1, "#000", 0, 0)] text_color '#fff'
|
||
text _("Rolls forward to later dialogue.") color "#808080" bold True outlines [(1, "#000", 0, 0)]
|
||
|
||
|
||
hbox xpos -300 ypos -277:
|
||
label _("I") text_size 18 text_outlines [(1, "#000", 0, 0)] text_color '#fff'
|
||
text _("Opens the inventory menu.") color "#808080" bold True outlines [(1, "#000", 0, 0)]
|
||
hbox xpos -300 ypos -277:
|
||
label _("P") text_size 18 text_outlines [(1, "#000", 0, 0)] text_color '#fff'
|
||
text _("Opens the phone menu.") color "#808080" bold True outlines [(1, "#000", 0, 0)]
|
||
|
||
hbox xpos -300 ypos -277:
|
||
label _("Q") text_size 18 text_outlines [(1, "#000", 0, 0)] text_color '#fff'
|
||
text _("Opens the list of available routes.") color "#808080" bold True outlines [(1, "#000", 0, 0)]
|
||
hbox xpos -300 ypos -277:
|
||
label _("M") text_size 18 text_outlines [(1, "#000", 0, 0)] text_color '#fff'
|
||
text _("Opens the map.") color "#808080" bold True outlines [(1, "#000", 0, 0)]
|
||
hbox xpos -300 ypos -277:
|
||
label _("L") text_size 18 text_outlines [(1, "#000", 0, 0)] text_color '#fff'
|
||
text _("Highlights all active objects.") color "#808080" bold True outlines [(1, "#000", 0, 0)]
|
||
hbox xpos -300 ypos -277:
|
||
label _("F") text_size 18 text_outlines [(1, "#000", 0, 0)] text_color '#fff'
|
||
text _("Enables fullscreen mode.") color "#808080" bold True outlines [(1, "#000", 0, 0)]
|
||
hbox xpos -300 ypos -277:
|
||
label _("H") text_size 18 text_outlines [(1, "#000", 0, 0)] text_color '#fff'
|
||
text _("Hides the user interface.") color "#808080" bold True outlines [(1, "#000", 0, 0)]
|
||
hbox xpos -300 ypos -277:
|
||
label _("S") text_size 18 text_outlines [(1, "#000", 0, 0)] text_color '#fff'
|
||
text _("Takes a screenshot.") color "#808080" bold True outlines [(1, "#000", 0, 0)]
|
||
|
||
|
||
|
||
screen mouse_help():
|
||
|
||
for i in [("Left Click", "Advances dialogue and activates the interface."), ("Middle Click", "Hides the user interface."), ("Right Click", "Accesses the game menu.")]:
|
||
|
||
hbox xpos -100 ypos 100:
|
||
label i[0] text_size 18 text_outlines [(1, "#000", 0, 0)] text_color '#fff'
|
||
text i[1] color "#808080" bold True outlines [(1, "#000", 0, 0)]
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
screen gamepad_help():
|
||
|
||
hbox:
|
||
label _("Right Trigger\nA/Bottom Button") text_font 'fonts/Tahoma.ttf' text_size 24
|
||
text _("Advances dialogue and activates the interface.")
|
||
|
||
hbox:
|
||
label _("Left Trigger\nLeft Shoulder") text_font 'fonts/Tahoma.ttf' text_size 24
|
||
text _("Rolls back to earlier dialogue.")
|
||
|
||
hbox:
|
||
label _("Right Shoulder") text_font 'fonts/Tahoma.ttf' text_size 24
|
||
text _("Rolls forward to later dialogue.")
|
||
|
||
|
||
hbox:
|
||
label _("D-Pad, Sticks") text_font 'fonts/Tahoma.ttf' text_size 24
|
||
text _("Navigate the interface.")
|
||
|
||
hbox:
|
||
label _("Start, Guide") text_font 'fonts/Tahoma.ttf' text_size 24
|
||
text _("Accesses the game menu.")
|
||
|
||
hbox:
|
||
label _("Y/Top Button") text_font 'fonts/Tahoma.ttf' text_size 24
|
||
text _("Hides the user interface.")
|
||
|
||
textbutton _("Calibrate") action GamepadCalibrate()
|
||
|
||
|
||
style help_button is gui_button
|
||
style help_button_text is gui_button_text
|
||
style help_label is gui_label
|
||
style help_label_text is gui_label_text
|
||
style help_text is gui_text
|
||
|
||
style help_button:
|
||
properties gui.button_properties("help_button")
|
||
xmargin 12
|
||
|
||
style help_button_text:
|
||
properties gui.button_text_properties("help_button")
|
||
|
||
style help_label:
|
||
xsize 375
|
||
right_padding 30
|
||
|
||
style help_label_text:
|
||
size gui.text_size
|
||
xalign 1.0
|
||
text_align 1.0
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
screen popup(message, _xpos=50, _ypos=50, _xmax=400, _ymax=200, _arrow="right", _arrow_pos=.5, _area=None, _image={"frame":"tutorial/tutorial_message.png","arrow":"tutorial/tutorial_arrow.png"}, _size=16):
|
||
|
||
zorder 1000
|
||
|
||
if not _ymax:
|
||
$ _ymax = 24 * ( len(message) // int(_xmax * 0.1) )
|
||
|
||
viewport:
|
||
xpos _xpos
|
||
ypos _ypos
|
||
xmaximum _xmax
|
||
ymaximum _ymax
|
||
add '#fff0'
|
||
add Frame(_image['frame'], Borders(8, 8, 8, 8), tile=gui.frame_tile)
|
||
hbox:
|
||
xmaximum _xmax - 20
|
||
ymaximum _ymax - 20
|
||
xsize _xmax - 20
|
||
ysize _ymax - 20
|
||
xpos 10
|
||
ypos 10
|
||
spacing 3
|
||
text _(message):
|
||
size _size font checkFont('fonts/roboto_regular.ttf')
|
||
color '#292C4B'
|
||
xalign .5
|
||
yalign .5
|
||
|
||
if _arrow is not None:
|
||
|
||
if _arrow == "left":
|
||
$ _rotate = 0
|
||
$ _xpos_arrow = _xpos - 28
|
||
$ _ypos_arrow = _ypos
|
||
$ _xmaximum_arrow = 28
|
||
$ _ymaximum_arrow = _ymax
|
||
$ _yalign_arrow = _arrow_pos
|
||
$ _xalign_arrow = 0
|
||
elif _arrow == "top":
|
||
$ _rotate = 90
|
||
$ _xpos_arrow = _xpos
|
||
$ _ypos_arrow = _ypos -28
|
||
$ _xmaximum_arrow = _xmax
|
||
$ _ymaximum_arrow = 28
|
||
$ _yalign_arrow = 0
|
||
$ _xalign_arrow = _arrow_pos
|
||
elif _arrow == "right":
|
||
$ _rotate = 180
|
||
$ _xpos_arrow = _xpos + _xmax - 10
|
||
$ _ypos_arrow = _ypos
|
||
$ _xmaximum_arrow = 38
|
||
$ _ymaximum_arrow = _ymax
|
||
$ _yalign_arrow = _arrow_pos
|
||
$ _xalign_arrow = 0
|
||
else:
|
||
$ _rotate = 270
|
||
$ _xpos_arrow = _xpos
|
||
$ _ypos_arrow = _ypos + _ymax - 10
|
||
$ _xmaximum_arrow = _xmax
|
||
$ _ymaximum_arrow = 38
|
||
$ _yalign_arrow = 0
|
||
$ _xalign_arrow = _arrow_pos
|
||
|
||
viewport:
|
||
xpos _xpos_arrow
|
||
ypos _ypos_arrow
|
||
xmaximum _xmaximum_arrow
|
||
ymaximum _ymaximum_arrow
|
||
add "#0000"
|
||
add _image['arrow'] xalign _xalign_arrow yalign _yalign_arrow rotate _rotate
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
if _area is not None:
|
||
viewport:
|
||
xpos _area["xpos"]
|
||
ypos _area["ypos"]
|
||
xmaximum _area["xsize"]
|
||
ymaximum _area["ysize"]
|
||
add '#fff0'
|
||
add Frame(_image['frame']) alpha 0.3
|
||
|
||
screen confirm(message, yes_action, no_action, yes_text=_("Yes"), no_text=_("No"), dont_ask_again=None):
|
||
|
||
key "rollback" action NullAction()
|
||
|
||
zorder 1000
|
||
|
||
style_prefix "confirm"
|
||
|
||
imagebutton:
|
||
idle '#0003'
|
||
hover '#0003'
|
||
action NullAction()
|
||
add 'check' yzoom 1.5 xalign .5 yalign .5
|
||
viewport:
|
||
xmaximum 540
|
||
ymaximum 310
|
||
add '#0000'
|
||
xalign .5 yalign .5
|
||
vbox:
|
||
xmaximum 500
|
||
ymaximum 250
|
||
xpos 25
|
||
ypos 20
|
||
spacing 6
|
||
hbox:
|
||
xsize 490
|
||
ysize 210
|
||
xalign .5
|
||
yalign .5
|
||
spacing 4
|
||
text _(message):
|
||
size 24 font 'fonts/h_font.ttf'
|
||
color '#292C4B'
|
||
xalign .5
|
||
yalign .2
|
||
text_align .5
|
||
hbox:
|
||
xalign .5
|
||
yalign .5
|
||
xsize 490
|
||
ysize 50
|
||
if no_action is not None:
|
||
vbox:
|
||
xmaximum 130
|
||
ymaximum 45
|
||
xalign 0.5
|
||
yalign .5
|
||
viewport:
|
||
xmaximum 130
|
||
ymaximum 45
|
||
imagebutton:
|
||
idle 'button_0'
|
||
hover 'button_1'
|
||
action no_action
|
||
text no_text xalign .5 yalign .48 font 'fonts/h_font.ttf' size 24 color '#FFEEDE'
|
||
vbox:
|
||
xmaximum 130
|
||
ymaximum 45
|
||
xalign 0.5
|
||
yalign .5
|
||
viewport:
|
||
xmaximum 130
|
||
ymaximum 45
|
||
imagebutton:
|
||
idle 'button_0'
|
||
hover 'button_1'
|
||
action yes_action
|
||
text yes_text xalign .5 yalign .48 font 'fonts/h_font.ttf' size 24 color '#FFEEDE'
|
||
|
||
key "game_menu" action no_action
|
||
|
||
|
||
|
||
style confirm_frame is gui_frame
|
||
style confirm_prompt is gui_prompt
|
||
style confirm_prompt_text is gui_prompt_text
|
||
style confirm_button is gui_medium_button
|
||
style confirm_button_text is gui_medium_button_text
|
||
|
||
style confirm_frame:
|
||
background Frame([ "gui/confirm_frame.png", "gui/frame.png"], gui.confirm_frame_borders, tile=gui.frame_tile)
|
||
padding gui.confirm_frame_borders.padding
|
||
xalign .5
|
||
yalign .5
|
||
|
||
style confirm_prompt_text:
|
||
text_align 0.5
|
||
layout "subtitle"
|
||
|
||
style confirm_button:
|
||
properties gui.button_properties("confirm_button")
|
||
|
||
style confirm_button_text:
|
||
properties gui.button_text_properties("confirm_button")
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
screen skip_indicator():
|
||
|
||
zorder 100
|
||
style_prefix "skip"
|
||
|
||
frame:
|
||
|
||
has hbox:
|
||
spacing 9
|
||
|
||
text _("Skipping") font checkFont("fonts/GOTHIC.ttf")
|
||
|
||
text "▸" at delayed_blink(0.0, 1.0) style "skip_triangle"
|
||
text "▸" at delayed_blink(0.2, 1.0) style "skip_triangle"
|
||
text "▸" at delayed_blink(0.4, 1.0) style "skip_triangle"
|
||
|
||
|
||
|
||
transform -1 delayed_blink(delay, cycle):
|
||
alpha .5
|
||
|
||
pause delay
|
||
block:
|
||
|
||
linear .2 alpha 1.0
|
||
pause .2
|
||
linear .2 alpha 0.5
|
||
pause (cycle - .4)
|
||
repeat
|
||
|
||
|
||
style skip_frame is empty
|
||
style skip_text is gui_text
|
||
style skip_triangle is skip_text
|
||
|
||
style skip_frame:
|
||
ypos gui.skip_ypos
|
||
background Frame("gui/skip.png", gui.skip_frame_borders, tile=gui.frame_tile)
|
||
padding gui.skip_frame_borders.padding
|
||
|
||
style skip_text:
|
||
size gui.notify_text_size
|
||
|
||
style skip_triangle:
|
||
|
||
|
||
font "DejaVuSans.ttf"
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
screen notify(message):
|
||
|
||
zorder 100
|
||
style_prefix "notify"
|
||
|
||
frame at notify_appear:
|
||
text "[message!tq]"
|
||
|
||
timer 3.25 action Hide('notify')
|
||
|
||
|
||
transform -1 notify_appear:
|
||
on show:
|
||
alpha 0
|
||
linear .25 alpha 1.0
|
||
on hide:
|
||
linear .5 alpha 0.0
|
||
|
||
|
||
style notify_frame is empty
|
||
style notify_text is gui_text
|
||
|
||
style notify_frame:
|
||
ypos gui.notify_ypos
|
||
|
||
background Frame("gui/notify.png", gui.notify_frame_borders, tile=gui.frame_tile)
|
||
padding gui.notify_frame_borders.padding
|
||
|
||
style notify_text:
|
||
properties gui.text_properties("notify")
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
screen nvl(dialogue, items=None):
|
||
|
||
window:
|
||
style "nvl_window"
|
||
|
||
has vbox:
|
||
spacing gui.nvl_spacing
|
||
|
||
|
||
if gui.nvl_height:
|
||
|
||
vpgrid:
|
||
cols 1
|
||
yinitial 1.0
|
||
|
||
use nvl_dialogue(dialogue)
|
||
|
||
else:
|
||
|
||
use nvl_dialogue(dialogue)
|
||
|
||
|
||
|
||
for i in items:
|
||
|
||
textbutton i.caption:
|
||
action i.action
|
||
style "nvl_button"
|
||
|
||
add SideImage() xalign 0.0 yalign 1.0
|
||
|
||
|
||
screen nvl_dialogue(dialogue):
|
||
|
||
for d in dialogue:
|
||
|
||
window:
|
||
id d.window_id
|
||
|
||
has fixed:
|
||
yfit gui.nvl_height is None
|
||
|
||
if d.who is not None:
|
||
|
||
text d.who:
|
||
id d.who_id
|
||
|
||
text d.what:
|
||
id d.what_id
|
||
|
||
|
||
|
||
|
||
define -1 config.nvl_list_length = gui.nvl_list_length
|
||
|
||
style nvl_window is default
|
||
style nvl_entry is default
|
||
|
||
style nvl_label is say_label
|
||
style nvl_dialogue is say_dialogue
|
||
|
||
style nvl_button is button
|
||
style nvl_button_text is button_text
|
||
|
||
style nvl_window:
|
||
xfill True
|
||
yfill True
|
||
|
||
background "gui/nvl.png"
|
||
padding gui.nvl_borders.padding
|
||
|
||
style nvl_entry:
|
||
xfill True
|
||
ysize gui.nvl_height
|
||
|
||
style nvl_label:
|
||
xpos gui.nvl_name_xpos
|
||
xanchor gui.nvl_name_xalign
|
||
ypos gui.nvl_name_ypos
|
||
yanchor 0.0
|
||
xsize gui.nvl_name_width
|
||
min_width gui.nvl_name_width
|
||
text_align gui.nvl_name_xalign
|
||
|
||
style nvl_dialogue:
|
||
xpos gui.nvl_text_xpos
|
||
xanchor gui.nvl_text_xalign
|
||
ypos gui.nvl_text_ypos
|
||
xsize gui.nvl_text_width
|
||
min_width gui.nvl_text_width
|
||
text_align gui.nvl_text_xalign
|
||
layout ("subtitle" if gui.nvl_text_xalign else "tex")
|
||
|
||
style nvl_thought:
|
||
xpos gui.nvl_thought_xpos
|
||
xanchor gui.nvl_thought_xalign
|
||
ypos gui.nvl_thought_ypos
|
||
xsize gui.nvl_thought_width
|
||
min_width gui.nvl_thought_width
|
||
text_align gui.nvl_thought_xalign
|
||
layout ("subtitle" if gui.nvl_text_xalign else "tex")
|
||
|
||
style nvl_button:
|
||
properties gui.button_properties("nvl_button")
|
||
xpos gui.nvl_button_xpos
|
||
xanchor gui.nvl_button_xalign
|
||
|
||
style nvl_button_text:
|
||
properties gui.button_text_properties("nvl_button")
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
style pref_vbox:
|
||
variant "medium"
|
||
xsize 675
|
||
|
||
|
||
|
||
screen quick_menu():
|
||
variant "touch"
|
||
|
||
zorder 230
|
||
|
||
|
||
|
||
|
||
|
||
if quick_menu:
|
||
|
||
hbox:
|
||
style_prefix "quick"
|
||
|
||
xalign 0.5
|
||
yalign 1.0
|
||
|
||
textbutton _("Back") action Rollback()
|
||
textbutton _("Skip") action Skip() alternate Skip(fast=True, confirm=True)
|
||
textbutton _("Auto") action Preference("auto-forward", "toggle")
|
||
textbutton _("Menu") action ShowMenu()
|
||
|
||
|
||
style window:
|
||
variant "small"
|
||
background "gui/phone/textbox.png"
|
||
|
||
style radio_button:
|
||
variant "small"
|
||
foreground "gui/phone/button/radio_[prefix_]foreground.png"
|
||
|
||
style check_button:
|
||
variant "small"
|
||
foreground "gui/phone/button/check_[prefix_]foreground.png"
|
||
|
||
style nvl_window:
|
||
variant "small"
|
||
background "gui/phone/nvl.png"
|
||
|
||
style main_menu_frame:
|
||
variant "small"
|
||
background "gui/phone/overlay/main_menu.png"
|
||
|
||
style game_menu_outer_frame:
|
||
variant "small"
|
||
background "gui/phone/overlay/game_menu.png"
|
||
|
||
style game_menu_navigation_frame:
|
||
variant "small"
|
||
xsize 510
|
||
|
||
style game_menu_content_frame:
|
||
variant "small"
|
||
top_margin 0
|
||
|
||
style pref_vbox:
|
||
variant "small"
|
||
xsize 600
|
||
|
||
style bar:
|
||
variant "small"
|
||
ysize gui.bar_size
|
||
left_bar Frame("gui/phone/bar/left.png", gui.bar_borders, tile=gui.bar_tile)
|
||
right_bar Frame("gui/phone/bar/right.png", gui.bar_borders, tile=gui.bar_tile)
|
||
|
||
style vbar:
|
||
variant "small"
|
||
xsize gui.bar_size
|
||
top_bar Frame("gui/phone/bar/top.png", gui.vbar_borders, tile=gui.bar_tile)
|
||
bottom_bar Frame("gui/phone/bar/bottom.png", gui.vbar_borders, tile=gui.bar_tile)
|
||
|
||
style scrollbar:
|
||
variant "small"
|
||
ysize 0
|
||
base_bar Frame("gui/phone/scrollbar/horizontal_[prefix_]bar.png", gui.scrollbar_borders, tile=gui.scrollbar_tile)
|
||
thumb Frame("gui/phone/scrollbar/horizontal_[prefix_]thumb.png", gui.scrollbar_borders, tile=gui.scrollbar_tile)
|
||
|
||
style vscrollbar:
|
||
variant "small"
|
||
xsize gui.scrollbar_size
|
||
base_bar Frame("gui/phone/scrollbar/vertical_[prefix_]bar.png", gui.vscrollbar_borders, tile=gui.scrollbar_tile)
|
||
thumb Frame("gui/phone/scrollbar/vertical_[prefix_]thumb.png", gui.vscrollbar_borders, tile=gui.scrollbar_tile)
|
||
|
||
style slider:
|
||
variant "small"
|
||
ysize 0
|
||
base_bar Frame("gui/phone/slider/horizontal_[prefix_]bar.png", gui.slider_borders, tile=gui.slider_tile)
|
||
thumb "gui/phone/slider/horizontal_[prefix_]thumb.png"
|
||
|
||
style vslider:
|
||
variant "small"
|
||
xsize gui.slider_size
|
||
base_bar Frame("gui/phone/slider/vertical_[prefix_]bar.png", gui.vslider_borders, tile=gui.slider_tile)
|
||
thumb "gui/phone/slider/vertical_[prefix_]thumb.png"
|
||
|
||
style slider_pref_vbox:
|
||
variant "small"
|
||
xsize None
|
||
|
||
style slider_pref_slider:
|
||
variant "small"
|
||
xsize 900
|
||
# Decompiled by unrpyc: https://github.com/CensoredUsername/unrpyc
|