# Copyright 2004-2019 Tom Rothamel # # Permission is hereby granted, free of charge, to any person # obtaining a copy of this software and associated documentation files # (the "Software"), to deal in the Software without restriction, # including without limitation the rights to use, copy, modify, merge, # publish, distribute, sublicense, and/or sell copies of the Software, # and to permit persons to whom the Software is furnished to do so, # subject to the following conditions: # # The above copyright notice and this permission notice shall be # included in all copies or substantial portions of the Software. # # THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, # EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF # MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND # NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE # LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION # OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION # WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. init -1900 python: # This is called when script_version is set, to immediately # run code in response to a script_version change. def _set_script_version(version): if version is None: return import os if "RENPY_EXPERIMENTAL" in os.environ: return if version <= (5, 6, 0): config.check_properties = False if version <= (6, 5, 0): layout.compat() if version <= (6, 9, 1): store.library = store.config if version <= (6, 9, 3): # Before 6.10, these were positions, rather than transforms. store.left = Position(xalign=0.0) store.center = Position(xalign=0.5) store.truecenter = Position(xalign=0.5, yalign=0.5) store.right = Position(xalign=1.0) store.offscreenleft = Position(xpos=0.0, xanchor=1.0) store.offscreenright = Position(xpos=1.0, xanchor=0.0) if version <= (6, 10, 2): # Before 6.11, we used the image placement to handle # the location of things on the screen. style.image_placement.xpos = 0.5 style.image_placement.ypos = 1.0 style.image_placement.xanchor = 0.5 style.image_placement.yanchor = 1.0 config.transform_uses_child_position = False config.default_transform = None config.start_scene_black = True if version <= (6, 11, 0): config.movetransition_respects_offsets = False if version <= (6, 11, 2): config.imagereference_respects_position = True config.predict_screens = False config.choice_screen_chosen = False if version <= (6, 12, 0): config.keep_running_transform = False config.image_attributes = False config.new_character_image_argument = False config.save_physical_size = False if version <= (6, 12, 2): style.default.language = "western" style.default.layout = "greedy" config.new_substitutions = False config.broken_line_spacing = True if (6, 12, 2) < version <= (6, 13, 8): config.old_substitutions = False if version <= (6, 13, 12): global MoveTransition MoveTransition = OldMoveTransition define.move_transitions = define.old_move_transitions define.move_transitions("move", 0.5) define.move_transitions("ease", 0.5, _ease_time_warp, _ease_in_time_warp, _ease_out_time_warp) if version <= (6, 14, 1): config.key_repeat = None if version <= (6, 15, 7): MusicRoom.loop_compat = True if version <= (6, 17, 0): config.keymap['toggle_music'] = [ 'm' ] if version <= (6, 17, 4): config.default_sound_loop = False if version <= (6, 18, 0): config.predict_screen_statements = False config.transition_screens = False if version <= (6, 99, 1): config.images_directory = None config.preserve_zorder = False if version <= (6, 99, 5): config.wrap_shown_transforms = False config.search_prefixes = [ "" ] if version <= (6, 99, 6): config.dynamic_images = False if version <= (6, 99, 8): if config.developer == "auto": config.developer = False config.play_channel = "sound" if version <= (6, 99, 8): config.help_screen = None config.confirm_screen = False if version <= (6, 99, 10): config.new_translate_order = False config.old_say_args = True if "call screen" in config.window_auto_hide: config.window_auto_hide.remove("call screen") config.quit_action = ui.gamemenus("_quit_prompt") config.enforce_window_max_size = False config.splashscreen_suppress_overlay = False if version <= (6, 99, 12, 3): config.prefix_viewport_scrollbar_styles = False if version <= (6, 99, 12, 4): config.hyperlink_inherit_size = False config.automatic_polar_motion = False config.position_viewport_side = False config.nw_voice = False config.atl_one_frame = False config.keep_show_layer_state = False config.atl_multiple_events = False if version <= (6, 99, 13): config.fast_unhandled_event = False config.gc_thresholds = (700, 10, 10) config.idle_gc_count = 10000 config.scrollbar_child_size = False if version <= (6, 99, 14): config.image_cache_size_mb = None config.image_cache_size = 16 config.cache_surfaces = True config.optimize_texture_bounds = False if version <= (6, 99, 14, 3): config.late_images_scan = True config.dissolve_force_alpha = False config.replay_movie_sprites = False if version <= (7, 0, 0): config.reject_relative = False config.say_attributes_use_side_image = False if version <= (7, 1, 0): config.menu_showed_window = True config.window_auto_show = [ "say" ] config.window_auto_hide = [ "scene", "call screen" ] if version <= (7, 1, 1): config.menu_actions = False if version <= (7, 2, 2): config.say_attribute_transition_callback_attrs = False config.keep_side_render_order = False if version <= (7, 3, 0): config.force_sound = False if version <= (7, 3, 2): config.audio_directory = None config.early_start_store = True # The version of Ren'Py this script is intended for, or # None if it's intended for the current version. config.script_version = None python early hide: try: import ast script_version = renpy.file("script_version.txt").read() script_version = ast.literal_eval(script_version) if script_version <= (7, 2, 2): config.keyword_after_python = True except: pass init -1000 python hide: try: import ast script_version = renpy.file("script_version.txt").read() config.script_version = ast.literal_eval(script_version) renpy.write_log("Set script version to: %r", config.script_version) except: pass # 6.99.12.4 didn't add script_version.txt, so we read it from renpy/__init__.py # if that exists. try: if config.script_version is None: init_py = os.path.join(renpy.config.basedir, "renpy", "__init__.py") with open(init_py, "r") as f: data = f.read() if "version_tuple = (6, 99, 12, 4, vc_version)" in data: config.script_version = (6, 99, 12, 4) renpy.write_log("Set script version to: %r (alternate path)", config.script_version) except: pass init 1900 python hide: # This returns true if the script_version is <= the # script_version supplied. Give it the last script version # where an old version was used. def compat(x, y, z): return config.script_version and config.script_version <= (x, y, z) # Compat for changes to with-callback. if compat(5, 4, 5): if config.with_callback: def compat_with_function(trans, paired, old=config.with_callback): old(trans) return trans config.with_callback = compat_with_function if not config.sound: config.has_sound = False config.has_music = False config.has_voice = False # Compat for SFont recoloring. if compat(5, 1, 1): config.recolor_sfonts = False if compat(5, 5, 4): config.implicit_with_none = False # Compat for changes to button look. if compat(5, 5, 4): style.button.setdefault(xpos=0.5, xanchor=0.5) style.menu_button.clear() style.menu_button_text.clear() if compat(5, 6, 6): config.reject_midi = False if compat(6, 2, 0): config.reject_backslash = False if compat(6, 9, 0): style.motion.clear() if compat(6, 10, 2): if 'screens' not in config.layers: config.layers.append('screens') if "Fullscreen" in config.translations: fs = _("Fullscreen") config.translations.setdefault("Fullscreen 4:3", fs + " 4:3") config.translations.setdefault("Fullscreen 16:9", fs + " 16:9") config.translations.setdefault("Fullscreen 16:10", fs + " 16:10") for i in layout.compat_funcs: i() if config.hyperlink_styler or config.hyperlink_callback or config.hyperlink_focus: style.default.hyperlink_functions = (config.hyperlink_styler, config.hyperlink_callback, config.hyperlink_focus) if compat(6, 15, 7): config.has_quicksave = False config.quit_action = ui.gamemenus("_confirm_quit") config.default_afm_enable = None