diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..6ecf980 --- /dev/null +++ b/.gitignore @@ -0,0 +1,59 @@ +# macOS-related files +.DS_Store +.AppleDouble +.LSOverride + +# Windows-related files +Thumbs.db +Thumbs.db:encryptable +ehthumbs.db +ehthumbs_vista.db +[Dd]esktop.ini + +#Textfile cruft +/project.json +/traceback.txt +/errors.txt +/log.txt +log.txt +errors.txt +traceback.txt + + +#Vim swap files +.sw? +*~ +*.bak + +#save files & cache files +/game/saves/ +/game/saves/* +/game/cache/* +/game/cache +saves +tmp +cache +env + +#binary files +*.rpyc +*.rpyb +*.rpymc +*.pyc +*.pyo + +/game/*.rpyc + +#Vim (best text editor) swap files +.sw? + +#binary files +*.rpyc +*.rpymc + +#backups +*.bak + +#android +.android.json + diff --git a/errors.txt b/errors.txt deleted file mode 100644 index d15061b..0000000 --- a/errors.txt +++ /dev/null @@ -1,46 +0,0 @@ -I'm sorry, but errors were detected in your script. Please correct the -errors listed below, and try again. - - -File "game/script.rpy", line 27: expected '=' not found. - define L&C = Character('Lyra/Clodius', base, color="#ffffff", who_outlines=[(gui.name_text_thickness, "#860a0a")], **kwargs) - ^ - -File "game/script.rpy", line 36: expected statement. - Language(None) - ^ - -File "game/script.rpy", line 39: expected statement. - Language("spanish") - ^ - -File "game/script.rpy", line 60: end of line expected. - L "{i}If you tell anyone this stuff they'd sic a spook squad on your ass so fast and turn your ass into gravel and foundation."{/i} - ^ - -File "game/script.rpy", line 741: expected statement. - L&C "Lyra I-/Clodius I-" - ^ - -File "game/script.rpy", line 874: expected statement. - >> - ^ - -File "game/script.rpy", line 1168: end of line expected. - L "{i}I-it's okay, Clodius…"{/i} - ^ - -File "game/script.rpy", line 1170: end of line expected. - L "{i}I said yes earlier, didn't I?"{/i} - ^ - -File "game/script.rpy", line 1172: end of line expected. - L "{i}I like you, too."{/i} - ^ - -File "game/script.rpy", line 1303: end of line expected. - {i}L "It looks like I'm in witness protection whenever I'm on a date with you!"{/i} - ^ - -Ren'Py Version: Ren'Py 8.0.1.22070801 -Thu Aug 4 18:44:15 2022 diff --git a/game/audio/ui/uiBack.wav b/game/audio/ui/uiBack.wav new file mode 100644 index 0000000..df8d06c Binary files /dev/null and b/game/audio/ui/uiBack.wav differ diff --git a/game/audio/ui/uiClick.wav b/game/audio/ui/uiClick.wav new file mode 100644 index 0000000..1bdd804 Binary files /dev/null and b/game/audio/ui/uiClick.wav differ diff --git a/game/audio/ui/uiFail.wav b/game/audio/ui/uiFail.wav new file mode 100644 index 0000000..4ab6982 Binary files /dev/null and b/game/audio/ui/uiFail.wav differ diff --git a/game/audio/ui/uiNotification.wav b/game/audio/ui/uiNotification.wav new file mode 100644 index 0000000..4853a85 Binary files /dev/null and b/game/audio/ui/uiNotification.wav differ diff --git a/game/audio/ui/uiOptionOff.wav b/game/audio/ui/uiOptionOff.wav new file mode 100644 index 0000000..f862a62 Binary files /dev/null and b/game/audio/ui/uiOptionOff.wav differ diff --git a/game/audio/ui/uiOptionOn.wav b/game/audio/ui/uiOptionOn.wav new file mode 100644 index 0000000..67ad18a Binary files /dev/null and b/game/audio/ui/uiOptionOn.wav differ diff --git a/game/audio/ui/uiRollover.wav b/game/audio/ui/uiRollover.wav new file mode 100644 index 0000000..5e69126 Binary files /dev/null and b/game/audio/ui/uiRollover.wav differ diff --git a/game/cache/bytecode.rpyb b/game/cache/bytecode.rpyb deleted file mode 100644 index 378ec20..0000000 Binary files a/game/cache/bytecode.rpyb and /dev/null differ diff --git a/game/cache/py3analysis.rpyb b/game/cache/py3analysis.rpyb deleted file mode 100644 index 6ecc9c0..0000000 Binary files a/game/cache/py3analysis.rpyb and /dev/null differ diff --git a/game/cache/screens.rpyb b/game/cache/screens.rpyb deleted file mode 100644 index bd4cab1..0000000 Binary files a/game/cache/screens.rpyb and /dev/null differ diff --git a/game/cache/shaders.txt b/game/cache/shaders.txt deleted file mode 100644 index 784d595..0000000 --- a/game/cache/shaders.txt +++ /dev/null @@ -1,7 +0,0 @@ -renpy.ftl -renpy.solid -renpy.alpha renpy.texture -renpy.geometry renpy.solid -renpy.texture -renpy.geometry renpy.texture -renpy.alpha renpy.geometry renpy.texture diff --git a/game/gui.rpy b/game/gui.rpy index bea4642..556c836 100644 --- a/game/gui.rpy +++ b/game/gui.rpy @@ -1,474 +1,486 @@ -################################################################################ -## Initialization -################################################################################ - -## The init offset statement causes the initialization statements in this file -## to run before init statements in any other file. -init offset = -2 - -## Calling gui.init resets the styles to sensible default values, and sets the -## width and height of the game. -init python: - gui.init(1920, 1080) - - - -################################################################################ -## GUI Configuration Variables -################################################################################ - - -## Colors ###################################################################### -## -## The colors of text in the interface. - -## An accent color used throughout the interface to label and highlight text. -define gui.accent_color = '#9933ff' - -## The color used for a text button when it is neither selected nor hovered. -define gui.idle_color = '#888888' - -## The small color is used for small text, which needs to be brighter/darker to -## achieve the same effect. -define gui.idle_small_color = '#aaaaaa' - -## The color that is used for buttons and bars that are hovered. -define gui.hover_color = '#c184ff' - -## The color used for a text button when it is selected but not focused. A -## button is selected if it is the current screen or preference value. -define gui.selected_color = '#ffffff' - -## The color used for a text button when it cannot be selected. -define gui.insensitive_color = '#8888887f' - -## Colors used for the portions of bars that are not filled in. These are not -## used directly, but are used when re-generating bar image files. -define gui.muted_color = '#3d1466' -define gui.hover_muted_color = '#5b1e99' - -## The colors used for dialogue and menu choice text. -define gui.text_color = '#ffffff' -define gui.interface_text_color = '#ffffff' - - -## Fonts and Font Sizes ######################################################## - -## The font used for in-game text. -define gui.text_font = "DejaVuSans.ttf" - -## The font used for character names. -define gui.name_text_font = "DejaVuSans.ttf" - -## The font used for out-of-game text. -define gui.interface_text_font = "DejaVuSans.ttf" - -## The size of normal dialogue text. -define gui.text_size = 33 - -## The size of character names. -define gui.name_text_size = 45 - -## The size of text in the game's user interface. -define gui.interface_text_size = 33 - -## The size of labels in the game's user interface. -define gui.label_text_size = 36 - -## The size of text on the notify screen. -define gui.notify_text_size = 24 - -## The size of the game's title. -define gui.title_text_size = 75 - - -## Main and Game Menus ######################################################### - -## The images used for the main and game menus. -define gui.main_menu_background = "gui/main_menu.png" -define gui.game_menu_background = "gui/game_menu.png" - - -## Dialogue #################################################################### -## -## These variables control how dialogue is displayed on the screen one line at a -## time. - -## The height of the textbox containing dialogue. -define gui.textbox_height = 278 - -## The placement of the textbox vertically on the screen. 0.0 is the top, 0.5 is -## center, and 1.0 is the bottom. -define gui.textbox_yalign = 1.0 - - -## The placement of the speaking character's name, relative to the textbox. -## These can be a whole number of pixels from the left or top, or 0.5 to center. -define gui.name_xpos = 360 -define gui.name_ypos = 0 - -## The horizontal alignment of the character's name. This can be 0.0 for left- -## aligned, 0.5 for centered, and 1.0 for right-aligned. -define gui.name_xalign = 0.0 - -## The width, height, and borders of the box containing the character's name, or -## None to automatically size it. -define gui.namebox_width = None -define gui.namebox_height = None - -## The borders of the box containing the character's name, in left, top, right, -## bottom order. -define gui.namebox_borders = Borders(5, 5, 5, 5) - -## If True, the background of the namebox will be tiled, if False, the -## background of the namebox will be scaled. -define gui.namebox_tile = False - - -## The placement of dialogue relative to the textbox. These can be a whole -## number of pixels relative to the left or top side of the textbox, or 0.5 to -## center. -define gui.dialogue_xpos = 402 -define gui.dialogue_ypos = 75 - -## The maximum width of dialogue text, in pixels. -define gui.dialogue_width = 1116 - -## The horizontal alignment of the dialogue text. This can be 0.0 for left- -## aligned, 0.5 for centered, and 1.0 for right-aligned. -define gui.dialogue_text_xalign = 0.0 - - -## Buttons ##################################################################### -## -## These variables, along with the image files in gui/button, control aspects of -## how buttons are displayed. - -## The width and height of a button, in pixels. If None, Ren'Py computes a size. -define gui.button_width = None -define gui.button_height = None - -## The borders on each side of the button, in left, top, right, bottom order. -define gui.button_borders = Borders(6, 6, 6, 6) - -## If True, the background image will be tiled. If False, the background image -## will be linearly scaled. -define gui.button_tile = False - -## The font used by the button. -define gui.button_text_font = gui.interface_text_font - -## The size of the text used by the button. -define gui.button_text_size = gui.interface_text_size - -## The color of button text in various states. -define gui.button_text_idle_color = gui.idle_color -define gui.button_text_hover_color = gui.hover_color -define gui.button_text_selected_color = gui.selected_color -define gui.button_text_insensitive_color = gui.insensitive_color - -## The horizontal alignment of the button text. (0.0 is left, 0.5 is center, 1.0 -## is right). -define gui.button_text_xalign = 0.0 - - -## These variables override settings for different kinds of buttons. Please see -## the gui documentation for the kinds of buttons available, and what each is -## used for. -## -## These customizations are used by the default interface: - -define gui.radio_button_borders = Borders(27, 6, 6, 6) - -define gui.check_button_borders = Borders(27, 6, 6, 6) - -define gui.confirm_button_text_xalign = 0.5 - -define gui.page_button_borders = Borders(15, 6, 15, 6) - -define gui.quick_button_borders = Borders(15, 6, 15, 0) -define gui.quick_button_text_size = 21 -define gui.quick_button_text_idle_color = gui.idle_small_color -define gui.quick_button_text_selected_color = gui.accent_color - -## You can also add your own customizations, by adding properly-named variables. -## For example, you can uncomment the following line to set the width of a -## navigation button. - -# define gui.navigation_button_width = 250 - - -## Choice Buttons ############################################################## -## -## Choice buttons are used in the in-game menus. - -define gui.choice_button_width = 1185 -define gui.choice_button_height = None -define gui.choice_button_tile = False -define gui.choice_button_borders = Borders(150, 8, 150, 8) -define gui.choice_button_text_font = gui.text_font -define gui.choice_button_text_size = gui.text_size -define gui.choice_button_text_xalign = 0.5 -define gui.choice_button_text_idle_color = "#cccccc" -define gui.choice_button_text_hover_color = "#ffffff" -define gui.choice_button_text_insensitive_color = "#444444" - - -## File Slot Buttons ########################################################### -## -## A file slot button is a special kind of button. It contains a thumbnail -## image, and text describing the contents of the save slot. A save slot uses -## image files in gui/button, like the other kinds of buttons. - -## The save slot button. -define gui.slot_button_width = 414 -define gui.slot_button_height = 309 -define gui.slot_button_borders = Borders(15, 15, 15, 15) -define gui.slot_button_text_size = 21 -define gui.slot_button_text_xalign = 0.5 -define gui.slot_button_text_idle_color = gui.idle_small_color -define gui.slot_button_text_selected_idle_color = gui.selected_color -define gui.slot_button_text_selected_hover_color = gui.hover_color - -## The width and height of thumbnails used by the save slots. -define config.thumbnail_width = 384 -define config.thumbnail_height = 216 - -## The number of columns and rows in the grid of save slots. -define gui.file_slot_cols = 3 -define gui.file_slot_rows = 2 - - -## Positioning and Spacing ##################################################### -## -## These variables control the positioning and spacing of various user interface -## elements. - -## The position of the left side of the navigation buttons, relative to the left -## side of the screen. -define gui.navigation_xpos = 60 - -## The vertical position of the skip indicator. -define gui.skip_ypos = 15 - -## The vertical position of the notify screen. -define gui.notify_ypos = 68 - -## The spacing between menu choices. -define gui.choice_spacing = 33 - -## Buttons in the navigation section of the main and game menus. -define gui.navigation_spacing = 6 - -## Controls the amount of spacing between preferences. -define gui.pref_spacing = 15 - -## Controls the amount of spacing between preference buttons. -define gui.pref_button_spacing = 0 - -## The spacing between file page buttons. -define gui.page_spacing = 0 - -## The spacing between file slots. -define gui.slot_spacing = 15 - -## The position of the main menu text. -define gui.main_menu_text_xalign = 1.0 - - -## Frames ###################################################################### -## -## These variables control the look of frames that can contain user interface -## components when an overlay or window is not present. - -## Generic frames. -define gui.frame_borders = Borders(6, 6, 6, 6) - -## The frame that is used as part of the confirm screen. -define gui.confirm_frame_borders = Borders(60, 60, 60, 60) - -## The frame that is used as part of the skip screen. -define gui.skip_frame_borders = Borders(24, 8, 75, 8) - -## The frame that is used as part of the notify screen. -define gui.notify_frame_borders = Borders(24, 8, 60, 8) - -## Should frame backgrounds be tiled? -define gui.frame_tile = False - - -## Bars, Scrollbars, and Sliders ############################################### -## -## These control the look and size of bars, scrollbars, and sliders. -## -## The default GUI only uses sliders and vertical scrollbars. All of the other -## bars are only used in creator-written screens. - -## The height of horizontal bars, scrollbars, and sliders. The width of vertical -## bars, scrollbars, and sliders. -define gui.bar_size = 38 -define gui.scrollbar_size = 18 -define gui.slider_size = 38 - -## True if bar images should be tiled. False if they should be linearly scaled. -define gui.bar_tile = False -define gui.scrollbar_tile = False -define gui.slider_tile = False - -## Horizontal borders. -define gui.bar_borders = Borders(6, 6, 6, 6) -define gui.scrollbar_borders = Borders(6, 6, 6, 6) -define gui.slider_borders = Borders(6, 6, 6, 6) - -## Vertical borders. -define gui.vbar_borders = Borders(6, 6, 6, 6) -define gui.vscrollbar_borders = Borders(6, 6, 6, 6) -define gui.vslider_borders = Borders(6, 6, 6, 6) - -## What to do with unscrollable scrollbars in the gui. "hide" hides them, while -## None shows them. -define gui.unscrollable = "hide" - - -## History ##################################################################### -## -## The history screen displays dialogue that the player has already dismissed. - -## The number of blocks of dialogue history Ren'Py will keep. -define config.history_length = 250 - -## The height of a history screen entry, or None to make the height variable at -## the cost of performance. -define gui.history_height = 210 - -## The position, width, and alignment of the label giving the name of the -## speaking character. -define gui.history_name_xpos = 233 -define gui.history_name_ypos = 0 -define gui.history_name_width = 233 -define gui.history_name_xalign = 1.0 - -## The position, width, and alignment of the dialogue text. -define gui.history_text_xpos = 255 -define gui.history_text_ypos = 3 -define gui.history_text_width = 1110 -define gui.history_text_xalign = 0.0 - - -## NVL-Mode #################################################################### -## -## The NVL-mode screen displays the dialogue spoken by NVL-mode characters. - -## The borders of the background of the NVL-mode background window. -define gui.nvl_borders = Borders(0, 15, 0, 30) - -## The maximum number of NVL-mode entries Ren'Py will display. When more entries -## than this are to be show, the oldest entry will be removed. -define gui.nvl_list_length = 6 - -## The height of an NVL-mode entry. Set this to None to have the entries -## dynamically adjust height. -define gui.nvl_height = 173 - -## The spacing between NVL-mode entries when gui.nvl_height is None, and between -## NVL-mode entries and an NVL-mode menu. -define gui.nvl_spacing = 15 - -## The position, width, and alignment of the label giving the name of the -## speaking character. -define gui.nvl_name_xpos = 645 -define gui.nvl_name_ypos = 0 -define gui.nvl_name_width = 225 -define gui.nvl_name_xalign = 1.0 - -## The position, width, and alignment of the dialogue text. -define gui.nvl_text_xpos = 675 -define gui.nvl_text_ypos = 12 -define gui.nvl_text_width = 885 -define gui.nvl_text_xalign = 0.0 - -## The position, width, and alignment of nvl_thought text (the text said by the -## nvl_narrator character.) -define gui.nvl_thought_xpos = 360 -define gui.nvl_thought_ypos = 0 -define gui.nvl_thought_width = 1170 -define gui.nvl_thought_xalign = 0.0 - -## The position of nvl menu_buttons. -define gui.nvl_button_xpos = 675 -define gui.nvl_button_xalign = 0.0 - -## Localization ################################################################ - -## This controls where a line break is permitted. The default is suitable -## for most languages. A list of available values can be found at https:// -## www.renpy.org/doc/html/style_properties.html#style-property-language - -define gui.language = "unicode" - - -################################################################################ -## Mobile devices -################################################################################ - -init python: - - ## This increases the size of the quick buttons to make them easier to touch - ## on tablets and phones. - @gui.variant - def touch(): - - gui.quick_button_borders = Borders(60, 21, 60, 0) - - ## This changes the size and spacing of various GUI elements to ensure they - ## are easily visible on phones. - @gui.variant - def small(): - - ## Font sizes. - gui.text_size = 45 - gui.name_text_size = 54 - gui.notify_text_size = 38 - gui.interface_text_size = 45 - gui.button_text_size = 45 - gui.label_text_size = 51 - - ## Adjust the location of the textbox. - gui.textbox_height = 360 - gui.name_xpos = 120 - gui.dialogue_xpos = 135 - gui.dialogue_width = 1650 - - ## Change the size and spacing of various things. - gui.slider_size = 54 - - gui.choice_button_width = 1860 - gui.choice_button_text_size = 45 - - gui.navigation_spacing = 30 - gui.pref_button_spacing = 15 - - gui.history_height = 285 - gui.history_text_width = 1035 - - gui.quick_button_text_size = 30 - - ## File button layout. - gui.file_slot_cols = 2 - gui.file_slot_rows = 2 - - ## NVL-mode. - gui.nvl_height = 255 - - gui.nvl_name_width = 458 - gui.nvl_name_xpos = 488 - - gui.nvl_text_width = 1373 - gui.nvl_text_xpos = 518 - gui.nvl_text_ypos = 8 - - gui.nvl_thought_width = 1860 - gui.nvl_thought_xpos = 30 - - gui.nvl_button_width = 1860 - gui.nvl_button_xpos = 30 +################################################################################ +## Initialization +################################################################################ + +## The init offset statement causes the initialization statements in this file +## to run before init statements in any other file. +init offset = -2 + +## Calling gui.init resets the styles to sensible default values, and sets the +## width and height of the game. +init python: + gui.init(1920, 1080) + + + +################################################################################ +## GUI Configuration Variables +################################################################################ + + +## Colors ###################################################################### +## +## The colors of text in the interface. + +## An accent color used throughout the interface to label and highlight text. +define gui.accent_color = u'#cc0066' + +## The color used for a text button when it is neither selected nor hovered. +define gui.idle_color = u'#888888' + +## The small color is used for small text, which needs to be brighter/darker to +## achieve the same effect. +define gui.idle_small_color = u'#aaaaaa' + +## The color that is used for buttons and bars that are hovered. +define gui.hover_color = u'#e066a3' + +## The color used for a text button when it is selected but not focused. A +## button is selected if it is the current screen or preference value. +define gui.selected_color = u'#ffffff' + +## The color used for a text button when it cannot be selected. +define gui.insensitive_color = u'#8888887f' + +## Colors used for the portions of bars that are not filled in. These are not +## used directly, but are used when re-generating bar image files. +define gui.muted_color = u'#510028' +define gui.hover_muted_color = u'#7a003d' + +## The colors used for dialogue and menu choice text. +define gui.text_color = '#ffffff' +define gui.interface_text_color = '#fff' + +define gui.text_color_outline = '#000' + +## The outline +define gui.dialogue_text_outlines = [ (absolute(1.0), gui.text_color_outline, 0, 0) ] + +## Fonts and Font Sizes ######################################################## + +## The font used for in-game text. +define gui.text_font = "gui/FallingSky.otf" + +## The font used for character names. +define gui.name_text_font = "gui/FallingSky.otf" + +## The font used for out-of-game text. +define gui.interface_text_font = "gui/FallingSky.otf" + +## The size of normal dialogue text. +define gui.text_size = 42 + +## The size of character names. +define gui.name_text_size = 45 +define gui.name_text_thickness = absolute(2.0) + +## The size of text in the game's user interface. +define gui.interface_text_size = 33 + +## The size of labels in the game's user interface. +define gui.label_text_size = 36 + +## The size of text on the notify screen. +define gui.notify_text_size = 24 + +## The size of the game's title. +define gui.title_text_size = 75 + +define gui.main_menu_text_size = 60 + + +## Main and Game Menus ######################################################### + +## The images used for the main and game menus. +define gui.main_menu_background = "gui/main_menu.png" +define gui.game_menu_background = "gui/game_menu.png" + + +## Dialogue #################################################################### +## +## These variables control how dialogue is displayed on the screen one line at a +## time. + +## The height of the textbox containing dialogue. +define gui.textbox_height = 278 + +## The placement of the textbox vertically on the screen. 0.0 is the top, 0.5 is +## center, and 1.0 is the bottom. +define gui.textbox_yalign = 1.0 + + +## The placement of the speaking character's name, relative to the textbox. +## These can be a whole number of pixels from the left or top, or 0.5 to center. +define gui.name_xpos = 395 #350 +define gui.name_ypos = -85 + +## The horizontal alignment of the character's name. This can be 0.0 for left- +## aligned, 0.5 for centered, and 1.0 for right-aligned. +define gui.name_xalign = 0.5 + +## The width, height, and borders of the box containing the character's name, or +## None to automatically size it. +define gui.namebox_width = None +define gui.namebox_height = None + +## The borders of the box containing the character's name, in left, top, right, +## bottom order. +define gui.namebox_borders = Borders(5, 5, 5, 5) + +## If True, the background of the namebox will be tiled, if False, the +## background of the namebox will be scaled. +define gui.namebox_tile = False + +## The placement of dialogue relative to the textbox. These can be a whole +## number of pixels relative to the left or top side of the textbox, or 0.5 to +## center. +#To make the text with the characters align to the normal text, I set this to match up and make it "just werk". It is a horrible, hacky fix, but werks none the less. I hope this fix is so bad that I never get to write gui code ever again. +#It's still bad but it could be legitmately worse +define gui.dialogue_ypos = 20 +define gui.dialogue_xpos = 220 +define gui.dialogue_width = 1460 + +## The horizontal alignment of the dialogue text. This can be 0.0 for left- +## aligned, 0.5 for centered, and 1.0 for right-aligned. +define gui.dialogue_text_xalign = 0.0 + +define gui.window_yoffset = 0 +define gui.input_yoffset = 0 + + +## Buttons ##################################################################### +## +## These variables, along with the image files in gui/button, control aspects of +## how buttons are displayed. + +## The width and height of a button, in pixels. If None, Ren'Py computes a size. +define gui.button_width = None +define gui.button_height = None + +## The borders on each side of the button, in left, top, right, bottom order. +define gui.button_borders = Borders(6, 6, 6, 6) + +## If True, the background image will be tiled. If False, the background image +## will be linearly scaled. +define gui.button_tile = False + +## The font used by the button. +define gui.button_text_font = gui.interface_text_font + +## The size of the text used by the button. +define gui.button_text_size = gui.interface_text_size + +## The color of button text in various states. +define gui.button_text_idle_color = gui.idle_color +define gui.button_text_hover_color = gui.hover_color +define gui.button_text_selected_color = gui.selected_color +define gui.button_text_insensitive_color = gui.insensitive_color + +## The horizontal alignment of the button text. (0.0 is left, 0.5 is center, 1.0 +## is right). +define gui.button_text_xalign = 0.0 + + +## These variables override settings for different kinds of buttons. Please see +## the gui documentation for the kinds of buttons available, and what each is +## used for. +## +## These customizations are used by the default interface: + +define gui.radio_button_borders = Borders(27, 6, 6, 6) + +define gui.check_button_borders = Borders(27, 6, 6, 6) + +define gui.confirm_button_text_xalign = 0.5 + +define gui.page_button_borders = Borders(15, 6, 15, 6) + +define gui.quick_button_borders = Borders(15, 6, 15, 0) +define gui.quick_button_text_color_outline = "#000" +define gui.quick_button_text_outlines = [ (absolute(1.0), gui.quick_button_text_color_outline, 0, 0) ] +define gui.quick_button_text_size = 21 +define gui.quick_button_text_idle_color = "#fff" +define gui.quick_button_text_selected_color = gui.accent_color + +## You can also add your own customizations, by adding properly-named variables. +## For example, you can uncomment the following line to set the width of a +## navigation button. + +# define gui.navigation_button_width = 250 + + +## Choice Buttons ############################################################## +## +## Choice buttons are used in the in-game menus. + +define gui.choice_button_width = 1185 +define gui.choice_button_height = None +define gui.choice_button_tile = False +define gui.choice_button_borders = Borders(150, 8, 150, 8) +define gui.choice_button_text_font = gui.text_font +define gui.choice_button_text_size = gui.text_size +define gui.choice_button_text_xalign = 0.5 +define gui.choice_button_text_idle_color = "#cccccc" +define gui.choice_button_text_hover_color = "#ffffff" +define gui.choice_button_text_insensitive_color = "#444444" + + +## File Slot Buttons ########################################################### +## +## A file slot button is a special kind of button. It contains a thumbnail +## image, and text describing the contents of the save slot. A save slot uses +## image files in gui/button, like the other kinds of buttons. + +## The save slot button. +define gui.slot_button_width = 414 +define gui.slot_button_height = 309 +define gui.slot_button_borders = Borders(15, 15, 15, 15) +define gui.slot_button_text_size = 21 +define gui.slot_button_text_xalign = 0.5 +define gui.slot_button_text_idle_color = gui.idle_small_color +define gui.slot_button_text_selected_idle_color = gui.selected_color +define gui.slot_button_text_selected_hover_color = gui.hover_color + +## The width and height of thumbnails used by the save slots. +define config.thumbnail_width = 384 +define config.thumbnail_height = 216 + +## The number of columns and rows in the grid of save slots. +define gui.file_slot_cols = 3 +define gui.file_slot_rows = 2 + + +## Positioning and Spacing ##################################################### +## +## These variables control the positioning and spacing of various user interface +## elements. + +## The position of the left side of the navigation buttons, relative to the left +## side of the screen. +define gui.navigation_xpos = 60 + +## The vertical position of the skip indicator. +define gui.skip_ypos = 15 + +## The vertical position of the notify screen. +define gui.notify_ypos = 68 + +## The spacing between menu choices. +define gui.choice_spacing = 33 + +## Buttons in the navigation section of the main and game menus. +define gui.navigation_spacing = 6 + +## Controls the amount of spacing between preferences. +define gui.pref_spacing = 15 + +## Controls the amount of spacing between preference buttons. +define gui.pref_button_spacing = 0 + +## The spacing between file page buttons. +define gui.page_spacing = 0 + +## The spacing between file slots. +define gui.slot_spacing = 15 + +## The position of the main menu text. +define gui.main_menu_text_xalign = 1.0 + + +## Frames ###################################################################### +## +## These variables control the look of frames that can contain user interface +## components when an overlay or window is not present. + +## Generic frames. +define gui.frame_borders = Borders(6, 6, 6, 6) + +## The frame that is used as part of the confirm screen. +define gui.confirm_frame_borders = Borders(60, 60, 60, 60) + +## The frame that is used as part of the skip screen. +define gui.skip_frame_borders = Borders(24, 8, 75, 8) + +## The frame that is used as part of the notify screen. +define gui.notify_frame_borders = Borders(24, 8, 60, 8) + +## Should frame backgrounds be tiled? +define gui.frame_tile = False + + +## Bars, Scrollbars, and Sliders ############################################### +## +## These control the look and size of bars, scrollbars, and sliders. +## +## The default GUI only uses sliders and vertical scrollbars. All of the other +## bars are only used in creator-written screens. + +## The height of horizontal bars, scrollbars, and sliders. The width of vertical +## bars, scrollbars, and sliders. +define gui.bar_size = 38 +define gui.scrollbar_size = 18 +define gui.slider_size = 38 + +## True if bar images should be tiled. False if they should be linearly scaled. +define gui.bar_tile = False +define gui.scrollbar_tile = False +define gui.slider_tile = False + +## Horizontal borders. +define gui.bar_borders = Borders(6, 6, 6, 6) +define gui.scrollbar_borders = Borders(6, 6, 6, 6) +define gui.slider_borders = Borders(6, 6, 6, 6) + +## Vertical borders. +define gui.vbar_borders = Borders(6, 6, 6, 6) +define gui.vscrollbar_borders = Borders(6, 6, 6, 6) +define gui.vslider_borders = Borders(6, 6, 6, 6) + +## What to do with unscrollable scrollbars in the gui. "hide" hides them, while +## None shows them. +define gui.unscrollable = "hide" + + +## History ##################################################################### +## +## The history screen displays dialogue that the player has already dismissed. + +## The number of blocks of dialogue history Ren'Py will keep. +define config.history_length = 250 + +## The height of a history screen entry, or None to make the height variable at +## the cost of performance. +define gui.history_height = 210 + +## The position, width, and alignment of the label giving the name of the +## speaking character. +define gui.history_name_xpos = 233 +define gui.history_name_ypos = 0 +define gui.history_name_width = 233 +define gui.history_name_xalign = 1.0 + +## The position, width, and alignment of the dialogue text. +define gui.history_text_xpos = 255 +define gui.history_text_ypos = 3 +define gui.history_text_width = 1110 +define gui.history_text_xalign = 0.0 + + +## NVL-Mode #################################################################### +## +## The NVL-mode screen displays the dialogue spoken by NVL-mode characters. + +## The borders of the background of the NVL-mode background window. +define gui.nvl_borders = Borders(0, 15, 0, 30) + +## The maximum number of NVL-mode entries Ren'Py will display. When more entries +## than this are to be show, the oldest entry will be removed. +define gui.nvl_list_length = 6 + +## The height of an NVL-mode entry. Set this to None to have the entries +## dynamically adjust height. +define gui.nvl_height = 173 + +## The spacing between NVL-mode entries when gui.nvl_height is None, and between +## NVL-mode entries and an NVL-mode menu. +define gui.nvl_spacing = 15 + +## The position, width, and alignment of the label giving the name of the +## speaking character. +define gui.nvl_name_xpos = 645 +define gui.nvl_name_ypos = 0 +define gui.nvl_name_width = 225 +define gui.nvl_name_xalign = 1.0 + +## The position, width, and alignment of the dialogue text. +define gui.nvl_text_xpos = 675 +define gui.nvl_text_ypos = 12 +define gui.nvl_text_width = 885 +define gui.nvl_text_xalign = 0.0 + +## The position, width, and alignment of nvl_thought text (the text said by the +## nvl_narrator character.) +define gui.nvl_thought_xpos = 360 +define gui.nvl_thought_ypos = 0 +define gui.nvl_thought_width = 1170 +define gui.nvl_thought_xalign = 0.0 + +## The position of nvl menu_buttons. +define gui.nvl_button_xpos = 675 +define gui.nvl_button_xalign = 0.0 + +## Localization ################################################################ + +## This controls where a line break is permitted. The default is suitable +## for most languages. A list of available values can be found at https:// +## www.renpy.org/doc/html/style_properties.html#style-property-language + +define gui.language = "unicode" + + +################################################################################ +## Mobile devices +################################################################################ + +init python: + + ## This increases the size of the quick buttons to make them easier to touch + ## on tablets and phones. + if renpy.variant("touch"): + + gui.quick_button_borders = Borders(60, 21, 60, 0) + + ## This changes the size and spacing of various GUI elements to ensure they + ## are easily visible on phones. + if renpy.variant("small"): + + ## Font sizes. + gui.text_size = 45 + gui.name_text_size = 54 + gui.notify_text_size = 38 + gui.interface_text_size = 45 + gui.button_text_size = 45 + gui.label_text_size = 51 + + ## Adjust the location of the textbox. + gui.textbox_height = 360 + gui.name_xpos = 120 + gui.dialogue_xpos = 135 + gui.dialogue_width = 1650 + + ## Change the size and spacing of various things. + gui.slider_size = 54 + + gui.choice_button_width = 1860 + gui.choice_button_text_size = 45 + + gui.navigation_spacing = 30 + gui.pref_button_spacing = 15 + + gui.history_height = 285 + gui.history_text_width = 1035 + + gui.quick_button_text_size = 30 + + ## File button layout. + gui.file_slot_cols = 2 + gui.file_slot_rows = 2 + + ## NVL-mode. + gui.nvl_height = 255 + + gui.nvl_name_width = 458 + gui.nvl_name_xpos = 488 + + gui.nvl_text_width = 1373 + gui.nvl_text_xpos = 518 + gui.nvl_text_ypos = 8 + + gui.nvl_thought_width = 1860 + gui.nvl_thought_xpos = 30 + + gui.nvl_button_width = 1860 + gui.nvl_button_xpos = 30 + + + diff --git a/game/gui.rpyc b/game/gui.rpyc deleted file mode 100644 index 3606c2a..0000000 Binary files a/game/gui.rpyc and /dev/null differ diff --git a/game/options.rpyc b/game/options.rpyc deleted file mode 100644 index 5a30953..0000000 Binary files a/game/options.rpyc and /dev/null differ diff --git a/game/saves/auto-1-LT1.save b/game/saves/auto-1-LT1.save deleted file mode 100644 index 23827b2..0000000 Binary files a/game/saves/auto-1-LT1.save and /dev/null differ diff --git a/game/saves/auto-2-LT1.save b/game/saves/auto-2-LT1.save deleted file mode 100644 index 90017c5..0000000 Binary files a/game/saves/auto-2-LT1.save and /dev/null differ diff --git a/game/saves/navigation.json b/game/saves/navigation.json deleted file mode 100644 index 906c8b8..0000000 --- a/game/saves/navigation.json +++ /dev/null @@ -1 +0,0 @@ -{"error": false, "size": [1920, 1080], "name": "sexo_space_lady_game", "version": "1.0", "location": {"label": {"splashscreen": ["game/script.rpy", 9], "start": ["game/script.rpy", 32], "replayStart": ["game/script.rpy", 41]}, "define": {"gui.accent_color": ["game/gui.rpy", 26], "gui.idle_color": ["game/gui.rpy", 29], "gui.idle_small_color": ["game/gui.rpy", 33], "gui.hover_color": ["game/gui.rpy", 36], "gui.selected_color": ["game/gui.rpy", 40], "gui.insensitive_color": ["game/gui.rpy", 43], "gui.muted_color": ["game/gui.rpy", 47], "gui.hover_muted_color": ["game/gui.rpy", 48], "gui.text_color": ["game/gui.rpy", 51], "gui.interface_text_color": ["game/gui.rpy", 52], "gui.text_font": ["game/gui.rpy", 58], "gui.name_text_font": ["game/gui.rpy", 61], "gui.interface_text_font": ["game/gui.rpy", 64], "gui.text_size": ["game/gui.rpy", 67], "gui.name_text_size": ["game/gui.rpy", 70], "gui.interface_text_size": ["game/gui.rpy", 73], "gui.label_text_size": ["game/gui.rpy", 76], "gui.notify_text_size": ["game/gui.rpy", 79], "gui.title_text_size": ["game/gui.rpy", 82], "gui.main_menu_background": ["game/gui.rpy", 88], "gui.game_menu_background": ["game/gui.rpy", 89], "gui.textbox_height": ["game/gui.rpy", 98], "gui.textbox_yalign": ["game/gui.rpy", 102], "gui.name_xpos": ["game/gui.rpy", 107], "gui.name_ypos": ["game/gui.rpy", 108], "gui.name_xalign": ["game/gui.rpy", 112], "gui.namebox_width": ["game/gui.rpy", 116], "gui.namebox_height": ["game/gui.rpy", 117], "gui.namebox_borders": ["game/gui.rpy", 121], "gui.namebox_tile": ["game/gui.rpy", 125], "gui.dialogue_xpos": ["game/gui.rpy", 131], "gui.dialogue_ypos": ["game/gui.rpy", 132], "gui.dialogue_width": ["game/gui.rpy", 135], "gui.dialogue_text_xalign": ["game/gui.rpy", 139], "gui.button_width": ["game/gui.rpy", 148], "gui.button_height": ["game/gui.rpy", 149], "gui.button_borders": ["game/gui.rpy", 152], "gui.button_tile": ["game/gui.rpy", 156], "gui.button_text_font": ["game/gui.rpy", 159], "gui.button_text_size": ["game/gui.rpy", 162], "gui.button_text_idle_color": ["game/gui.rpy", 165], "gui.button_text_hover_color": ["game/gui.rpy", 166], "gui.button_text_selected_color": ["game/gui.rpy", 167], "gui.button_text_insensitive_color": ["game/gui.rpy", 168], "gui.button_text_xalign": ["game/gui.rpy", 172], "gui.radio_button_borders": ["game/gui.rpy", 181], "gui.check_button_borders": ["game/gui.rpy", 183], "gui.confirm_button_text_xalign": ["game/gui.rpy", 185], "gui.page_button_borders": ["game/gui.rpy", 187], "gui.quick_button_borders": ["game/gui.rpy", 189], "gui.quick_button_text_size": ["game/gui.rpy", 190], "gui.quick_button_text_idle_color": ["game/gui.rpy", 191], "gui.quick_button_text_selected_color": ["game/gui.rpy", 192], "gui.choice_button_width": ["game/gui.rpy", 205], "gui.choice_button_height": ["game/gui.rpy", 206], "gui.choice_button_tile": ["game/gui.rpy", 207], "gui.choice_button_borders": ["game/gui.rpy", 208], "gui.choice_button_text_font": ["game/gui.rpy", 209], "gui.choice_button_text_size": ["game/gui.rpy", 210], "gui.choice_button_text_xalign": ["game/gui.rpy", 211], "gui.choice_button_text_idle_color": ["game/gui.rpy", 212], "gui.choice_button_text_hover_color": ["game/gui.rpy", 213], "gui.choice_button_text_insensitive_color": ["game/gui.rpy", 214], "gui.slot_button_width": ["game/gui.rpy", 224], "gui.slot_button_height": ["game/gui.rpy", 225], "gui.slot_button_borders": ["game/gui.rpy", 226], "gui.slot_button_text_size": ["game/gui.rpy", 227], "gui.slot_button_text_xalign": ["game/gui.rpy", 228], "gui.slot_button_text_idle_color": ["game/gui.rpy", 229], "gui.slot_button_text_selected_idle_color": ["game/gui.rpy", 230], "gui.slot_button_text_selected_hover_color": ["game/gui.rpy", 231], "config.thumbnail_width": ["game/gui.rpy", 234], "config.thumbnail_height": ["game/gui.rpy", 235], "gui.file_slot_cols": ["game/gui.rpy", 238], "gui.file_slot_rows": ["game/gui.rpy", 239], "gui.navigation_xpos": ["game/gui.rpy", 249], "gui.skip_ypos": ["game/gui.rpy", 252], "gui.notify_ypos": ["game/gui.rpy", 255], "gui.choice_spacing": ["game/gui.rpy", 258], "gui.navigation_spacing": ["game/gui.rpy", 261], "gui.pref_spacing": ["game/gui.rpy", 264], "gui.pref_button_spacing": ["game/gui.rpy", 267], "gui.page_spacing": ["game/gui.rpy", 270], "gui.slot_spacing": ["game/gui.rpy", 273], "gui.main_menu_text_xalign": ["game/gui.rpy", 276], "gui.frame_borders": ["game/gui.rpy", 285], "gui.confirm_frame_borders": ["game/gui.rpy", 288], "gui.skip_frame_borders": ["game/gui.rpy", 291], "gui.notify_frame_borders": ["game/gui.rpy", 294], "gui.frame_tile": ["game/gui.rpy", 297], "gui.bar_size": ["game/gui.rpy", 309], "gui.scrollbar_size": ["game/gui.rpy", 310], "gui.slider_size": ["game/gui.rpy", 311], "gui.bar_tile": ["game/gui.rpy", 314], "gui.scrollbar_tile": ["game/gui.rpy", 315], "gui.slider_tile": ["game/gui.rpy", 316], "gui.bar_borders": ["game/gui.rpy", 319], "gui.scrollbar_borders": ["game/gui.rpy", 320], "gui.slider_borders": ["game/gui.rpy", 321], "gui.vbar_borders": ["game/gui.rpy", 324], "gui.vscrollbar_borders": ["game/gui.rpy", 325], "gui.vslider_borders": ["game/gui.rpy", 326], "gui.unscrollable": ["game/gui.rpy", 330], "config.history_length": ["game/gui.rpy", 338], "gui.history_height": ["game/gui.rpy", 342], "gui.history_name_xpos": ["game/gui.rpy", 346], "gui.history_name_ypos": ["game/gui.rpy", 347], "gui.history_name_width": ["game/gui.rpy", 348], "gui.history_name_xalign": ["game/gui.rpy", 349], "gui.history_text_xpos": ["game/gui.rpy", 352], "gui.history_text_ypos": ["game/gui.rpy", 353], "gui.history_text_width": ["game/gui.rpy", 354], "gui.history_text_xalign": ["game/gui.rpy", 355], "gui.nvl_borders": ["game/gui.rpy", 363], "gui.nvl_list_length": ["game/gui.rpy", 367], "gui.nvl_height": ["game/gui.rpy", 371], "gui.nvl_spacing": ["game/gui.rpy", 375], "gui.nvl_name_xpos": ["game/gui.rpy", 379], "gui.nvl_name_ypos": ["game/gui.rpy", 380], "gui.nvl_name_width": ["game/gui.rpy", 381], "gui.nvl_name_xalign": ["game/gui.rpy", 382], "gui.nvl_text_xpos": ["game/gui.rpy", 385], "gui.nvl_text_ypos": ["game/gui.rpy", 386], "gui.nvl_text_width": ["game/gui.rpy", 387], "gui.nvl_text_xalign": ["game/gui.rpy", 388], "gui.nvl_thought_xpos": ["game/gui.rpy", 392], "gui.nvl_thought_ypos": ["game/gui.rpy", 393], "gui.nvl_thought_width": ["game/gui.rpy", 394], "gui.nvl_thought_xalign": ["game/gui.rpy", 395], "gui.nvl_button_xpos": ["game/gui.rpy", 398], "gui.nvl_button_xalign": ["game/gui.rpy", 399], "gui.language": ["game/gui.rpy", 407], "quick_menu": ["game/screens.rpy", 267], "gui.history_allow_tags": ["game/screens.rpy", 911], "config.nvl_list_length": ["game/screens.rpy", 1339], "config.name": ["game/options.rpy", 15], "gui.show_name": ["game/options.rpy", 21], "config.version": ["game/options.rpy", 26], "gui.about": ["game/options.rpy", 32], "build.name": ["game/options.rpy", 40], "config.has_sound": ["game/options.rpy", 49], "config.has_music": ["game/options.rpy", 50], "config.has_voice": ["game/options.rpy", 51], "config.enter_transition": ["game/options.rpy", 76], "config.exit_transition": ["game/options.rpy", 77], "config.intra_transition": ["game/options.rpy", 82], "config.after_load_transition": ["game/options.rpy", 87], "config.end_game_transition": ["game/options.rpy", 92], "config.window": ["game/options.rpy", 109], "config.window_show_transition": ["game/options.rpy", 114], "config.window_hide_transition": ["game/options.rpy", 115], "config.save_directory": ["game/options.rpy", 146], "config.window_icon": ["game/options.rpy", 153], "base": ["game/script.rpy", 23], "narrator": ["game/script.rpy", 24], "L": ["game/script.rpy", 25], "C": ["game/script.rpy", 26], "LC": ["game/script.rpy", 27]}, "screen": {"say": ["game/screens.rpy", 98], "input": ["game/screens.rpy", 175], "choice": ["game/screens.rpy", 208], "quick_menu": ["game/screens.rpy", 1408], "navigation": ["game/screens.rpy", 288], "main_menu": ["game/screens.rpy", 351], "game_menu": ["game/screens.rpy", 416], "about": ["game/screens.rpy", 542], "save": ["game/screens.rpy", 582], "load": ["game/screens.rpy", 589], "file_slots": ["game/screens.rpy", 596], "preferences": ["game/screens.rpy", 711], "history": ["game/screens.rpy", 871], "help": ["game/screens.rpy", 959], "keyboard_help": ["game/screens.rpy", 988], "mouse_help": ["game/screens.rpy", 1039], "gamepad_help": ["game/screens.rpy", 1062], "confirm": ["game/screens.rpy", 1128], "skip_indicator": ["game/screens.rpy", 1191], "notify": ["game/screens.rpy", 1247], "nvl": ["game/screens.rpy", 1286], "nvl_dialogue": ["game/screens.rpy", 1318]}, "transform": {"delayed_blink": ["game/screens.rpy", 1209], "notify_appear": ["game/screens.rpy", 1258]}, "callable": {"touch": ["game/gui.rpy", 418], "small": ["game/gui.rpy", 425], "randomize_choices": ["game/script.rpy", 3]}}, "build": {"directory_name": "sexo_space_lady_game-1.0", "executable_name": "sexo_space_lady_game", "include_update": false, "packages": [{"name": "pc", "formats": ["zip"], "file_lists": ["windows", "linux", "renpy", "all"], "description": "PC: Windows and Linux", "update": true, "dlc": false, "hidden": false}, {"name": "linux", "formats": ["tar.bz2"], "file_lists": ["linux", "linux_arm", "renpy", "all"], "description": "Linux", "update": true, "dlc": false, "hidden": false}, {"name": "mac", "formats": ["app-zip", "app-dmg"], "file_lists": ["mac", "renpy", "all"], "description": "Macintosh", "update": true, "dlc": false, "hidden": false}, {"name": "win", "formats": ["zip"], "file_lists": ["windows", "renpy", "all"], "description": "Windows", "update": true, "dlc": false, "hidden": false}, {"name": "market", "formats": ["bare-zip"], "file_lists": ["windows", "linux", "mac", "renpy", "all"], "description": "Windows, Mac, Linux for Markets", "update": true, "dlc": false, "hidden": false}, {"name": "steam", "formats": ["zip"], "file_lists": ["windows", "linux", "mac", "renpy", "all"], "description": "steam", "update": true, "dlc": false, "hidden": true}, {"name": "android", "formats": ["directory"], "file_lists": ["android", "all"], "description": "android", "update": false, "dlc": true, "hidden": true}, {"name": "ios", "formats": ["directory"], "file_lists": ["ios", "all"], "description": "ios", "update": false, "dlc": true, "hidden": true}, {"name": "web", "formats": ["zip"], "file_lists": ["web", "all"], "description": "web", "update": false, "dlc": true, "hidden": true}], "archives": [["archive", ["all"]]], "documentation_patterns": ["*.html", "*.txt"], "base_patterns": [["*.py", null], ["*.sh", null], ["*.app/", null], ["*.dll", null], ["*.manifest", null], ["lib/", null], ["renpy/", null], ["update/", null], ["common/", null], ["update/", null], ["old-game/", null], ["icon.ico", null], ["icon.icns", null], ["project.json", null], ["log.txt", null], ["errors.txt", null], ["traceback.txt", null], ["image_cache.txt", null], ["text_overflow.txt", null], ["dialogue.txt", null], ["dialogue.tab", null], ["profile_screen.txt", null], ["files.txt", null], ["memory.txt", null], ["tmp/", null], ["game/saves/", null], ["game/bytecode.rpyb", null], ["archived/", null], ["launcherinfo.py", null], ["android.txt", null], ["game/presplash*.*", ["all"]], [".android.json", ["android"]], ["android-*.png", ["android"]], ["android-*.jpg", ["android"]], ["ouya_icon.png", null], ["ios-presplash.*", ["ios"]], ["ios-launchimage.png", null], ["ios-icon.png", null], ["web-presplash.png", ["web"]], ["web-presplash.jpg", ["web"]], ["web-presplash.webp", ["web"]], ["progressive_download.txt", ["web"]], ["steam_appid.txt", null], ["**~", null], ["**.bak", null], ["**/.**", null], ["**/#**", null], ["**/thumbs.db", null], [".*", null], ["**", ["all"]]], "renpy_patterns": [["renpy/common/_compat/**", null], ["renpy/common/_roundrect/**", null], ["renpy/common/_outline/**", null], ["renpy/common/_theme**", null], ["lib/**/_ssl.*", null], ["renpy/**__pycache__/**.cpython-39.pyc", ["all"]], ["renpy/**__pycache__", ["all"]], ["**~", null], ["**/#*", null], ["**/.*", null], ["**.old", null], ["**.new", null], ["**.rpa", null], ["**/steam_appid.txt", null], ["renpy.py", ["all"]], ["renpy/", ["all"]], ["renpy/**.py", ["renpy"]], ["renpy/**.pxd", null], ["renpy/**.pxi", null], ["renpy/**.pyx", null], ["renpy/**.pyc", null], ["renpy/**.pyo", null], ["renpy/common/", ["all"]], ["renpy/common/_compat/**", ["renpy"]], ["renpy/common/**.rpy", ["renpy"]], ["renpy/common/**.rpym", ["renpy"]], ["renpy/common/_compat/**", ["renpy"]], ["renpy/common/**", ["all"]], ["renpy/**", ["all"]], ["lib/*/renpy", null], ["lib/*/renpy.exe", null], ["lib/*/pythonw.exe", null], ["lib/py2-*/", null], ["lib/py*-windows-i686/**", ["windows_i686"]], ["lib/py*-windows-x86_64/**", ["windows"]], ["lib/py*-linux-i686/**", ["linux_i686"]], ["lib/py*-linux-aarch64/**", ["linux_arm"]], ["lib/py*-linux-armv7l/**", ["linux_arm"]], ["lib/py*-linux-*/**", ["linux"]], ["lib/py*-mac-*/**", ["mac"]], ["lib/python2.*/**", null], ["lib/**", ["windows", "linux", "mac", "android", "ios"]], ["renpy.sh", ["linux", "mac"]]], "xbit_patterns": ["**.sh", "lib/py*-linux-*/*", "lib/py*-mac-*/*", "**.app/Contents/MacOS/*"], "version": "1.0", "display_name": "sexo_space_lady_game", "exclude_empty_directories": true, "allow_integrated_gpu": true, "renpy": false, "script_version": true, "destination": "sexo_space_lady_game-1.0-dists", "mac_info_plist": {}, "merge": [["linux_i686", "linux"], ["windows_i686", "windows"]], "include_i686": true, "change_icon_i686": true, "android_permissions": [], "_sdk_fonts": false}} \ No newline at end of file diff --git a/game/saves/persistent b/game/saves/persistent deleted file mode 100644 index 824026f..0000000 Binary files a/game/saves/persistent and /dev/null differ diff --git a/game/screens.rpy b/game/screens.rpy index 2a8f480..07322aa 100644 --- a/game/screens.rpy +++ b/game/screens.rpy @@ -1,1505 +1,1539 @@ -################################################################################ -## Initialization -################################################################################ - -init offset = -1 - - -################################################################################ -## Styles -################################################################################ - -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 gui.scrollbar_size - 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) - - - -################################################################################ -## In-game screens -################################################################################ - - -## Say screen ################################################################## -## -## The say screen is used to display dialogue to the player. It takes two -## parameters, who and what, which are the name of the speaking character and -## the text to be displayed, respectively. (The who parameter can be None if no -## name is given.) -## -## This screen must create a text displayable with id "what", as Ren'Py uses -## this to manage text display. It can also create displayables with id "who" -## and id "window" to apply style properties. -## -## https://www.renpy.org/doc/html/screen_special.html#say - -screen say(who, what): - style_prefix "say" - - window: - id "window" - - if who is not None: - - window: - id "namebox" - style "namebox" - text who id "who" - - text what id "what" - - - ## If there's a side image, display it above the text. Do not display on the - ## phone variant - there's no room. - if not renpy.variant("small"): - add SideImage() xalign 0.0 yalign 1.0 - - -## Make the namebox available for styling through the Character object. -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 - - adjust_spacing False - -## Input screen ################################################################ -## -## This screen is used to display renpy.input. The prompt parameter is used to -## pass a text prompt in. -## -## This screen must create an input displayable with id "input" to accept the -## various input parameters. -## -## https://www.renpy.org/doc/html/screen_special.html#input - -screen input(prompt): - style_prefix "input" - - window: - - vbox: - xalign gui.dialogue_text_xalign - xpos gui.dialogue_xpos - xsize gui.dialogue_width - ypos gui.dialogue_ypos - - text prompt style "input_prompt" - input id "input" - -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 - - -## Choice screen ############################################################### -## -## This screen is used to display the in-game choices presented by the menu -## statement. The one parameter, items, is a list of objects, each with caption -## and action fields. -## -## https://www.renpy.org/doc/html/screen_special.html#choice - -screen choice(items): - style_prefix "choice" - - vbox: - for i in items: - textbutton i.caption action i.action - - -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") - - -## Quick Menu screen ########################################################### -## -## The quick menu is displayed in-game to provide easy access to the out-of-game -## menus. - -screen quick_menu(): - - ## Ensure this appears on top of other screens. - zorder 100 - - if quick_menu: - - hbox: - style_prefix "quick" - - xalign 0.5 - yalign 1.0 - - textbutton _("Back") action Rollback() - textbutton _("History") action ShowMenu('history') - textbutton _("Skip") action Skip() alternate Skip(fast=True, confirm=True) - textbutton _("Auto") action Preference("auto-forward", "toggle") - textbutton _("Save") action ShowMenu('save') - textbutton _("Q.Save") action QuickSave() - textbutton _("Q.Load") action QuickLoad() - textbutton _("Prefs") action ShowMenu('preferences') - - -## This code ensures that the quick_menu screen is displayed in-game, whenever -## the player has not explicitly hidden the interface. -init python: - config.overlay_screens.append("quick_menu") - -default 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") - - -################################################################################ -## Main and Game Menu Screens -################################################################################ - -## Navigation screen ########################################################### -## -## This screen is included in the main and game menus, and provides navigation -## to other menus, and to start the game. - -screen navigation(): - - vbox: - style_prefix "navigation" - - xpos gui.navigation_xpos - yalign 0.5 - - spacing gui.navigation_spacing - - if main_menu: - - textbutton _("Start") action Start() - - else: - - textbutton _("History") action ShowMenu("history") - - textbutton _("Save") action ShowMenu("save") - - textbutton _("Load") action ShowMenu("load") - - textbutton _("Preferences") action ShowMenu("preferences") - - if _in_replay: - - textbutton _("End Replay") action EndReplay(confirm=True) - - elif not main_menu: - - textbutton _("Main Menu") action MainMenu() - - textbutton _("About") action ShowMenu("about") - - if renpy.variant("pc") or (renpy.variant("web") and not renpy.variant("mobile")): - - ## Help isn't necessary or relevant to mobile devices. - textbutton _("Help") action ShowMenu("help") - - if renpy.variant("pc"): - - ## The quit button is banned on iOS and unnecessary on Android and - ## Web. - textbutton _("Quit") action Quit(confirm=not main_menu) - - -style navigation_button is gui_button -style navigation_button_text is gui_button_text - -style navigation_button: - size_group "navigation" - properties gui.button_properties("navigation_button") - -style navigation_button_text: - properties gui.button_text_properties("navigation_button") - - -## Main Menu screen ############################################################ -## -## Used to display the main menu when Ren'Py starts. -## -## https://www.renpy.org/doc/html/screen_special.html#main-menu - -screen main_menu(): - - ## This ensures that any other menu screen is replaced. - tag menu - - add gui.main_menu_background - - ## This empty frame darkens the main menu. - frame: - style "main_menu_frame" - - ## The use statement includes another screen inside this one. The actual - ## contents of the main menu are in the navigation screen. - use navigation - - if gui.show_name: - - vbox: - style "main_menu_vbox" - - text "[config.name!t]": - style "main_menu_title" - - text "[config.version]": - style "main_menu_version" - - -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") - - -## Game Menu screen ############################################################ -## -## This lays out the basic common structure of a game menu screen. It's called -## with the screen title, and displays the background, title, and navigation. -## -## The scroll parameter can be None, or one of "viewport" or "vpgrid". When -## this screen is intended to be used with one or more children, which are -## transcluded (placed) inside it. - -screen game_menu(title, scroll=None, yinitial=0.0): - - style_prefix "game_menu" - - if main_menu: - add gui.main_menu_background - else: - add gui.game_menu_background - - frame: - style "game_menu_outer_frame" - - hbox: - - ## Reserve space for the navigation section. - frame: - style "game_menu_navigation_frame" - - frame: - style "game_menu_content_frame" - - if scroll == "viewport": - - viewport: - yinitial yinitial - scrollbars "vertical" - mousewheel True - draggable True - pagekeys True - - side_yfill True - - vbox: - transclude - - elif scroll == "vpgrid": - - vpgrid: - cols 1 - yinitial yinitial - - scrollbars "vertical" - mousewheel True - draggable True - pagekeys True - - side_yfill True - - transclude - - else: - - transclude - - use navigation - - textbutton _("Return"): - style "return_button" - - action Return() - - label title - - if main_menu: - key "game_menu" action ShowMenu("main_menu") - - -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 45 - 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 - - -## About screen ################################################################ -## -## This screen gives credit and copyright information about the game and Ren'Py. -## -## There's nothing special about this screen, and hence it also serves as an -## example of how to make a custom screen. - -screen about(): - - tag menu - - ## This use statement includes the game_menu screen inside this one. The - ## vbox child is then included inside the viewport inside the game_menu - ## screen. - use game_menu(_("About"), scroll="viewport"): - - style_prefix "about" - - vbox: - - label "[config.name!t]" - text _("Version [config.version!t]\n") - - ## gui.about is usually set in options.rpy. - if gui.about: - text "[gui.about!t]\n" - - text _("Made with {a=https://www.renpy.org/}Ren'Py{/a} [renpy.version_only].\n\n[renpy.license!t]") - - -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 - - -## Load and Save screens ####################################################### -## -## These screens are responsible for letting the player save the game and load -## it again. Since they share nearly everything in common, both are implemented -## in terms of a third screen, file_slots. -## -## https://www.renpy.org/doc/html/screen_special.html#save https:// -## www.renpy.org/doc/html/screen_special.html#load - -screen save(): - - tag menu - - use file_slots(_("Save")) - - -screen load(): - - tag menu - - use file_slots(_("Load")) - - -screen file_slots(title): - - default page_name_value = FilePageNameInputValue(pattern=_("Page {}"), auto=_("Automatic saves"), quick=_("Quick saves")) - - use game_menu(title): - - fixed: - - ## This ensures the input will get the enter event before any of the - ## buttons do. - order_reverse True - - ## The page name, which can be edited by clicking on a button. - button: - style "page_label" - - key_events True - xalign 0.5 - action page_name_value.Toggle() - - input: - style "page_label_text" - value page_name_value - - ## The grid of file slots. - grid gui.file_slot_cols gui.file_slot_rows: - style_prefix "slot" - - xalign 0.5 - yalign 0.5 - - spacing gui.slot_spacing - - for i in range(gui.file_slot_cols * gui.file_slot_rows): - - $ slot = i + 1 - - button: - action FileAction(slot) - - has vbox - - add FileScreenshot(slot) xalign 0.5 - - text FileTime(slot, format=_("{#file_time}%A, %B %d %Y, %H:%M"), empty=_("empty slot")): - style "slot_time_text" - - text FileSaveName(slot): - style "slot_name_text" - - key "save_delete" action FileDelete(slot) - - ## Buttons to access other pages. - hbox: - style_prefix "page" - - xalign 0.5 - yalign 1.0 - - spacing gui.page_spacing - - textbutton _("<") action FilePagePrevious() - - if config.has_autosave: - textbutton _("{#auto_page}A") action FilePage("auto") - - if config.has_quicksave: - textbutton _("{#quick_page}Q") action FilePage("quick") - - ## range(1, 10) gives the numbers from 1 to 9. - for page in range(1, 10): - textbutton "[page]" action FilePage(page) - - textbutton _(">") action FilePageNext() - - -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") - - -## Preferences screen ########################################################## -## -## The preferences screen allows the player to configure the game to better suit -## themselves. -## -## https://www.renpy.org/doc/html/screen_special.html#preferences - -screen preferences(): - - tag menu - - use game_menu(_("Preferences"), scroll="viewport"): - - vbox: - - hbox: - box_wrap True - - if renpy.variant("pc") or renpy.variant("web"): - - vbox: - style_prefix "radio" - label _("Display") - textbutton _("Window") action Preference("display", "window") - textbutton _("Fullscreen") action Preference("display", "fullscreen") - - vbox: - style_prefix "check" - label _("Skip") - textbutton _("Unseen Text") action Preference("skip", "toggle") - textbutton _("After Choices") action Preference("after choices", "toggle") - textbutton _("Transitions") action InvertSelected(Preference("transitions", "toggle")) - - ## Additional vboxes of type "radio_pref" or "check_pref" can be - ## added here, to add additional creator-defined preferences. - - null height (4 * gui.pref_spacing) - - hbox: - style_prefix "slider" - box_wrap True - - vbox: - - label _("Text Speed") - - bar value Preference("text speed") - - label _("Auto-Forward Time") - - bar value Preference("auto-forward time") - - vbox: - - if config.has_music: - label _("Music Volume") - - hbox: - bar value Preference("music volume") - - if config.has_sound: - - label _("Sound Volume") - - hbox: - bar value Preference("sound volume") - - if config.sample_sound: - textbutton _("Test") action Play("sound", config.sample_sound) - - - if config.has_voice: - label _("Voice Volume") - - hbox: - bar value Preference("voice volume") - - if config.sample_voice: - textbutton _("Test") action Play("voice", config.sample_voice) - - if config.has_music or config.has_sound or config.has_voice: - null height gui.pref_spacing - - textbutton _("Mute All"): - action Preference("all mute", "toggle") - style "mute_all_button" - - -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 - - -## History screen ############################################################## -## -## This is a screen that displays the dialogue history to the player. While -## there isn't anything special about this screen, it does have to access the -## dialogue history stored in _history_list. -## -## https://www.renpy.org/doc/html/history.html - -screen history(): - - tag menu - - ## Avoid predicting this screen, as it can be very large. - predict False - - use game_menu(_("History"), scroll=("vpgrid" if gui.history_height else "viewport"), yinitial=1.0): - - style_prefix "history" - - for h in _history_list: - - window: - - ## This lays things out properly if history_height is None. - has fixed: - yfit True - - if h.who: - - label h.who: - style "history_name" - substitute False - - ## Take the color of the who text from the Character, if - ## set. - if "color" in h.who_args: - text_color h.who_args["color"] - - $ what = renpy.filter_text_tags(h.what, allow=gui.history_allow_tags) - text what: - substitute False - - if not _history_list: - label _("The dialogue history is empty.") - - -## This determines what tags are allowed to be displayed on the history screen. - -define gui.history_allow_tags = { "alt", "noalt" } - - -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_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 - - -## Help screen ################################################################# -## -## A screen that gives information about key and mouse bindings. It uses other -## screens (keyboard_help, mouse_help, and gamepad_help) to display the actual -## help. - -screen help(): - - tag menu - - default device = "keyboard" - - use game_menu(_("Help"), scroll="viewport"): - - style_prefix "help" - - vbox: - spacing 23 - - hbox: - - textbutton _("Keyboard") action SetScreenVariable("device", "keyboard") - textbutton _("Mouse") action SetScreenVariable("device", "mouse") - - if GamepadExists(): - textbutton _("Gamepad") action SetScreenVariable("device", "gamepad") - - if device == "keyboard": - use keyboard_help - elif device == "mouse": - use mouse_help - elif device == "gamepad": - use gamepad_help - - -screen keyboard_help(): - - hbox: - label _("Enter") - text _("Advances dialogue and activates the interface.") - - hbox: - label _("Space") - text _("Advances dialogue without selecting choices.") - - hbox: - label _("Arrow Keys") - text _("Navigate the interface.") - - hbox: - label _("Escape") - text _("Accesses the game menu.") - - hbox: - label _("Ctrl") - text _("Skips dialogue while held down.") - - hbox: - label _("Tab") - text _("Toggles dialogue skipping.") - - hbox: - label _("Page Up") - text _("Rolls back to earlier dialogue.") - - hbox: - label _("Page Down") - text _("Rolls forward to later dialogue.") - - hbox: - label "H" - text _("Hides the user interface.") - - hbox: - label "S" - text _("Takes a screenshot.") - - hbox: - label "V" - text _("Toggles assistive {a=https://www.renpy.org/l/voicing}self-voicing{/a}.") - - hbox: - label "Shift+A" - text _("Opens the accessibility menu.") - - -screen mouse_help(): - - hbox: - label _("Left Click") - text _("Advances dialogue and activates the interface.") - - hbox: - label _("Middle Click") - text _("Hides the user interface.") - - hbox: - label _("Right Click") - text _("Accesses the game menu.") - - hbox: - label _("Mouse Wheel Up\nClick Rollback Side") - text _("Rolls back to earlier dialogue.") - - hbox: - label _("Mouse Wheel Down") - text _("Rolls forward to later dialogue.") - - -screen gamepad_help(): - - hbox: - label _("Right Trigger\nA/Bottom Button") - text _("Advances dialogue and activates the interface.") - - hbox: - label _("Left Trigger\nLeft Shoulder") - text _("Rolls back to earlier dialogue.") - - hbox: - label _("Right Shoulder") - text _("Rolls forward to later dialogue.") - - - hbox: - label _("D-Pad, Sticks") - text _("Navigate the interface.") - - hbox: - label _("Start, Guide") - text _("Accesses the game menu.") - - hbox: - label _("Y/Top Button") - 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 - - - -################################################################################ -## Additional screens -################################################################################ - - -## Confirm screen ############################################################## -## -## The confirm screen is called when Ren'Py wants to ask the player a yes or no -## question. -## -## https://www.renpy.org/doc/html/screen_special.html#confirm - -screen confirm(message, yes_action, no_action): - - ## Ensure other screens do not get input while this screen is displayed. - modal True - - zorder 200 - - style_prefix "confirm" - - add "gui/overlay/confirm.png" - - frame: - - vbox: - xalign .5 - yalign .5 - spacing 45 - - label _(message): - style "confirm_prompt" - xalign 0.5 - - hbox: - xalign 0.5 - spacing 150 - - textbutton _("Yes") action yes_action - textbutton _("No") action no_action - - ## Right-click and escape answer "no". - 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") - - -## Skip indicator screen ####################################################### -## -## The skip_indicator screen is displayed to indicate that skipping is in -## progress. -## -## https://www.renpy.org/doc/html/screen_special.html#skip-indicator - -screen skip_indicator(): - - zorder 100 - style_prefix "skip" - - frame: - - hbox: - spacing 9 - - text _("Skipping") - - 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" - - -## This transform is used to blink the arrows one after another. -transform 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: - ## We have to use a font that has the BLACK RIGHT-POINTING SMALL TRIANGLE - ## glyph in it. - font "DejaVuSans.ttf" - - -## Notify screen ############################################################### -## -## The notify screen is used to show the player a message. (For example, when -## the game is quicksaved or a screenshot has been taken.) -## -## https://www.renpy.org/doc/html/screen_special.html#notify-screen - -screen notify(message): - - zorder 100 - style_prefix "notify" - - frame at notify_appear: - text "[message!tq]" - - timer 3.25 action Hide('notify') - - -transform 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") - - -## NVL screen ################################################################## -## -## This screen is used for NVL-mode dialogue and menus. -## -## https://www.renpy.org/doc/html/screen_special.html#nvl - - -screen nvl(dialogue, items=None): - - window: - style "nvl_window" - - has vbox: - spacing gui.nvl_spacing - - ## Displays dialogue in either a vpgrid or the vbox. - if gui.nvl_height: - - vpgrid: - cols 1 - yinitial 1.0 - - use nvl_dialogue(dialogue) - - else: - - use nvl_dialogue(dialogue) - - ## Displays the menu, if given. The menu may be displayed incorrectly if - ## config.narrator_menu is set to True. - 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 - - 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 - - -## This controls the maximum number of NVL-mode entries that can be displayed at -## once. -define 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") - - - -################################################################################ -## Mobile Variants -################################################################################ - -style pref_vbox: - variant "medium" - xsize 675 - -## Since a mouse may not be present, we replace the quick menu with a version -## that uses fewer and bigger buttons that are easier to touch. -screen quick_menu(): - variant "touch" - - zorder 100 - - 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 gui.scrollbar_size - 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 gui.slider_size - 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_vbox: - variant "small" - xsize None - -style slider_slider: - variant "small" - xsize 900 +################################################################################ +## Initialization +################################################################################ + +init offset = -1 + + +################################################################################ +## Styles +################################################################################ + +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 gui.scrollbar_size + 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) + + + +################################################################################ +## In-game screens +################################################################################ + + +## Say screen ################################################################## +## +## The say screen is used to display dialogue to the player. It takes two +## parameters, who and what, which are the name of the speaking character and +## the text to be displayed, respectively. (The who parameter can be None if no +## name is given.) +## +## This screen must create a text displayable with id "what", as Ren'Py uses +## this to manage text display. It can also create displayables with id "who" +## and id "window" to apply style properties. +## +## https://www.renpy.org/doc/html/screen_special.html#say + +screen say(who, what): + style_prefix "say" + + use quick_menu + + window: + id "window" + + if who is not None: + background Image("gui/textbox_name.png", xalign=0.5, yalign=1.0) + window: + id "namebox" + style "namebox" + text who id "who" + else: + background Image("gui/textbox.png", xalign=0.5, yalign=1.0) + + text what id "what" + + ## If there's a side image, display it above the text. Do not display on the + ## phone variant - there's no room. + if not renpy.variant("small"): + add SideImage() xalign 0.0 yalign 1.0 + + +## Make the namebox available for styling through the Character object. +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 + xoffset 0 + yoffset gui.window_yoffset + xcenter 0.5 + +style namebox: + xalign 0.5 + xpos gui.name_xpos + ypos gui.name_ypos + +style say_label: + properties gui.text_properties("name", accent=True) + xalign gui.name_xalign + yalign 0.5 + xanchor gui.name_xalign + +style say_dialogue: + properties gui.text_properties("dialogue") + + xpos gui.dialogue_xpos + xsize gui.dialogue_width + ypos gui.dialogue_ypos + + +## Input screen ################################################################ +## +## This screen is used to display renpy.input. The prompt parameter is used to +## pass a text prompt in. +## +## This screen must create an input displayable with id "input" to accept the +## various input parameters. +## +## https://www.renpy.org/doc/html/screen_special.html#input + +screen input(prompt): + style_prefix "input" + + window: + + vbox: + xalign gui.dialogue_text_xalign + xpos gui.dialogue_xpos + xsize gui.dialogue_width + ypos gui.dialogue_ypos + + text prompt style "input_prompt" + input id "input" + +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 + + +## Choice screen ############################################################### +## +## This screen is used to display the in-game choices presented by the menu +## statement. The one parameter, items, is a list of objects, each with caption +## and action fields. +## +## https://www.renpy.org/doc/html/screen_special.html#choice + +screen choice(items): + style_prefix "choice" + + vbox: + for i in items: + textbutton i.caption action i.action + + +## When this is true, menu captions will be spoken by the narrator. When false, +## menu captions will be displayed as empty buttons. +define 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") + + +## Quick Menu screen ########################################################### +## +## The quick menu is displayed in-game to provide easy access to the out-of-game +## menus. + +screen quick_button(filename, label, function): + button: + xsize 71 + ysize 71 + action function + if 'Return' in label or 'Back' in label or 'Menu' in label: + activate_sound "audio/ui/uiBack.wav" + else: + activate_sound "audio/ui/uiClick.wav" + fixed: + add filename xalign 0.5 yalign 0.5 zoom 1 + text label xalign 0.5 yalign 0.5 xanchor 0.5 size 22 style "quick_button_text" + +# label_functions is [ [ "label", function() ], [ "foobar", foobar() ], .. ] +# Reuse the same image string and keep things 'neat'. +screen quick_buttons(filename, label_functions): + for l_f in label_functions: + use quick_button(filename, l_f[0], l_f[1]) + +image colored_button = im.MatrixColor("gui/button/template_idle.png", im.matrix.hue(50)) +screen quick_menu(): + + ## Ensure this appears on top of other screens. + zorder 100 + if quick_menu: + window: + xpos 1.45 + ypos 1.012-0.0300 + vbox: + style_prefix "quick" + spacing 1 + + #use quick_buttons(colored_button, + use quick_buttons("gui/button/template_idle.png", + [ + [ "Skip", Skip() ], + [ "Auto", Preference("auto-forward", "toggle") ], + [ "Back", Rollback() ], + [ "Menu", ShowMenu("preferences") ] + ] ) + +screen quick_old_menu(): + + ## Ensure this appears on top of other screens. + zorder 100 + + if quick_menu: + + hbox: + style_prefix "quick" + + xalign 0.5 + yalign 1.0 + + textbutton _("Back") action Rollback() + textbutton _("History") action ShowMenu('history') + textbutton _("Skip") action Skip() alternate Skip(fast=True, confirm=True) + textbutton _("Auto") action Preference("auto-forward", "toggle") + textbutton _("Save") action ShowMenu('save') + textbutton _("Q.Save") action QuickSave() + textbutton _("Q.Load") action QuickLoad() + textbutton _("Prefs") action ShowMenu('preferences') + + +## This code ensures that the quick_menu screen is displayed in-game, whenever +## the player has not explicitly hidden the interface. +init python: + config.overlay_screens.append("quick_menu") + +default 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") + + +################################################################################ +## Main and Game Menu Screens +################################################################################ + +## Navigation screen ########################################################### +## +## This screen is included in the main and game menus, and provides navigation +## to other menus, and to start the game. + +screen navigation(): + + vbox: + style_prefix "navigation" + + xpos gui.navigation_xpos + yalign 0.5 + + spacing gui.navigation_spacing + + textbutton _("Preferences") action ShowMenu("preferences") + + textbutton _("About") action ShowMenu("about") + + if renpy.variant("pc") or (renpy.variant("web") and not renpy.variant("mobile")): + + ## Help isn't necessary or relevant to mobile devices. + textbutton _("Help") action ShowMenu("help") + + if renpy.variant("pc"): + + ## The quit button is banned on iOS and unnecessary on Android and + ## Web. + textbutton _("Quit") action Quit(confirm=not main_menu) + + +style navigation_button is gui_button +style navigation_button_text is gui_button_text + +style navigation_button: + size_group "navigation" + properties gui.button_properties("navigation_button") + +style navigation_button_text: + properties gui.button_text_properties("navigation_button") + + +## Main Menu screen ############################################################ +## +## Used to display the main menu when Ren'Py starts. +## +## https://www.renpy.org/doc/html/screen_special.html#main-menu + +screen main_menu(): + + ## This ensures that any other menu screen is replaced. + tag menu + + add gui.main_menu_background + + ## This empty frame darkens the main menu. + frame: + style "main_menu_frame" + + ## The use statement includes another screen inside this one. The actual + ## contents of the main menu are in the navigation screen. + use navigation + + if gui.show_name: + + vbox: + style "main_menu_vbox" + + text "[config.name!t]": + style "main_menu_title" + + text "[config.version]": + style "main_menu_version" + + +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") + + +## Game Menu screen ############################################################ +## +## This lays out the basic common structure of a game menu screen. It's called +## with the screen title, and displays the background, title, and navigation. +## +## The scroll parameter can be None, or one of "viewport" or "vpgrid". When +## this screen is intended to be used with one or more children, which are +## transcluded (placed) inside it. + +screen game_menu(title, scroll=None, yinitial=0.0): + + style_prefix "game_menu" + + if main_menu: + add gui.main_menu_background + else: + add gui.game_menu_background + + frame: + style "game_menu_outer_frame" + + hbox: + + ## Reserve space for the navigation section. + frame: + style "game_menu_navigation_frame" + + frame: + style "game_menu_content_frame" + + if scroll == "viewport": + + viewport: + yinitial yinitial + scrollbars "vertical" + mousewheel True + draggable True + pagekeys True + + side_yfill True + + vbox: + transclude + + elif scroll == "vpgrid": + + vpgrid: + cols 1 + yinitial yinitial + + scrollbars "vertical" + mousewheel True + draggable True + pagekeys True + + side_yfill True + + transclude + + else: + + transclude + + use navigation + + textbutton _("Return"): + style "return_button" + + action Return() + + label title + + if main_menu: + key "game_menu" action ShowMenu("main_menu") + + +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 45 + 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 + + +## About screen ################################################################ +## +## This screen gives credit and copyright information about the game and Ren'Py. +## +## There's nothing special about this screen, and hence it also serves as an +## example of how to make a custom screen. + +screen about(): + + tag menu + + ## This use statement includes the game_menu screen inside this one. The + ## vbox child is then included inside the viewport inside the game_menu + ## screen. + use game_menu(_("About"), scroll="viewport"): + + style_prefix "about" + + vbox: + + label "[config.name!t]" + text _("Version [config.version!t]\n") + + ## gui.about is usually set in options.rpy. + if gui.about: + text "[gui.about!t]\n" + + text _("Made with {a=https://www.renpy.org/}Ren'Py{/a} [renpy.version_only].\n\n[renpy.license!t]") + + +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 + + +## Load and Save screens ####################################################### +## +## These screens are responsible for letting the player save the game and load +## it again. Since they share nearly everything in common, both are implemented +## in terms of a third screen, file_slots. +## +## https://www.renpy.org/doc/html/screen_special.html#save https:// +## www.renpy.org/doc/html/screen_special.html#load + +screen save(): + + tag menu + + use file_slots(_("Save")) + + +screen load(): + + tag menu + + use file_slots(_("Load")) + + +screen file_slots(title): + + default page_name_value = FilePageNameInputValue(pattern=_("Page {}"), auto=_("Automatic saves"), quick=_("Quick saves")) + + use game_menu(title): + + fixed: + + ## This ensures the input will get the enter event before any of the + ## buttons do. + order_reverse True + + ## The page name, which can be edited by clicking on a button. + button: + style "page_label" + + key_events True + xalign 0.5 + action page_name_value.Toggle() + + input: + style "page_label_text" + value page_name_value + + ## The grid of file slots. + grid gui.file_slot_cols gui.file_slot_rows: + style_prefix "slot" + + xalign 0.5 + yalign 0.5 + + spacing gui.slot_spacing + + for i in range(gui.file_slot_cols * gui.file_slot_rows): + + $ slot = i + 1 + + button: + action FileAction(slot) + + has vbox + + add FileScreenshot(slot) xalign 0.5 + + text FileTime(slot, format=_("{#file_time}%A, %B %d %Y, %H:%M"), empty=_("empty slot")): + style "slot_time_text" + + text FileSaveName(slot): + style "slot_name_text" + + key "save_delete" action FileDelete(slot) + + ## Buttons to access other pages. + hbox: + style_prefix "page" + + xalign 0.5 + yalign 1.0 + + spacing gui.page_spacing + + textbutton _("<") action FilePagePrevious() + + if config.has_autosave: + textbutton _("{#auto_page}A") action FilePage("auto") + + if config.has_quicksave: + textbutton _("{#quick_page}Q") action FilePage("quick") + + ## range(1, 10) gives the numbers from 1 to 9. + for page in range(1, 10): + textbutton "[page]" action FilePage(page) + + textbutton _(">") action FilePageNext() + + +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") + + +## Preferences screen ########################################################## +## +## The preferences screen allows the player to configure the game to better suit +## themselves. +## +## https://www.renpy.org/doc/html/screen_special.html#preferences + +screen preferences(): + + tag menu + + use game_menu(_("Preferences"), scroll="viewport"): + + vbox: + + hbox: + box_wrap True + + if renpy.variant("pc") or renpy.variant("web"): + + vbox: + style_prefix "radio" + label _("Display") + textbutton _("Window") action Preference("display", "window") + textbutton _("Fullscreen") action Preference("display", "fullscreen") + + vbox: + style_prefix "radio" + label _("Rollback Side") + textbutton _("Disable") action Preference("rollback side", "disable") + textbutton _("Left") action Preference("rollback side", "left") + textbutton _("Right") action Preference("rollback side", "right") + + vbox: + style_prefix "check" + label _("Skip") + textbutton _("Unseen Text") action Preference("skip", "toggle") + textbutton _("After Choices") action Preference("after choices", "toggle") + textbutton _("Transitions") action InvertSelected(Preference("transitions", "toggle")) + + ## Additional vboxes of type "radio_pref" or "check_pref" can be + ## added here, to add additional creator-defined preferences. + + null height (4 * gui.pref_spacing) + + hbox: + style_prefix "slider" + box_wrap True + + vbox: + + label _("Text Speed") + + bar value Preference("text speed") + + label _("Auto-Forward Time") + + bar value Preference("auto-forward time") + + vbox: + + if config.has_music: + label _("Music Volume") + + hbox: + bar value Preference("music volume") + + if config.has_sound: + + label _("Sound Volume") + + hbox: + bar value Preference("sound volume") + + if config.sample_sound: + textbutton _("Test") action Play("sound", config.sample_sound) + + + if config.has_voice: + label _("Voice Volume") + + hbox: + bar value Preference("voice volume") + + if config.sample_voice: + textbutton _("Test") action Play("voice", config.sample_voice) + + if config.has_music or config.has_sound or config.has_voice: + null height gui.pref_spacing + + textbutton _("Mute All"): + action Preference("all mute", "toggle") + style "mute_all_button" + + +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 + + +## History screen ############################################################## +## +## This is a screen that displays the dialogue history to the player. While +## there isn't anything special about this screen, it does have to access the +## dialogue history stored in _history_list. +## +## https://www.renpy.org/doc/html/history.html + +screen history(): + + tag menu + + ## Avoid predicting this screen, as it can be very large. + predict False + + use game_menu(_("History"), scroll=("vpgrid" if gui.history_height else "viewport"), yinitial=1.0): + + style_prefix "history" + + for h in _history_list: + + window: + + ## This lays things out properly if history_height is None. + has fixed: + yfit True + + if h.who: + + label h.who: + style "history_name" + substitute False + + ## Take the color of the who text from the Character, if + ## set. + if "color" in h.who_args: + text_color h.who_args["color"] + + $ what = renpy.filter_text_tags(h.what, allow=gui.history_allow_tags) + text what: + substitute False + + if not _history_list: + label _("The dialogue history is empty.") + + +## This determines what tags are allowed to be displayed on the history screen. + +define gui.history_allow_tags = { "alt", "noalt" } + + +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 + + +## Help screen ################################################################# +## +## A screen that gives information about key and mouse bindings. It uses other +## screens (keyboard_help, mouse_help, and gamepad_help) to display the actual +## help. + +screen help(): + + tag menu + + default device = "keyboard" + + use game_menu(_("Help"), scroll="viewport"): + + style_prefix "help" + + vbox: + spacing 23 + + hbox: + + textbutton _("Keyboard") action SetScreenVariable("device", "keyboard") + textbutton _("Mouse") action SetScreenVariable("device", "mouse") + + if GamepadExists(): + textbutton _("Gamepad") action SetScreenVariable("device", "gamepad") + + if device == "keyboard": + use keyboard_help + elif device == "mouse": + use mouse_help + elif device == "gamepad": + use gamepad_help + + +screen keyboard_help(): + + hbox: + label _("Enter") + text _("Advances dialogue and activates the interface.") + + hbox: + label _("Space") + text _("Advances dialogue without selecting choices.") + + hbox: + label _("Arrow Keys") + text _("Navigate the interface.") + + hbox: + label _("Escape") + text _("Accesses the game menu.") + + hbox: + label _("Ctrl") + text _("Skips dialogue while held down.") + + hbox: + label _("Tab") + text _("Toggles dialogue skipping.") + + hbox: + label _("Page Up") + text _("Rolls back to earlier dialogue.") + + hbox: + label _("Page Down") + text _("Rolls forward to later dialogue.") + + hbox: + label "H" + text _("Hides the user interface.") + + hbox: + label "S" + text _("Takes a screenshot.") + + hbox: + label "V" + text _("Toggles assistive {a=https://www.renpy.org/l/voicing}self-voicing{/a}.") + + hbox: + label "Shift+A" + text _("Opens the accessibility menu.") + + +screen mouse_help(): + + hbox: + label _("Left Click") + text _("Advances dialogue and activates the interface.") + + hbox: + label _("Middle Click") + text _("Hides the user interface.") + + hbox: + label _("Right Click") + text _("Accesses the game menu.") + + hbox: + label _("Mouse Wheel Up\nClick Rollback Side") + text _("Rolls back to earlier dialogue.") + + hbox: + label _("Mouse Wheel Down") + text _("Rolls forward to later dialogue.") + + +screen gamepad_help(): + + hbox: + label _("Right Trigger\nA/Bottom Button") + text _("Advances dialogue and activates the interface.") + + hbox: + label _("Left Trigger\nLeft Shoulder") + text _("Rolls back to earlier dialogue.") + + hbox: + label _("Right Shoulder") + text _("Rolls forward to later dialogue.") + + + hbox: + label _("D-Pad, Sticks") + text _("Navigate the interface.") + + hbox: + label _("Start, Guide") + text _("Accesses the game menu.") + + hbox: + label _("Y/Top Button") + 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 + + + +################################################################################ +## Additional screens +################################################################################ + + +## Confirm screen ############################################################## +## +## The confirm screen is called when Ren'Py wants to ask the player a yes or no +## question. +## +## https://www.renpy.org/doc/html/screen_special.html#confirm + +screen confirm(message, yes_action, no_action): + + ## Ensure other screens do not get input while this screen is displayed. + modal True + + zorder 200 + + style_prefix "confirm" + + add "gui/overlay/confirm.png" + + frame: + + vbox: + xalign .5 + yalign .5 + spacing 45 + + label _(message): + style "confirm_prompt" + xalign 0.5 + + hbox: + xalign 0.5 + spacing 150 + + textbutton _("Yes") action yes_action + textbutton _("No") action no_action + + ## Right-click and escape answer "no". + 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") + + +## Skip indicator screen ####################################################### +## +## The skip_indicator screen is displayed to indicate that skipping is in +## progress. +## +## https://www.renpy.org/doc/html/screen_special.html#skip-indicator + +screen skip_indicator(): + + zorder 100 + style_prefix "skip" + + frame: + + hbox: + spacing 9 + + text _("Skipping") + + 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" + + +## This transform is used to blink the arrows one after another. +transform 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: + ## We have to use a font that has the BLACK RIGHT-POINTING SMALL TRIANGLE + ## glyph in it. + font "DejaVuSans.ttf" + + +## Notify screen ############################################################### +## +## The notify screen is used to show the player a message. (For example, when +## the game is quicksaved or a screenshot has been taken.) +## +## https://www.renpy.org/doc/html/screen_special.html#notify-screen + +screen notify(message): + + zorder 100 + style_prefix "notify" + + frame at notify_appear: + text "[message!tq]" + + timer 3.25 action Hide('notify') + + +transform 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") + + +## NVL screen ################################################################## +## +## This screen is used for NVL-mode dialogue and menus. +## +## https://www.renpy.org/doc/html/screen_special.html#nvl + + +screen nvl(dialogue, items=None): + + window: + style "nvl_window" + + has vbox: + spacing gui.nvl_spacing + + ## Displays dialogue in either a vpgrid or the vbox. + if gui.nvl_height: + + vpgrid: + cols 1 + yinitial 1.0 + + use nvl_dialogue(dialogue) + + else: + + use nvl_dialogue(dialogue) + + ## Displays the menu, if given. The menu may be displayed incorrectly if + ## config.narrator_menu is set to True, as it is above. + 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 + + 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 + + +## This controls the maximum number of NVL-mode entries that can be displayed at +## once. +define 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") + + + +################################################################################ +## Mobile Variants +################################################################################ + +style pref_vbox: + variant "medium" + xsize 675 + +## Since a mouse may not be present, we replace the quick menu with a version +## that uses fewer and bigger buttons that are easier to touch. +screen quick_menu(): + variant "touch" + + zorder 100 + + 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 gui.scrollbar_size + 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 gui.slider_size + 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_vbox: + variant "small" + xsize None + +style slider_slider: + variant "small" + xsize 900 diff --git a/game/screens.rpyc b/game/screens.rpyc deleted file mode 100644 index 80a6ef0..0000000 Binary files a/game/screens.rpyc and /dev/null differ diff --git a/game/script.rpyc b/game/script.rpyc deleted file mode 100644 index 6ad5ea1..0000000 Binary files a/game/script.rpyc and /dev/null differ diff --git a/game/tl/None/common.rpymc b/game/tl/None/common.rpymc deleted file mode 100644 index 12aad21..0000000 Binary files a/game/tl/None/common.rpymc and /dev/null differ diff --git a/log.txt b/log.txt deleted file mode 100644 index 638f790..0000000 --- a/log.txt +++ /dev/null @@ -1,50 +0,0 @@ -Thu Aug 4 18:49:58 2022 -Windows-10-10.0.19044 -Ren'Py 8.0.1.22070801 - - -Bootstrap to the start of init.init took 0.05s -Early init took 0.00s -Loader init took 0.02s -Loading error handling took 0.02s -Loading script took 0.11s -Loading save slot metadata. took 0.02s -Loading persistent took 0.00s -Faled to initialize steam: FileNotFoundError("Could not find module 'D:\\Other Shitty Programs\\renpy-8.0.0-sdk\\lib\\py3-windows-x86_64\\steam_api64.dll' (or one of its dependencies). Try using the full path with constructor syntax.") -Running init code took 0.05s -Loading analysis data took 0.02s -Analyze and compile ATL took 0.00s -Index archives took 0.00s -Dump and make backups. took 0.05s -Cleaning cache took 0.00s -Making clean stores took 0.00s -Initial gc. took 0.02s -DPI scale factor: 1.000000 -nvdrs: Loaded, about to disable thread optimizations. -nvdrs: Disabled thread optimizations. -Creating interface object took 0.27s -Cleaning stores took 0.00s -Init translation took 0.03s -Build styles took 0.00s -Load screen analysis took 0.02s -Analyze screens took 0.00s -Save screen analysis took 0.00s -Prepare screens took 0.05s -Save pyanalysis. took 0.00s -Save bytecode. took 0.00s -Running _start took 0.00s -Performance test: -Interface start took 0.07s - -Initializing gl2 renderer: -primary display bounds: (0, 0, 1920, 1080) -swap interval: 1 frames -Windowed mode. -Vendor: "b'NVIDIA Corporation'" -Renderer: b'NVIDIA GeForce GTX 1050 Ti/PCIe/SSE2' -Version: b'4.6.0 NVIDIA 512.95' -Display Info: None -Screen sizes: virtual=(1920, 1080) physical=(1739, 978) drawable=(1739, 978) -Maximum texture size: 4096x4096 -controller: '030000006d0400001dc2000000007200' 'Controller (Gamepad F310)' 1 -controller: '030000006d0400001dc2000000007200' 'Controller (Gamepad F310)' 1 diff --git a/traceback.txt b/traceback.txt deleted file mode 100644 index 4989132..0000000 --- a/traceback.txt +++ /dev/null @@ -1,37 +0,0 @@ -I'm sorry, but an uncaught exception occurred. - -While running game code: - File "game/script.rpy", line 25, in script - define L = Character('Lyra', base, color="#ffffff", who_outlines=[(gui.name_text_thickness, '#000000')], **kwargs) - File "game/script.rpy", line 25, in script - define L = Character('Lyra', base, color="#ffffff", who_outlines=[(gui.name_text_thickness, '#000000')], **kwargs) - File "game/script.rpy", line 25, in - define L = Character('Lyra', base, color="#ffffff", who_outlines=[(gui.name_text_thickness, '#000000')], **kwargs) -AttributeError: 'StoreModule' object has no attribute 'name_text_thickness' - --- Full Traceback ------------------------------------------------------------ - -Full traceback: - File "D:\Other Shitty Programs\renpy-8.0.0-sdk\renpy\bootstrap.py", line 274, in bootstrap - renpy.main.main() - File "D:\Other Shitty Programs\renpy-8.0.0-sdk\renpy\main.py", line 558, in main - renpy.game.context().run(node) - File "game/script.rpy", line 25, in script - define L = Character('Lyra', base, color="#ffffff", who_outlines=[(gui.name_text_thickness, '#000000')], **kwargs) - File "/home/tom/ab/renpy-build/tmp/install.linux-x86_64/lib/python3.9/site-packages/future/utils/__init__.py", line 441, in raise_ - File "game/script.rpy", line 25, in script - define L = Character('Lyra', base, color="#ffffff", who_outlines=[(gui.name_text_thickness, '#000000')], **kwargs) - File "D:\Other Shitty Programs\renpy-8.0.0-sdk\renpy\ast.py", line 2441, in execute - self.set() - File "D:\Other Shitty Programs\renpy-8.0.0-sdk\renpy\ast.py", line 2455, in set - value = renpy.python.py_eval_bytecode(self.code.bytecode) - File "D:\Other Shitty Programs\renpy-8.0.0-sdk\renpy\python.py", line 1073, in py_eval_bytecode - return eval(bytecode, globals, locals) - File "game/script.rpy", line 25, in - define L = Character('Lyra', base, color="#ffffff", who_outlines=[(gui.name_text_thickness, '#000000')], **kwargs) -AttributeError: 'StoreModule' object has no attribute 'name_text_thickness' - -Windows-10-10.0.19044 AMD64 -Ren'Py 8.0.1.22070801 -sexo_space_lady_game 1.0 -Thu Aug 4 18:48:02 2022