commit 23382aebb92237c4ba3c94f38d9b221f20e5ad03 Author: mirivlad Date: Tue Apr 9 17:26:33 2024 +0800 Приключение на 5 минут. Зайти и выйти diff --git a/errors.txt b/errors.txt new file mode 100644 index 0000000..59c4f99 --- /dev/null +++ b/errors.txt @@ -0,0 +1,10 @@ +I'm sorry, but errors were detected in your script. Please correct the +errors listed below, and try again. + + +File "game/script.rpy", line 69: expected statement. + rubperhour = 3000 + ^ + +Ren'Py Version: Ren'Py 8.2.1.24030407 +Tue Apr 9 17:10:30 2024 diff --git a/game/audio/Anemoia - System #1.mp3 b/game/audio/Anemoia - System #1.mp3 new file mode 100644 index 0000000..36a67ef Binary files /dev/null and b/game/audio/Anemoia - System #1.mp3 differ diff --git a/game/audio/Anemoia - System #2.mp3 b/game/audio/Anemoia - System #2.mp3 new file mode 100644 index 0000000..d5c22a4 Binary files /dev/null and b/game/audio/Anemoia - System #2.mp3 differ diff --git a/game/audio/Anemoia - System #3.mp3 b/game/audio/Anemoia - System #3.mp3 new file mode 100644 index 0000000..f511b34 Binary files /dev/null and b/game/audio/Anemoia - System #3.mp3 differ diff --git a/game/audio/Anemoia - System #4.mp3 b/game/audio/Anemoia - System #4.mp3 new file mode 100644 index 0000000..190dfa0 Binary files /dev/null and b/game/audio/Anemoia - System #4.mp3 differ diff --git a/game/audio/AudioCoffee Band - Motivational Corporate.mp3 b/game/audio/AudioCoffee Band - Motivational Corporate.mp3 new file mode 100644 index 0000000..e7fc11c Binary files /dev/null and b/game/audio/AudioCoffee Band - Motivational Corporate.mp3 differ diff --git a/game/audio/BoDleasons - Long Night.mp3.mp3 b/game/audio/BoDleasons - Long Night.mp3.mp3 new file mode 100644 index 0000000..0e0aa85 Binary files /dev/null and b/game/audio/BoDleasons - Long Night.mp3.mp3 differ diff --git a/game/audio/Jon Shuemaker - Complex Emotions.mp3 b/game/audio/Jon Shuemaker - Complex Emotions.mp3 new file mode 100644 index 0000000..d2f2eb2 Binary files /dev/null and b/game/audio/Jon Shuemaker - Complex Emotions.mp3 differ diff --git a/game/audio/Jon Shuemaker - Dreamscape.mp3 b/game/audio/Jon Shuemaker - Dreamscape.mp3 new file mode 100644 index 0000000..5dd3029 Binary files /dev/null and b/game/audio/Jon Shuemaker - Dreamscape.mp3 differ diff --git a/game/audio/Jon Shuemaker - Long Ride Home.mp3 b/game/audio/Jon Shuemaker - Long Ride Home.mp3 new file mode 100644 index 0000000..31f2d54 Binary files /dev/null and b/game/audio/Jon Shuemaker - Long Ride Home.mp3 differ diff --git a/game/audio/Sharperheart - The Place of That Way.mp3 b/game/audio/Sharperheart - The Place of That Way.mp3 new file mode 100644 index 0000000..3b6cec5 Binary files /dev/null and b/game/audio/Sharperheart - The Place of That Way.mp3 differ diff --git a/game/audio/Six Umbrellas - Metropolis.mp3 b/game/audio/Six Umbrellas - Metropolis.mp3 new file mode 100644 index 0000000..a010b55 Binary files /dev/null and b/game/audio/Six Umbrellas - Metropolis.mp3 differ diff --git a/game/audio/Six Umbrellas - Orange From Above.mp3 b/game/audio/Six Umbrellas - Orange From Above.mp3 new file mode 100644 index 0000000..f293f2e Binary files /dev/null and b/game/audio/Six Umbrellas - Orange From Above.mp3 differ diff --git a/game/audio/UNIVERSFIELD - Orion Nebula 2.mp3 b/game/audio/UNIVERSFIELD - Orion Nebula 2.mp3 new file mode 100644 index 0000000..4392a2b Binary files /dev/null and b/game/audio/UNIVERSFIELD - Orion Nebula 2.mp3 differ diff --git a/game/audio/UNIVERSFIELD - Sad Piano and Violin.mp3 b/game/audio/UNIVERSFIELD - Sad Piano and Violin.mp3 new file mode 100644 index 0000000..028e46d Binary files /dev/null and b/game/audio/UNIVERSFIELD - Sad Piano and Violin.mp3 differ diff --git a/game/audio/UNIVERSFIELD - Space Journey Through Nebulae and Galaxy.mp3 b/game/audio/UNIVERSFIELD - Space Journey Through Nebulae and Galaxy.mp3 new file mode 100644 index 0000000..78bdb21 Binary files /dev/null and b/game/audio/UNIVERSFIELD - Space Journey Through Nebulae and Galaxy.mp3 differ diff --git a/game/audio/Viscid - Deep Space.mp3 b/game/audio/Viscid - Deep Space.mp3 new file mode 100644 index 0000000..1861105 Binary files /dev/null and b/game/audio/Viscid - Deep Space.mp3 differ diff --git a/game/audio/email_notify.mp3 b/game/audio/email_notify.mp3 new file mode 100644 index 0000000..a4f417c Binary files /dev/null and b/game/audio/email_notify.mp3 differ diff --git a/game/audio/voide - tech.mp3 b/game/audio/voide - tech.mp3 new file mode 100644 index 0000000..8de1aa9 Binary files /dev/null and b/game/audio/voide - tech.mp3 differ diff --git a/game/cache/bytecode-39.rpyb b/game/cache/bytecode-39.rpyb new file mode 100644 index 0000000..7b3b1e1 Binary files /dev/null and b/game/cache/bytecode-39.rpyb differ diff --git a/game/cache/py3analysis.rpyb b/game/cache/py3analysis.rpyb new file mode 100644 index 0000000..63431a7 Binary files /dev/null and b/game/cache/py3analysis.rpyb differ diff --git a/game/cache/screens.rpyb b/game/cache/screens.rpyb new file mode 100644 index 0000000..0b1f63a Binary files /dev/null and b/game/cache/screens.rpyb differ diff --git a/game/cache/shaders.txt b/game/cache/shaders.txt new file mode 100644 index 0000000..535f1e1 --- /dev/null +++ b/game/cache/shaders.txt @@ -0,0 +1,9 @@ +renpy.solid +renpy.dissolve renpy.geometry +renpy.ftl +renpy.geometry renpy.solid +renpy.dissolve renpy.dissolve +renpy.alpha renpy.texture +renpy.texture +renpy.geometry renpy.texture +renpy.alpha renpy.geometry renpy.texture diff --git a/game/gui.rpy b/game/gui.rpy new file mode 100644 index 0000000..e0f3f48 --- /dev/null +++ b/game/gui.rpy @@ -0,0 +1,486 @@ +################################################################################ +## Инициализация +################################################################################ + +## Оператор init offset повышает приоритет инициализации в этом файле над +## другими файлами, из-за чего инициализация здесь запускается первее. +init offset = -2 + +## Вызываю gui.init, чтобы сбросить стили, чувствительные к стандартным +## значениям, и задать высоту и ширину окна игры. +init python: + gui.init(1920, 1080) + +## Включить проверку на недопустимые или нестабильные свойства в экранах или +## преобразованиях +define config.check_conflicting_properties = True + + +################################################################################ +## Конфигурируемые Переменные GUI +################################################################################ + + +## Цвета ####################################################################### +## +## Цвета текста в интерфейсе. + +## Акцентный цвет используется в заголовках и подчёркнутых текстах. +define gui.accent_color = '#66cc00' + +## Цвет, используемый в текстовой кнопке, когда она не выбрана и не наведена. +define gui.idle_color = '#888888' + +## Small_color используется в маленьком тексте, который должен быть ярче/темнее, +## для того, чтобы выделяться. +define gui.idle_small_color = '#aaaaaa' + +## Цвет, используемых в кнопках и панелях, когда они наведены. +define gui.hover_color = '#a3e066' + +## Цвет, используемый текстовой кнопкой, когда она выбрана, но не наведена. +## Кнопка может быть выбрана, если это текущий экран или текущее значение +## настройки. +define gui.selected_color = '#ffffff' + +## Цвет, используемый текстовой кнопкой, когда она не может быть выбрана. +define gui.insensitive_color = '#8888887f' + +## Цвета, используемые для частей панелей, которые не заполняются. Они +## используются не напрямую, а только при воссоздании файлов изображений. +define gui.muted_color = '#285100' +define gui.hover_muted_color = '#3d7a00' + +## Цвета, используемые в тексте диалогов и выборов. +define gui.text_color = '#ffffff' +define gui.interface_text_color = '#ffffff' + + +## Шрифты и их размеры ######################################################### + +## Шрифт, используемый внутриигровым текстом. +define gui.text_font = "terminus.ttf" + +## Шрифт, используемый именами персонажей. +define gui.name_text_font = "terminus.ttf" + +## Шрифт, используемый текстом вне игры. +define gui.interface_text_font = "terminus.ttf" + +## Размер нормального текста диалога. +define gui.text_size = 33 + +## Размер имён персонажей. +define gui.name_text_size = 45 + +## Размер текста в пользовательском интерфейсе. +define gui.interface_text_size = 33 + +## Размер заголовков в пользовательском интерфейсе. +define gui.label_text_size = 36 + +## Размер текста на экране уведомлений. +define gui.notify_text_size = 24 + +## Размер заголовка игры. +define gui.title_text_size = 75 + + +## Главное и игровое меню. ##################################################### + +## Изображения, используемые в главном и игровом меню. +define gui.main_menu_background = "gui/main_menu.png" +define gui.game_menu_background = "gui/game_menu.png" + + +## Диалог ###################################################################### +## +## Эти переменные контролируют, как диалог появляется на отдельной строчке. + +## Высота текстового окна, содержащего диалог. +define gui.textbox_height = 278 + +## Местоположение текстового окна по вертикали экрана. 0.0 — верх, 0.5 — центр и +## 1.0 — низ. +define gui.textbox_yalign = 1.0 + + +## Местоположение имени говорящего персонажа по отношению к текстовому окну. +## Это могут быть целые значения в пикселях слева и сверху от начала окна или +## процентное отношение, например, 0.5 для центрирования. +define gui.name_xpos = 360 +define gui.name_ypos = 0 + +## Горизонтальное выравнивание имени персонажа. Это может быть 0.0 для +## левоориентированного, 0.5 для центрированного и 1.0 для правоориентированного +## выравнивания. +define gui.name_xalign = 0.0 + +## Ширина, высота и границы окна, содержащего имя персонажа или None, для +## автоматической размерки. +define gui.namebox_width = None +define gui.namebox_height = None + +## Границы окна, содержащего имя персонажа слева, сверху, справа и снизу по +## порядку. +define gui.namebox_borders = Borders(5, 5, 5, 5) + +## Если True, фон текстового окна будет моститься (расширяться по эффекту +## плитки). Если False, фон текстового окна будет фиксированным. +define gui.namebox_tile = False + + +## Размещение диалога по отношению к текстовому окну. Это могут быть целые +## значения в пикселях слева и сверху от текстового окна или процентное +## отношение, например, 0.5 для центрирования. +define gui.dialogue_xpos = 402 +define gui.dialogue_ypos = 75 + +## Максимальная ширина текста диалога в пикселях. +define gui.dialogue_width = 1116 + +## Горизонтальное выравнивание текста диалога. Это может быть 0.0 для +## левоориентированного, 0.5 для центрированного и 1.0 для правоориентированного +## выравнивания. +define gui.dialogue_text_xalign = 0.0 + + +## Кнопки ###################################################################### +## +## Эти переменные, вместе с файлами изображений в gui/button, контролируют +## аспекты того, как отображаются кнопки. + +## Ширина и высота кнопки в пикселях. Если None, Ren'Py самостоятельно +## рассчитает размер. +define gui.button_width = None +define gui.button_height = None + +## Границы каждой стороны кнопки в порядке слева, сверху, справа, снизу. +define gui.button_borders = Borders(6, 6, 6, 6) + +## Если True, фон изображения будет моститься. Если False, фон изображения будет +## линейно масштабирован. +define gui.button_tile = False + +## Шрифт, используемый кнопкой. +define gui.button_text_font = gui.interface_text_font + +## Размер текста, используемый кнопкой. +define gui.button_text_size = gui.interface_text_size + +## Цвет текста в кнопке в различных состояниях. +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 + +## Горизонтальное выравнивание текста в кнопке. (0.0 — лево, 0.5 — по центру, +## 1.0 — право). +define gui.button_text_xalign = 0.0 + + +## Эти переменные переписывают настройки различных видов кнопок. Пожалуйста, +## посмотрите документацию по gui для просмотра всех вариаций кнопок и для чего +## каждая из них нужна. +## +## Эти настройки используются стандартным интерфейсом: + +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 + +## Вы также можете добавить собственные настройки, добавляя правильно +## именованные переменные. Например, вы можете раскомментировать следующую +## строчку, чтобы установить ширину кнопок навигации. + +# define gui.navigation_button_width = 250 + + +## Кнопки Выбора ############################################################### +## +## Кнопки выбора используются во внутриигровых меню. + +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 = '#888888' +define gui.choice_button_text_hover_color = "#ffffff" +define gui.choice_button_text_insensitive_color = '#8888887f' + + +## Кнопки Слотов ############################################################### +## +## Кнопка слотов — особый вид кнопки. Она содержит миниатюру и текст, +## описывающий слот сохранения. Слот сохранения использует файлы из gui/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 + +## Ширина и высота миниатюры, используемой слотом сохранения. +define config.thumbnail_width = 384 +define config.thumbnail_height = 216 + +## Количество колонок и рядов в таблице слотов. +define gui.file_slot_cols = 3 +define gui.file_slot_rows = 2 + + +## Позиционирование и Интервалы ################################################ +## +## Эти переменные контролируют позиционирование и интервалы различных элементов +## пользовательского интерфейса. + +## Местоположение левого края навигационных кнопок по отношению к левому краю +## экрана. +define gui.navigation_xpos = 60 + +## Вертикальная позиция индикатора пропуска. +define gui.skip_ypos = 15 + +## Вертикальная позиция экрана уведомлений. +define gui.notify_ypos = 68 + +## Интервал между выборами в меню. +define gui.choice_spacing = 33 + +## Кнопки в секции навигации главного и игрового меню. +define gui.navigation_spacing = 6 + +## Контролирует интервал между настройками. +define gui.pref_spacing = 15 + +## Контролирует интервал между кнопками настройки. +define gui.pref_button_spacing = 0 + +## Интервал между кнопками страниц. +define gui.page_spacing = 0 + +## Интервал между слотами. +define gui.slot_spacing = 15 + +## Позиция текста главного меню. +define gui.main_menu_text_xalign = 1.0 + + +## Рамки ####################################################################### +## +## Эти переменные контролируют вид рамок, содержащих компоненты +## пользовательского интерфейса, когда наложения или окна не представлены. + +## Генерируем рамки. +define gui.frame_borders = Borders(6, 6, 6, 6) + +## Рамки, используемые в частях экрана подтверждения. +define gui.confirm_frame_borders = Borders(60, 60, 60, 60) + +## Рамки, используемые в частях экрана пропуска. +define gui.skip_frame_borders = Borders(24, 8, 75, 8) + +## Рамки, используемые в частях экрана уведомлений. +define gui.notify_frame_borders = Borders(24, 8, 60, 8) + +## Должны ли фоны рамок моститься? +define gui.frame_tile = False + + +## Панели, Полосы прокрутки и Ползунки ######################################### +## +## Эти настройки контролируют вид и размер панелей, полос прокрутки и ползунков. +## +## Стандартный GUI использует только ползунки и вертикальные полосы прокрутки. +## Все остальные полосы используются только в новосозданных экранах. + +## Высота горизонтальных панелей, полос прокрутки и ползунков. Ширина +## вертикальных панелей, полос прокрутки и ползунков. +define gui.bar_size = 38 +define gui.scrollbar_size = 18 +define gui.slider_size = 38 + +## True, если изображения панелей должны моститься. False, если они должны быть +## линейно масштабированы. +define gui.bar_tile = False +define gui.scrollbar_tile = False +define gui.slider_tile = False + +## Горизонтальные границы. +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) + +## Вертикальные границы. +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) + +## Что делать с непрокручиваемыми полосами прокрутки в интерфейсе. "hide" прячет +## их, а None их показывает. +define gui.unscrollable = "hide" + + +## История ##################################################################### +## +## Экран истории показывает диалог, который игрок уже прошёл. + +## Количество диалоговых блоков истории, которые Ren'Py будет хранить. +define config.history_length = 250 + +## Высота доступных записей на экране истории, или None, чтобы задать высоту в +## зависимости от производительности. +define gui.history_height = 210 + +## Дополнительное пространство добавляемое между записями экрана истории. +define gui.history_spacing = 0 + +## Местоположение, ширина и выравнивание заголовка, показывающего имя говорящего +## персонажа. +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 + +## Местоположение, ширина и выравнивание диалогового текста. +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 ################################################################### +## +## Экран режима NVL показывает диалог NVL персонажей. + +## Границы фона окна NVL. +define gui.nvl_borders = Borders(0, 15, 0, 30) + +## Максимальное число показываемых строк в режиме NVL. Когда количество строчек +## начинает превышать это значение, старые строчки очищаются. +define gui.nvl_list_length = 6 + +## Высота доступных строчек в режиме NVL. Установите на None, чтобы строчки +## динамически регулировали свою высоту. +define gui.nvl_height = 173 + +## Интервал между строчками в режиме NVL, если gui.nvl_height имеет значение +## None, а также между строчками и меню режима NVL. +define gui.nvl_spacing = 15 + +## Местоположение, ширина и выравнивание заголовка, показывающего имя говорящего +## персонажа. +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 + +## Местоположение, ширина и выравнивание диалогового текста. +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 + +## Местоположение, ширина и выравнивание текста nvl_thought (текст от лица +## персонажа nvl_narrator). +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 + +## Местоположение кнопок меню NVL. +define gui.nvl_button_xpos = 675 +define gui.nvl_button_xalign = 0.0 + + +## Локализация ################################################################# + +## Эта настройка контролирует доступ к разрыву линий. Стандартная настройка +## подходит для большинства языков. Список доступных значений можно найти на +## https://www.renpy.org/doc/html/style_properties.html#style-property-language + +define gui.language = "unicode" + + +################################################################################ +## Мобильные устройства +################################################################################ + +init python: + + ## Этот параметр увеличивает размер быстрых кнопок, чтобы сделать их + ## доступнее для нажатия на планшетах и телефонах. + @gui.variant + def touch(): + + gui.quick_button_borders = Borders(60, 21, 60, 0) + + ## Это изменяет размеры и интервалы различных элементов GUI, чтобы + ## убедиться, что они будут лучше видны на телефонах. + @gui.variant + def small(): + + ## Размеры шрифтов. + 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 + + ## Регулирует местоположение текстового окна. + gui.textbox_height = 360 + gui.name_xpos = 120 + gui.dialogue_xpos = 135 + gui.dialogue_width = 1650 + + ## Изменяет размеры и интервалы различных объектов. + 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 + + ## Местоположение кнопок слотов. + gui.file_slot_cols = 2 + gui.file_slot_rows = 2 + + ## Режим NVL. + 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 new file mode 100644 index 0000000..e59512d Binary files /dev/null and b/game/gui.rpyc differ diff --git a/game/gui/bar/bottom.png b/game/gui/bar/bottom.png new file mode 100644 index 0000000..61a3f85 Binary files /dev/null and b/game/gui/bar/bottom.png differ diff --git a/game/gui/bar/left.png b/game/gui/bar/left.png new file mode 100644 index 0000000..b43d459 Binary files /dev/null and b/game/gui/bar/left.png differ diff --git a/game/gui/bar/right.png b/game/gui/bar/right.png new file mode 100644 index 0000000..3eec811 Binary files /dev/null and b/game/gui/bar/right.png differ diff --git a/game/gui/bar/top.png b/game/gui/bar/top.png new file mode 100644 index 0000000..c7e8d2e Binary files /dev/null and b/game/gui/bar/top.png differ diff --git a/game/gui/bubble.png b/game/gui/bubble.png new file mode 100644 index 0000000..3b23ff3 Binary files /dev/null and b/game/gui/bubble.png differ diff --git a/game/gui/button/check_foreground.png b/game/gui/button/check_foreground.png new file mode 100644 index 0000000..4113f1a Binary files /dev/null and b/game/gui/button/check_foreground.png differ diff --git a/game/gui/button/check_selected_foreground.png b/game/gui/button/check_selected_foreground.png new file mode 100644 index 0000000..564e721 Binary files /dev/null and b/game/gui/button/check_selected_foreground.png differ diff --git a/game/gui/button/choice_hover_background.png b/game/gui/button/choice_hover_background.png new file mode 100644 index 0000000..99d2362 Binary files /dev/null and b/game/gui/button/choice_hover_background.png differ diff --git a/game/gui/button/choice_idle_background.png b/game/gui/button/choice_idle_background.png new file mode 100644 index 0000000..bfae13c Binary files /dev/null and b/game/gui/button/choice_idle_background.png differ diff --git a/game/gui/button/hover_background.png b/game/gui/button/hover_background.png new file mode 100644 index 0000000..266d53b Binary files /dev/null and b/game/gui/button/hover_background.png differ diff --git a/game/gui/button/idle_background.png b/game/gui/button/idle_background.png new file mode 100644 index 0000000..266d53b Binary files /dev/null and b/game/gui/button/idle_background.png differ diff --git a/game/gui/button/quick_hover_background.png b/game/gui/button/quick_hover_background.png new file mode 100644 index 0000000..0ecc7c9 Binary files /dev/null and b/game/gui/button/quick_hover_background.png differ diff --git a/game/gui/button/quick_idle_background.png b/game/gui/button/quick_idle_background.png new file mode 100644 index 0000000..0ecc7c9 Binary files /dev/null and b/game/gui/button/quick_idle_background.png differ diff --git a/game/gui/button/radio_foreground.png b/game/gui/button/radio_foreground.png new file mode 100644 index 0000000..4113f1a Binary files /dev/null and b/game/gui/button/radio_foreground.png differ diff --git a/game/gui/button/radio_selected_foreground.png b/game/gui/button/radio_selected_foreground.png new file mode 100644 index 0000000..564e721 Binary files /dev/null and b/game/gui/button/radio_selected_foreground.png differ diff --git a/game/gui/button/slot_hover_background.png b/game/gui/button/slot_hover_background.png new file mode 100644 index 0000000..d56d12b Binary files /dev/null and b/game/gui/button/slot_hover_background.png differ diff --git a/game/gui/button/slot_idle_background.png b/game/gui/button/slot_idle_background.png new file mode 100644 index 0000000..3f89aca Binary files /dev/null and b/game/gui/button/slot_idle_background.png differ diff --git a/game/gui/frame.png b/game/gui/frame.png new file mode 100644 index 0000000..ea7bc00 Binary files /dev/null and b/game/gui/frame.png differ diff --git a/game/gui/game_menu.png b/game/gui/game_menu.png new file mode 100644 index 0000000..a8859aa Binary files /dev/null and b/game/gui/game_menu.png differ diff --git a/game/gui/main_menu.png b/game/gui/main_menu.png new file mode 100644 index 0000000..fb01e85 Binary files /dev/null and b/game/gui/main_menu.png differ diff --git a/game/gui/namebox.png b/game/gui/namebox.png new file mode 100644 index 0000000..c24135c Binary files /dev/null and b/game/gui/namebox.png differ diff --git a/game/gui/notify.png b/game/gui/notify.png new file mode 100644 index 0000000..780c311 Binary files /dev/null and b/game/gui/notify.png differ diff --git a/game/gui/nvl.png b/game/gui/nvl.png new file mode 100644 index 0000000..7bbc928 Binary files /dev/null and b/game/gui/nvl.png differ diff --git a/game/gui/overlay/confirm.png b/game/gui/overlay/confirm.png new file mode 100644 index 0000000..05591f2 Binary files /dev/null and b/game/gui/overlay/confirm.png differ diff --git a/game/gui/overlay/game_menu (1-я копия).png b/game/gui/overlay/game_menu (1-я копия).png new file mode 100644 index 0000000..183894b Binary files /dev/null and b/game/gui/overlay/game_menu (1-я копия).png differ diff --git a/game/gui/overlay/game_menu.png b/game/gui/overlay/game_menu.png new file mode 100644 index 0000000..f977b7e Binary files /dev/null and b/game/gui/overlay/game_menu.png differ diff --git a/game/gui/overlay/main_menu.png b/game/gui/overlay/main_menu.png new file mode 100644 index 0000000..4ead8ed Binary files /dev/null and b/game/gui/overlay/main_menu.png differ diff --git a/game/gui/phone/bar/bottom.png b/game/gui/phone/bar/bottom.png new file mode 100644 index 0000000..61a3f85 Binary files /dev/null and b/game/gui/phone/bar/bottom.png differ diff --git a/game/gui/phone/bar/left.png b/game/gui/phone/bar/left.png new file mode 100644 index 0000000..b43d459 Binary files /dev/null and b/game/gui/phone/bar/left.png differ diff --git a/game/gui/phone/bar/right.png b/game/gui/phone/bar/right.png new file mode 100644 index 0000000..3eec811 Binary files /dev/null and b/game/gui/phone/bar/right.png differ diff --git a/game/gui/phone/bar/top.png b/game/gui/phone/bar/top.png new file mode 100644 index 0000000..c7e8d2e Binary files /dev/null and b/game/gui/phone/bar/top.png differ diff --git a/game/gui/phone/button/check_foreground.png b/game/gui/phone/button/check_foreground.png new file mode 100644 index 0000000..c334a43 Binary files /dev/null and b/game/gui/phone/button/check_foreground.png differ diff --git a/game/gui/phone/button/check_selected_foreground.png b/game/gui/phone/button/check_selected_foreground.png new file mode 100644 index 0000000..612b857 Binary files /dev/null and b/game/gui/phone/button/check_selected_foreground.png differ diff --git a/game/gui/phone/button/choice_hover_background.png b/game/gui/phone/button/choice_hover_background.png new file mode 100644 index 0000000..99d2362 Binary files /dev/null and b/game/gui/phone/button/choice_hover_background.png differ diff --git a/game/gui/phone/button/choice_idle_background.png b/game/gui/phone/button/choice_idle_background.png new file mode 100644 index 0000000..bfae13c Binary files /dev/null and b/game/gui/phone/button/choice_idle_background.png differ diff --git a/game/gui/phone/button/hover_background.png b/game/gui/phone/button/hover_background.png new file mode 100644 index 0000000..6264b8b Binary files /dev/null and b/game/gui/phone/button/hover_background.png differ diff --git a/game/gui/phone/button/idle_background.png b/game/gui/phone/button/idle_background.png new file mode 100644 index 0000000..6264b8b Binary files /dev/null and b/game/gui/phone/button/idle_background.png differ diff --git a/game/gui/phone/button/radio_foreground.png b/game/gui/phone/button/radio_foreground.png new file mode 100644 index 0000000..c334a43 Binary files /dev/null and b/game/gui/phone/button/radio_foreground.png differ diff --git a/game/gui/phone/button/radio_selected_foreground.png b/game/gui/phone/button/radio_selected_foreground.png new file mode 100644 index 0000000..612b857 Binary files /dev/null and b/game/gui/phone/button/radio_selected_foreground.png differ diff --git a/game/gui/phone/button/slot_hover_background.png b/game/gui/phone/button/slot_hover_background.png new file mode 100644 index 0000000..d56d12b Binary files /dev/null and b/game/gui/phone/button/slot_hover_background.png differ diff --git a/game/gui/phone/button/slot_idle_background.png b/game/gui/phone/button/slot_idle_background.png new file mode 100644 index 0000000..3f89aca Binary files /dev/null and b/game/gui/phone/button/slot_idle_background.png differ diff --git a/game/gui/phone/nvl.png b/game/gui/phone/nvl.png new file mode 100644 index 0000000..20e4250 Binary files /dev/null and b/game/gui/phone/nvl.png differ diff --git a/game/gui/phone/overlay/game_menu.png b/game/gui/phone/overlay/game_menu.png new file mode 100644 index 0000000..501bc4e Binary files /dev/null and b/game/gui/phone/overlay/game_menu.png differ diff --git a/game/gui/phone/overlay/main_menu.png b/game/gui/phone/overlay/main_menu.png new file mode 100644 index 0000000..6fefd2d Binary files /dev/null and b/game/gui/phone/overlay/main_menu.png differ diff --git a/game/gui/phone/scrollbar/horizontal_hover_bar.png b/game/gui/phone/scrollbar/horizontal_hover_bar.png new file mode 100644 index 0000000..93f46f4 Binary files /dev/null and b/game/gui/phone/scrollbar/horizontal_hover_bar.png differ diff --git a/game/gui/phone/scrollbar/horizontal_hover_thumb.png b/game/gui/phone/scrollbar/horizontal_hover_thumb.png new file mode 100644 index 0000000..f0935f6 Binary files /dev/null and b/game/gui/phone/scrollbar/horizontal_hover_thumb.png differ diff --git a/game/gui/phone/scrollbar/horizontal_idle_bar.png b/game/gui/phone/scrollbar/horizontal_idle_bar.png new file mode 100644 index 0000000..949de15 Binary files /dev/null and b/game/gui/phone/scrollbar/horizontal_idle_bar.png differ diff --git a/game/gui/phone/scrollbar/horizontal_idle_thumb.png b/game/gui/phone/scrollbar/horizontal_idle_thumb.png new file mode 100644 index 0000000..cd93fba Binary files /dev/null and b/game/gui/phone/scrollbar/horizontal_idle_thumb.png differ diff --git a/game/gui/phone/scrollbar/vertical_hover_bar.png b/game/gui/phone/scrollbar/vertical_hover_bar.png new file mode 100644 index 0000000..b038340 Binary files /dev/null and b/game/gui/phone/scrollbar/vertical_hover_bar.png differ diff --git a/game/gui/phone/scrollbar/vertical_hover_thumb.png b/game/gui/phone/scrollbar/vertical_hover_thumb.png new file mode 100644 index 0000000..99f1624 Binary files /dev/null and b/game/gui/phone/scrollbar/vertical_hover_thumb.png differ diff --git a/game/gui/phone/scrollbar/vertical_idle_bar.png b/game/gui/phone/scrollbar/vertical_idle_bar.png new file mode 100644 index 0000000..53f12fb Binary files /dev/null and b/game/gui/phone/scrollbar/vertical_idle_bar.png differ diff --git a/game/gui/phone/scrollbar/vertical_idle_thumb.png b/game/gui/phone/scrollbar/vertical_idle_thumb.png new file mode 100644 index 0000000..9d359ff Binary files /dev/null and b/game/gui/phone/scrollbar/vertical_idle_thumb.png differ diff --git a/game/gui/phone/slider/horizontal_hover_bar.png b/game/gui/phone/slider/horizontal_hover_bar.png new file mode 100644 index 0000000..8f8294a Binary files /dev/null and b/game/gui/phone/slider/horizontal_hover_bar.png differ diff --git a/game/gui/phone/slider/horizontal_hover_thumb.png b/game/gui/phone/slider/horizontal_hover_thumb.png new file mode 100644 index 0000000..eed496b Binary files /dev/null and b/game/gui/phone/slider/horizontal_hover_thumb.png differ diff --git a/game/gui/phone/slider/horizontal_idle_bar.png b/game/gui/phone/slider/horizontal_idle_bar.png new file mode 100644 index 0000000..8e0dc68 Binary files /dev/null and b/game/gui/phone/slider/horizontal_idle_bar.png differ diff --git a/game/gui/phone/slider/horizontal_idle_thumb.png b/game/gui/phone/slider/horizontal_idle_thumb.png new file mode 100644 index 0000000..7195b53 Binary files /dev/null and b/game/gui/phone/slider/horizontal_idle_thumb.png differ diff --git a/game/gui/phone/slider/vertical_hover_bar.png b/game/gui/phone/slider/vertical_hover_bar.png new file mode 100644 index 0000000..d450dfc Binary files /dev/null and b/game/gui/phone/slider/vertical_hover_bar.png differ diff --git a/game/gui/phone/slider/vertical_hover_thumb.png b/game/gui/phone/slider/vertical_hover_thumb.png new file mode 100644 index 0000000..f1c5e22 Binary files /dev/null and b/game/gui/phone/slider/vertical_hover_thumb.png differ diff --git a/game/gui/phone/slider/vertical_idle_bar.png b/game/gui/phone/slider/vertical_idle_bar.png new file mode 100644 index 0000000..2ae9980 Binary files /dev/null and b/game/gui/phone/slider/vertical_idle_bar.png differ diff --git a/game/gui/phone/slider/vertical_idle_thumb.png b/game/gui/phone/slider/vertical_idle_thumb.png new file mode 100644 index 0000000..0c0d8aa Binary files /dev/null and b/game/gui/phone/slider/vertical_idle_thumb.png differ diff --git a/game/gui/phone/textbox.png b/game/gui/phone/textbox.png new file mode 100644 index 0000000..48d8703 Binary files /dev/null and b/game/gui/phone/textbox.png differ diff --git a/game/gui/scrollbar/horizontal_hover_bar.png b/game/gui/scrollbar/horizontal_hover_bar.png new file mode 100644 index 0000000..93f46f4 Binary files /dev/null and b/game/gui/scrollbar/horizontal_hover_bar.png differ diff --git a/game/gui/scrollbar/horizontal_hover_thumb.png b/game/gui/scrollbar/horizontal_hover_thumb.png new file mode 100644 index 0000000..f0935f6 Binary files /dev/null and b/game/gui/scrollbar/horizontal_hover_thumb.png differ diff --git a/game/gui/scrollbar/horizontal_idle_bar.png b/game/gui/scrollbar/horizontal_idle_bar.png new file mode 100644 index 0000000..949de15 Binary files /dev/null and b/game/gui/scrollbar/horizontal_idle_bar.png differ diff --git a/game/gui/scrollbar/horizontal_idle_thumb.png b/game/gui/scrollbar/horizontal_idle_thumb.png new file mode 100644 index 0000000..cd93fba Binary files /dev/null and b/game/gui/scrollbar/horizontal_idle_thumb.png differ diff --git a/game/gui/scrollbar/vertical_hover_bar.png b/game/gui/scrollbar/vertical_hover_bar.png new file mode 100644 index 0000000..b038340 Binary files /dev/null and b/game/gui/scrollbar/vertical_hover_bar.png differ diff --git a/game/gui/scrollbar/vertical_hover_thumb.png b/game/gui/scrollbar/vertical_hover_thumb.png new file mode 100644 index 0000000..99f1624 Binary files /dev/null and b/game/gui/scrollbar/vertical_hover_thumb.png differ diff --git a/game/gui/scrollbar/vertical_idle_bar.png b/game/gui/scrollbar/vertical_idle_bar.png new file mode 100644 index 0000000..53f12fb Binary files /dev/null and b/game/gui/scrollbar/vertical_idle_bar.png differ diff --git a/game/gui/scrollbar/vertical_idle_thumb.png b/game/gui/scrollbar/vertical_idle_thumb.png new file mode 100644 index 0000000..9d359ff Binary files /dev/null and b/game/gui/scrollbar/vertical_idle_thumb.png differ diff --git a/game/gui/skip.png b/game/gui/skip.png new file mode 100644 index 0000000..51235e8 Binary files /dev/null and b/game/gui/skip.png differ diff --git a/game/gui/slider/horizontal_hover_bar.png b/game/gui/slider/horizontal_hover_bar.png new file mode 100644 index 0000000..cf77afd Binary files /dev/null and b/game/gui/slider/horizontal_hover_bar.png differ diff --git a/game/gui/slider/horizontal_hover_thumb.png b/game/gui/slider/horizontal_hover_thumb.png new file mode 100644 index 0000000..0794f0a Binary files /dev/null and b/game/gui/slider/horizontal_hover_thumb.png differ diff --git a/game/gui/slider/horizontal_idle_bar.png b/game/gui/slider/horizontal_idle_bar.png new file mode 100644 index 0000000..3eec811 Binary files /dev/null and b/game/gui/slider/horizontal_idle_bar.png differ diff --git a/game/gui/slider/horizontal_idle_thumb.png b/game/gui/slider/horizontal_idle_thumb.png new file mode 100644 index 0000000..9c314bb Binary files /dev/null and b/game/gui/slider/horizontal_idle_thumb.png differ diff --git a/game/gui/slider/vertical_hover_bar.png b/game/gui/slider/vertical_hover_bar.png new file mode 100644 index 0000000..c7778fc Binary files /dev/null and b/game/gui/slider/vertical_hover_bar.png differ diff --git a/game/gui/slider/vertical_hover_thumb.png b/game/gui/slider/vertical_hover_thumb.png new file mode 100644 index 0000000..cf42f24 Binary files /dev/null and b/game/gui/slider/vertical_hover_thumb.png differ diff --git a/game/gui/slider/vertical_idle_bar.png b/game/gui/slider/vertical_idle_bar.png new file mode 100644 index 0000000..c7e8d2e Binary files /dev/null and b/game/gui/slider/vertical_idle_bar.png differ diff --git a/game/gui/slider/vertical_idle_thumb.png b/game/gui/slider/vertical_idle_thumb.png new file mode 100644 index 0000000..2ec2ae0 Binary files /dev/null and b/game/gui/slider/vertical_idle_thumb.png differ diff --git a/game/gui/textbox.png b/game/gui/textbox.png new file mode 100644 index 0000000..1cd5cfd Binary files /dev/null and b/game/gui/textbox.png differ diff --git a/game/gui/thoughtbubble.png b/game/gui/thoughtbubble.png new file mode 100644 index 0000000..8d5d44b Binary files /dev/null and b/game/gui/thoughtbubble.png differ diff --git a/game/gui/window_icon.png b/game/gui/window_icon.png new file mode 100644 index 0000000..e8511da Binary files /dev/null and b/game/gui/window_icon.png differ diff --git a/game/images/Scenes/root_room.jpg b/game/images/Scenes/root_room.jpg new file mode 100644 index 0000000..dab00c5 Binary files /dev/null and b/game/images/Scenes/root_room.jpg differ diff --git a/game/images/Scenes/root_room.png b/game/images/Scenes/root_room.png new file mode 100644 index 0000000..ac05351 Binary files /dev/null and b/game/images/Scenes/root_room.png differ diff --git a/game/images/monitor.png b/game/images/monitor.png new file mode 100644 index 0000000..c277b7a Binary files /dev/null and b/game/images/monitor.png differ diff --git a/game/options.rpy b/game/options.rpy new file mode 100644 index 0000000..c00a881 --- /dev/null +++ b/game/options.rpy @@ -0,0 +1,211 @@ +## Данный файл содержит настройки, способные изменить вашу игру. +## +## Строки, начинающиеся с двух '#' — комментарии, и вы не должны их +## раскомментировать. Строки, начинающиеся с одной '#' — комментированный код, +## который вы можете раскомментировать, если посчитаете это нужным. + + +## Основное #################################################################### + +## Читаемое название игры. Используется при установке стандартного заголовка +## окна, показывается в интерфейсе и отчётах об ошибках. +## +## Символы "_()", окружающие название, отмечают его как пригодное для перевода. + +define config.name = _("Sleeping Root") + + +## Определяет, показывать ли заголовок, данный выше, на экране главного меню. +## Установите на False, чтобы спрятать заголовок. + +define gui.show_name = True + + +## Версия игры. + +define config.version = "1.0" + + +## Текст, помещённый в экран "Об игре". Поместите текст между тройными скобками. +## Для отделения абзацев оставляйте между ними пустую строку. + +define gui.about = _p(""" +""") + + +## Короткое название игры, используемое для исполняемых файлов и директорий при +## постройке дистрибутивов. Оно должно содержать текст формата ASCII и не должно +## содержать пробелы, двоеточия и точки с запятой. + +define build.name = "SleepingRoot" + + +## Звуки и музыка ############################################################## + +## Эти три переменные управляют, среди прочего, тем, какие микшеры показываются +## игроку по умолчанию. Установка одной из них в False скроет соответствующий +## микшер. + +define config.has_sound = True +define config.has_music = True +define config.has_voice = True + + +## Чтобы разрешить игроку тестировать громкость на звуковом или голосовом +## каналах, раскомментируйте строчку и настройте пример звука для прослушивания. + +# define config.sample_sound = "sample-sound.ogg" +# define config.sample_voice = "sample-voice.ogg" + + +## Раскомментируйте следующую строчку, чтобы настроить аудиофайл, который будет +## проигрываться в главном меню. Этот файл продолжит проигрываться во время +## игры, если не будет остановлен, или не начнёт проигрываться другой аудиофайл. + +define config.main_menu_music = "UNIVERSFIELD - Orion Nebula 2.mp3" + + +## Переходы #################################################################### +## +## Эти переменные задают переходы, используемые в различных событиях. Каждая +## переменная должна задавать переход или None, чтобы указать на то, что переход +## не должен использоваться. + +## Вход и выход в игровое меню. + +define config.enter_transition = dissolve +define config.exit_transition = dissolve + + +## Переход между экранами игрового меню. + +define config.intra_transition = dissolve + + +## Переход, используемый после загрузки слота сохранения. + +define config.after_load_transition = None + + +## Используется при входе в главное меню после того, как игра закончится. + +define config.end_game_transition = None + + +## Переменная, устанавливающая переход, когда старт игры не существует. Вместо +## неё используйте функцию with после показа начальной сценки. + + +## Управление окнами ########################################################### +## +## Эта строка контролирует, когда появляется диалоговое окно. Если "show" — оно +## всегда показано. Если "hide" — оно показывается, только когда представлен +## диалог. Если "auto" — окно скрыто до появления оператора scene и показывается +## при появлении диалога. +## +## После начала игры этот параметр можно изменить с помощью "window show", +## "window hide" и "window auto". + +define config.window = "auto" + + +## Переходы, используемые при показе и скрытии диалогового окна + +define config.window_show_transition = Dissolve(.2) +define config.window_hide_transition = Dissolve(.2) + + +## Стандартные настройки ####################################################### + +## Контролирует стандартную скорость текста. По умолчанию, это 0 — мгновенно, +## в то время как любая другая цифра — это количество символов, печатаемых в +## секунду. + +default preferences.text_cps = 0 + + +## Стандартная задержка авточтения. Большие значения означают долгие ожидания, а +## от 0 до 30 — вполне допустимый диапазон. + +default preferences.afm_time = 15 + + +## Директория сохранений ####################################################### +## +## Контролирует зависимое от платформы место, куда Ren'Py будет складывать файлы +## сохранения этой игры. Файлы сохранений будут храниться в: +## +## Windows: %APPDATA\RenPy\ +## +## Macintosh: $HOME/Library/RenPy/ +## +## Linux: $HOME/.renpy/. +## +## Этот параметр обычно не должен изменяться, а если и изменился, должен быть +## текстовой строчкой, а не выражением. + +define config.save_directory = "SleepingRoot-1712640516" + + +## Иконка ###################################################################### +## +## Иконка, показываемая на панели задач или на dock. + +define config.window_icon = "gui/window_icon.png" + + +## Настройка Дистрибутива ###################################################### +## +## Эта секция контролирует, как Ren'Py строит дистрибутивные файлы из вашего +## проекта. + +init python: + + ## Следующие функции берут образцы файлов. Образцы файлов не учитывают + ## регистр и соответствующе зависят от директории проекта (base), с или без + ## учёта /, задающей директорию. Если обнаруживается множество одноимённых + ## файлов, то используется только первый. + ## + ## Инструкция: + ## + ## / — разделитель директорий. + ## + ## * включает в себя все символы, исключая разделитель директорий. + ## + ## ** включает в себя все символы, включая разделитель директорий. + ## + ## Например, "*.txt" берёт все файлы формата txt из директории base, "game/ + ## **.ogg" берёт все файлы ogg из директории game и всех поддиректорий, а + ## "**.psd" берёт все файлы psd из любого места проекта. + + ## Классифицируйте файлы как None, чтобы исключить их из дистрибутивов. + + build.classify('**~', None) + build.classify('**.bak', None) + build.classify('**/.**', None) + build.classify('**/#**', None) + build.classify('**/thumbs.db', None) + + ## Чтобы архивировать файлы, классифицируйте их, например, как 'archive'. + + # build.classify('game/**.png', 'archive') + # build.classify('game/**.jpg', 'archive') + + ## Файлы, соответствующие образцам документации, дублируются в приложениях + ## Mac, чтобы они появлялись и в приложении, и в zip архиве. + + build.documentation('*.html') + build.documentation('*.txt') + + +## Для совершения покупок в приложении требуется лицензионный ключ Google Play. +## Его можно найти в консоли разработчика Google Play в разделе "Монетизация" > +## "Настройка монетизации" > "Лицензирование". + +# define build.google_play_key = "..." + + +## Имя пользователя и название проекта, ассоциированные с проектом на itch.io, +## разделённые дробью. + +# define build.itch_project = "renpytom/test-project" diff --git a/game/options.rpyc b/game/options.rpyc new file mode 100644 index 0000000..e9f1dcf Binary files /dev/null and b/game/options.rpyc differ diff --git a/game/saves/1-1-LT1.save b/game/saves/1-1-LT1.save new file mode 100644 index 0000000..e80ee56 Binary files /dev/null and b/game/saves/1-1-LT1.save differ diff --git a/game/saves/auto-1-LT1.save b/game/saves/auto-1-LT1.save new file mode 100644 index 0000000..5c32df2 Binary files /dev/null and b/game/saves/auto-1-LT1.save differ diff --git a/game/saves/auto-10-LT1.save b/game/saves/auto-10-LT1.save new file mode 100644 index 0000000..0b1de74 Binary files /dev/null and b/game/saves/auto-10-LT1.save differ diff --git a/game/saves/auto-2-LT1.save b/game/saves/auto-2-LT1.save new file mode 100644 index 0000000..ef31023 Binary files /dev/null and b/game/saves/auto-2-LT1.save differ diff --git a/game/saves/auto-3-LT1.save b/game/saves/auto-3-LT1.save new file mode 100644 index 0000000..8936ead Binary files /dev/null and b/game/saves/auto-3-LT1.save differ diff --git a/game/saves/auto-4-LT1.save b/game/saves/auto-4-LT1.save new file mode 100644 index 0000000..f5b2bb8 Binary files /dev/null and b/game/saves/auto-4-LT1.save differ diff --git a/game/saves/auto-5-LT1.save b/game/saves/auto-5-LT1.save new file mode 100644 index 0000000..b500f50 Binary files /dev/null and b/game/saves/auto-5-LT1.save differ diff --git a/game/saves/auto-6-LT1.save b/game/saves/auto-6-LT1.save new file mode 100644 index 0000000..e061300 Binary files /dev/null and b/game/saves/auto-6-LT1.save differ diff --git a/game/saves/auto-7-LT1.save b/game/saves/auto-7-LT1.save new file mode 100644 index 0000000..7a4d116 Binary files /dev/null and b/game/saves/auto-7-LT1.save differ diff --git a/game/saves/auto-8-LT1.save b/game/saves/auto-8-LT1.save new file mode 100644 index 0000000..c1d44bb Binary files /dev/null and b/game/saves/auto-8-LT1.save differ diff --git a/game/saves/auto-9-LT1.save b/game/saves/auto-9-LT1.save new file mode 100644 index 0000000..5d3058f Binary files /dev/null and b/game/saves/auto-9-LT1.save differ diff --git a/game/saves/navigation.json b/game/saves/navigation.json new file mode 100644 index 0000000..4c9a9ee --- /dev/null +++ b/game/saves/navigation.json @@ -0,0 +1 @@ +{"error": false, "size": [1920, 1080], "name": "Sleeping Root", "version": "1.0", "location": {"label": {"start": ["game/script.rpy", 17], "game": ["game/script.rpy", 62], "game1": ["game/script.rpy", 80], "fast_end": ["game/script.rpy", 88]}, "define": {"config.check_conflicting_properties": ["game/gui.rpy", 16], "gui.accent_color": ["game/gui.rpy", 29], "gui.idle_color": ["game/gui.rpy", 32], "gui.idle_small_color": ["game/gui.rpy", 36], "gui.hover_color": ["game/gui.rpy", 39], "gui.selected_color": ["game/gui.rpy", 44], "gui.insensitive_color": ["game/gui.rpy", 47], "gui.muted_color": ["game/gui.rpy", 51], "gui.hover_muted_color": ["game/gui.rpy", 52], "gui.text_color": ["game/gui.rpy", 55], "gui.interface_text_color": ["game/gui.rpy", 56], "gui.text_font": ["game/gui.rpy", 62], "gui.name_text_font": ["game/gui.rpy", 65], "gui.interface_text_font": ["game/gui.rpy", 68], "gui.text_size": ["game/gui.rpy", 71], "gui.name_text_size": ["game/gui.rpy", 74], "gui.interface_text_size": ["game/gui.rpy", 77], "gui.label_text_size": ["game/gui.rpy", 80], "gui.notify_text_size": ["game/gui.rpy", 83], "gui.title_text_size": ["game/gui.rpy", 86], "gui.main_menu_background": ["game/gui.rpy", 92], "gui.game_menu_background": ["game/gui.rpy", 93], "gui.textbox_height": ["game/gui.rpy", 101], "gui.textbox_yalign": ["game/gui.rpy", 105], "gui.name_xpos": ["game/gui.rpy", 111], "gui.name_ypos": ["game/gui.rpy", 112], "gui.name_xalign": ["game/gui.rpy", 117], "gui.namebox_width": ["game/gui.rpy", 121], "gui.namebox_height": ["game/gui.rpy", 122], "gui.namebox_borders": ["game/gui.rpy", 126], "gui.namebox_tile": ["game/gui.rpy", 130], "gui.dialogue_xpos": ["game/gui.rpy", 136], "gui.dialogue_ypos": ["game/gui.rpy", 137], "gui.dialogue_width": ["game/gui.rpy", 140], "gui.dialogue_text_xalign": ["game/gui.rpy", 145], "gui.button_width": ["game/gui.rpy", 155], "gui.button_height": ["game/gui.rpy", 156], "gui.button_borders": ["game/gui.rpy", 159], "gui.button_tile": ["game/gui.rpy", 163], "gui.button_text_font": ["game/gui.rpy", 166], "gui.button_text_size": ["game/gui.rpy", 169], "gui.button_text_idle_color": ["game/gui.rpy", 172], "gui.button_text_hover_color": ["game/gui.rpy", 173], "gui.button_text_selected_color": ["game/gui.rpy", 174], "gui.button_text_insensitive_color": ["game/gui.rpy", 175], "gui.button_text_xalign": ["game/gui.rpy", 179], "gui.radio_button_borders": ["game/gui.rpy", 188], "gui.check_button_borders": ["game/gui.rpy", 190], "gui.confirm_button_text_xalign": ["game/gui.rpy", 192], "gui.page_button_borders": ["game/gui.rpy", 194], "gui.quick_button_borders": ["game/gui.rpy", 196], "gui.quick_button_text_size": ["game/gui.rpy", 197], "gui.quick_button_text_idle_color": ["game/gui.rpy", 198], "gui.quick_button_text_selected_color": ["game/gui.rpy", 199], "gui.choice_button_width": ["game/gui.rpy", 212], "gui.choice_button_height": ["game/gui.rpy", 213], "gui.choice_button_tile": ["game/gui.rpy", 214], "gui.choice_button_borders": ["game/gui.rpy", 215], "gui.choice_button_text_font": ["game/gui.rpy", 216], "gui.choice_button_text_size": ["game/gui.rpy", 217], "gui.choice_button_text_xalign": ["game/gui.rpy", 218], "gui.choice_button_text_idle_color": ["game/gui.rpy", 219], "gui.choice_button_text_hover_color": ["game/gui.rpy", 220], "gui.choice_button_text_insensitive_color": ["game/gui.rpy", 221], "gui.slot_button_width": ["game/gui.rpy", 231], "gui.slot_button_height": ["game/gui.rpy", 232], "gui.slot_button_borders": ["game/gui.rpy", 233], "gui.slot_button_text_size": ["game/gui.rpy", 234], "gui.slot_button_text_xalign": ["game/gui.rpy", 235], "gui.slot_button_text_idle_color": ["game/gui.rpy", 236], "gui.slot_button_text_selected_idle_color": ["game/gui.rpy", 237], "gui.slot_button_text_selected_hover_color": ["game/gui.rpy", 238], "config.thumbnail_width": ["game/gui.rpy", 241], "config.thumbnail_height": ["game/gui.rpy", 242], "gui.file_slot_cols": ["game/gui.rpy", 245], "gui.file_slot_rows": ["game/gui.rpy", 246], "gui.navigation_xpos": ["game/gui.rpy", 256], "gui.skip_ypos": ["game/gui.rpy", 259], "gui.notify_ypos": ["game/gui.rpy", 262], "gui.choice_spacing": ["game/gui.rpy", 265], "gui.navigation_spacing": ["game/gui.rpy", 268], "gui.pref_spacing": ["game/gui.rpy", 271], "gui.pref_button_spacing": ["game/gui.rpy", 274], "gui.page_spacing": ["game/gui.rpy", 277], "gui.slot_spacing": ["game/gui.rpy", 280], "gui.main_menu_text_xalign": ["game/gui.rpy", 283], "gui.frame_borders": ["game/gui.rpy", 292], "gui.confirm_frame_borders": ["game/gui.rpy", 295], "gui.skip_frame_borders": ["game/gui.rpy", 298], "gui.notify_frame_borders": ["game/gui.rpy", 301], "gui.frame_tile": ["game/gui.rpy", 304], "gui.bar_size": ["game/gui.rpy", 316], "gui.scrollbar_size": ["game/gui.rpy", 317], "gui.slider_size": ["game/gui.rpy", 318], "gui.bar_tile": ["game/gui.rpy", 322], "gui.scrollbar_tile": ["game/gui.rpy", 323], "gui.slider_tile": ["game/gui.rpy", 324], "gui.bar_borders": ["game/gui.rpy", 327], "gui.scrollbar_borders": ["game/gui.rpy", 328], "gui.slider_borders": ["game/gui.rpy", 329], "gui.vbar_borders": ["game/gui.rpy", 332], "gui.vscrollbar_borders": ["game/gui.rpy", 333], "gui.vslider_borders": ["game/gui.rpy", 334], "gui.unscrollable": ["game/gui.rpy", 338], "config.history_length": ["game/gui.rpy", 346], "gui.history_height": ["game/gui.rpy", 350], "gui.history_spacing": ["game/gui.rpy", 353], "gui.history_name_xpos": ["game/gui.rpy", 357], "gui.history_name_ypos": ["game/gui.rpy", 358], "gui.history_name_width": ["game/gui.rpy", 359], "gui.history_name_xalign": ["game/gui.rpy", 360], "gui.history_text_xpos": ["game/gui.rpy", 363], "gui.history_text_ypos": ["game/gui.rpy", 364], "gui.history_text_width": ["game/gui.rpy", 365], "gui.history_text_xalign": ["game/gui.rpy", 366], "gui.nvl_borders": ["game/gui.rpy", 374], "gui.nvl_list_length": ["game/gui.rpy", 378], "gui.nvl_height": ["game/gui.rpy", 382], "gui.nvl_spacing": ["game/gui.rpy", 386], "gui.nvl_name_xpos": ["game/gui.rpy", 390], "gui.nvl_name_ypos": ["game/gui.rpy", 391], "gui.nvl_name_width": ["game/gui.rpy", 392], "gui.nvl_name_xalign": ["game/gui.rpy", 393], "gui.nvl_text_xpos": ["game/gui.rpy", 396], "gui.nvl_text_ypos": ["game/gui.rpy", 397], "gui.nvl_text_width": ["game/gui.rpy", 398], "gui.nvl_text_xalign": ["game/gui.rpy", 399], "gui.nvl_thought_xpos": ["game/gui.rpy", 403], "gui.nvl_thought_ypos": ["game/gui.rpy", 404], "gui.nvl_thought_width": ["game/gui.rpy", 405], "gui.nvl_thought_xalign": ["game/gui.rpy", 406], "gui.nvl_button_xpos": ["game/gui.rpy", 409], "gui.nvl_button_xalign": ["game/gui.rpy", 410], "gui.language": ["game/gui.rpy", 419], "quick_menu": ["game/screens.rpy", 267], "gui.history_allow_tags": ["game/screens.rpy", 928], "config.nvl_list_length": ["game/screens.rpy", 1353], "bubble.frame": ["game/screens.rpy", 1462], "bubble.thoughtframe": ["game/screens.rpy", 1463], "bubble.properties": ["game/screens.rpy", 1465], "bubble.expand_area": ["game/screens.rpy", 1491], "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.main_menu_music": ["game/options.rpy", 65], "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", 147], "config.window_icon": ["game/options.rpy", 154], "e": ["game/script.rpy", 4], "sysmsg": ["game/script.rpy", 5], "root": ["game/script.rpy", 6], "root_mind": ["game/script.rpy", 7], "unknown_char": ["game/script.rpy", 8]}, "screen": {"say": ["game/screens.rpy", 97], "input": ["game/screens.rpy", 175], "choice": ["game/screens.rpy", 208], "quick_menu": ["game/screens.rpy", 1512], "navigation": ["game/screens.rpy", 288], "main_menu": ["game/screens.rpy", 351], "game_menu": ["game/screens.rpy", 417], "about": ["game/screens.rpy", 547], "save": ["game/screens.rpy", 585], "load": ["game/screens.rpy", 592], "file_slots": ["game/screens.rpy", 599], "preferences": ["game/screens.rpy", 727], "history": ["game/screens.rpy", 886], "help": ["game/screens.rpy", 976], "keyboard_help": ["game/screens.rpy", 1005], "mouse_help": ["game/screens.rpy", 1056], "gamepad_help": ["game/screens.rpy", 1079], "confirm": ["game/screens.rpy", 1144], "skip_indicator": ["game/screens.rpy", 1207], "notify": ["game/screens.rpy", 1262], "nvl": ["game/screens.rpy", 1301], "nvl_dialogue": ["game/screens.rpy", 1333], "bubble": ["game/screens.rpy", 1420]}, "transform": {"delayed_blink": ["game/screens.rpy", 1225], "notify_appear": ["game/screens.rpy", 1273]}, "callable": {"touch": ["game/gui.rpy", 431], "small": ["game/gui.rpy", 438]}}, "build": {"directory_name": "SleepingRoot-1.0", "executable_name": "SleepingRoot", "include_update": false, "packages": [{"name": "gameonly", "formats": ["null"], "file_lists": ["all"], "description": "Game-Only Update for Mobile", "update": true, "dlc": false, "hidden": true}, {"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", "renpy", "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], ["*.keystore", null], ["update.pem", null], ["lib/", null], ["renpy/", null], ["update/", null], ["common/", null], ["update/", null], ["old-game/", null], ["base/", 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.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"]], ["web-icon.png", ["web"]], ["progressive_download.txt", ["web"]], ["steam_appid.txt", null], ["game/cache/bytecode-39.rpyb", ["all"]], ["game/cache/bytecode-311.rpyb", ["web"]], ["game/cache/bytecode-*.rpyb", null], ["game/cache/build_info.json", null], ["game/cache/build_time.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": "Sleeping Root", "exclude_empty_directories": true, "allow_integrated_gpu": true, "renpy": false, "script_version": true, "destination": "SleepingRoot-1.0-dists", "itch_channels": {"*-all.zip": "win-osx-linux", "*-market.zip": "win-osx-linux", "*-pc.zip": "win-linux", "*-win.zip": "win", "*-mac.zip": "osx", "*-linux.tar.bz2": "linux", "*-release.apk": "android"}, "mac_info_plist": {}, "merge": [["linux_i686", "linux"], ["windows_i686", "windows"]], "include_i686": true, "change_icon_i686": true, "android_permissions": [], "_sdk_fonts": false, "update_formats": ["rpu"], "info": {"info": {}, "time": 1712654583.76809, "name": "Sleeping Root", "version": "1.0"}}} \ No newline at end of file diff --git a/game/saves/persistent b/game/saves/persistent new file mode 100644 index 0000000..4b50ea1 Binary files /dev/null and b/game/saves/persistent differ diff --git a/game/screens.rpy b/game/screens.rpy new file mode 100644 index 0000000..ca5c029 --- /dev/null +++ b/game/screens.rpy @@ -0,0 +1,1609 @@ +################################################################################ +## Инициализация +################################################################################ + +init offset = -1 + + +################################################################################ +## Стили +################################################################################ + +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) + + + +################################################################################ +## Внутриигровые экраны +################################################################################ + + +## Экран разговора ############################################################# +## +## Экран разговора используется для показа диалога игроку. Он использует два +## параметра — who и what — что, соответственно, имя говорящего персонажа и +## показываемый текст. (Параметр who может быть None, если имя не задано.) +## +## Этот экран должен создать текст с id "what", чтобы Ren'Py могла показать +## текст. Здесь также можно создать наложения с id "who" и id "window", чтобы +## применить к ним настройки стиля. +## +## 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 not renpy.variant("small"): + add SideImage() xalign 0.0 yalign 1.0 + + +## Делает namebox доступным для стилизации через объект Character. +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 + +## Экран ввода ################################################################# +## +## Этот экран используется, чтобы показывать renpy.input. Это параметр запроса, +## используемый для того, чтобы дать игроку ввести в него текст. +## +## Этот экран должен создать наложение ввода с id "input", чтобы принять +## различные вводимые параметры. +## +## https://www.renpy.org/doc/html/screen_special.html#input + +screen input(prompt): + style_prefix "input" + + window: + + vbox: + xanchor 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 + + +## Экран выбора ################################################################ +## +## Этот экран используется, чтобы показывать внутриигровые выборы, +## представленные оператором menu. Один параметр, вложения, список объектов, +## каждый с заголовком и полями действия. +## +## 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.text_properties("choice_button") + + +## Экран быстрого меню ######################################################### +## +## Быстрое меню показывается внутри игры, чтобы обеспечить лёгкий доступ к +## внеигровым меню. + +screen quick_menu(): + + ## Гарантирует, что оно появляется поверх других экранов. + zorder 100 + + if quick_menu: + + hbox: + style_prefix "quick" + + xalign 0.5 + yalign 1.0 + + textbutton _("Назад") action Rollback() + textbutton _("История") action ShowMenu('history') + textbutton _("Пропуск") action Skip() alternate Skip(fast=True, confirm=True) + textbutton _("Авто") action Preference("auto-forward", "toggle") + textbutton _("Сохранить") action ShowMenu('save') + textbutton _("Б.Сохр") action QuickSave() + textbutton _("Б.Загр") action QuickLoad() + textbutton _("Опции") action ShowMenu('preferences') + + +## Данный код гарантирует, что экран быстрого меню будет показан в игре в любое +## время, если только игрок не скроет интерфейс. +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.text_properties("quick_button") + + +################################################################################ +## Экраны Главного и Игрового меню +################################################################################ + +## Экран навигации ############################################################# +## +## Этот экран включает в себя главное и игровое меню, и обеспечивает навигацию к +## другим меню и к началу игры. + +screen navigation(): + + vbox: + style_prefix "navigation" + + xpos gui.navigation_xpos + yalign 0.5 + + spacing gui.navigation_spacing + + if main_menu: + + textbutton _("Начать") action Start() + + else: + + textbutton _("История") action ShowMenu("history") + + textbutton _("Сохранить") action ShowMenu("save") + + textbutton _("Загрузить") action ShowMenu("load") + + textbutton _("Настройки") action ShowMenu("preferences") + + if _in_replay: + + textbutton _("Завершить повтор") action EndReplay(confirm=True) + + elif not main_menu: + + textbutton _("Главное меню") action MainMenu() + + textbutton _("Об игре") action ShowMenu("about") + + if renpy.variant("pc") or (renpy.variant("web") and not renpy.variant("mobile")): + + ## Помощь не необходима и не относится к мобильным устройствам. + textbutton _("Помощь") action ShowMenu("help") + + if renpy.variant("pc"): + + ## Кнопка выхода блокирована в iOS и не нужна на Android и в веб- + ## версии. + textbutton _("Выход") 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.text_properties("navigation_button") + + +## Экран главного меню ######################################################### +## +## Используется, чтобы показать главное меню после запуска игры. +## +## https://www.renpy.org/doc/html/screen_special.html#main-menu + +screen main_menu(): + + ## Этот тег гарантирует, что любой другой экран с тем же тегом будет + ## заменять этот. + tag menu + + add gui.main_menu_background + + ## Эта пустая рамка затеняет главное меню. + frame: + style "main_menu_frame" + + ## Оператор use включает отображение другого экрана в данном. Актуальное + ## содержание главного меню находится на экране навигации. + 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") + + +## Экран игрового меню ######################################################### +## +## Всё это показывает основную, обобщённую структуру экрана игрового меню. Он +## вызывается с экраном заголовка и показывает фон, заголовок и навигацию. +## +## Параметр scroll может быть None или один из "viewport" или "vpgrid". Этот +## экран предназначен для использования с одним или несколькими дочерними +## элементами, которые трансклюдируются (помещаются) внутрь него. + +screen game_menu(title, scroll=None, yinitial=0.0, spacing=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: + + ## Резервирует пространство для навигации. + 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: + spacing spacing + + transclude + + elif scroll == "vpgrid": + + vpgrid: + cols 1 + yinitial yinitial + + scrollbars "vertical" + mousewheel True + draggable True + pagekeys True + + side_yfill True + + spacing spacing + + transclude + + else: + + transclude + + use navigation + + textbutton _("Вернуться"): + 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 + + +## Экран Об игре ############################################################### +## +## Этот экран показывает авторскую информацию об игре и Ren'Py. +## +## В этом экране нет ничего особенного, и он служит только примером того, каким +## можно сделать свой экран. + +screen about(): + + tag menu + + ## Этот оператор включает игровое меню внутрь этого экрана. Дочерний vbox + ## включён в порт просмотра внутри экрана игрового меню. + use game_menu(_("Об игре"), scroll="viewport"): + + style_prefix "about" + + vbox: + + label "[config.name!t]" + text _("Версия [config.version!t]\n") + + ## gui.about обычно установлено в options.rpy. + if gui.about: + text "[gui.about!t]\n" + + text _("Сделано с помощью {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 + + +## Экраны загрузки и сохранения ################################################ +## +## Эти экраны ответственны за возможность сохранять и загружать игру. Так +## как они почти одинаковые, оба реализованы по правилам третьего экрана — +## file_slots. +## +## https://www.renpy.org/doc/html/screen_special.html#save + +screen save(): + + tag menu + + use file_slots(_("Сохранить")) + + +screen load(): + + tag menu + + use file_slots(_("Загрузить")) + + +screen file_slots(title): + + default page_name_value = FilePageNameInputValue(pattern=_("{} страница"), auto=_("Автосохранения"), quick=_("Быстрые сохранения")) + + use game_menu(title): + + fixed: + + ## Это гарантирует, что ввод будет принимать enter перед остальными + ## кнопками. + order_reverse True + + ## Номер страницы, который может быть изменён посредством клика на + ## кнопку. + button: + style "page_label" + + key_events True + xalign 0.5 + action page_name_value.Toggle() + + input: + style "page_label_text" + value page_name_value + + ## Таблица слотов. + 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, %d %B %Y, %H:%M"), empty=_("Пустой слот")): + style "slot_time_text" + + text FileSaveName(slot): + style "slot_name_text" + + key "save_delete" action FileDelete(slot) + + ## Кнопки для доступа к другим страницам. + vbox: + style_prefix "page" + + xalign 0.5 + yalign 1.0 + + hbox: + xalign 0.5 + + spacing gui.page_spacing + + textbutton _("<") action FilePagePrevious() + + if config.has_autosave: + textbutton _("{#auto_page}А") action FilePage("auto") + + if config.has_quicksave: + textbutton _("{#quick_page}Б") action FilePage("quick") + + ## range(1, 10) задаёт диапазон значений от 1 до 9. + for page in range(1, 10): + textbutton "[page]" action FilePage(page) + + textbutton _(">") action FilePageNext() + + if config.has_sync: + if CurrentScreenName() == "save": + textbutton _("Синхронизация загрузки"): + action UploadSync() + xalign 0.5 + else: + textbutton _("Скачать Sync"): + action DownloadSync() + xalign 0.5 + + +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: + textalign 0.5 + layout "subtitle" + hover_color gui.hover_color + +style page_button: + properties gui.button_properties("page_button") + +style page_button_text: + properties gui.text_properties("page_button") + +style slot_button: + properties gui.button_properties("slot_button") + +style slot_button_text: + properties gui.text_properties("slot_button") + + +## Экран настроек ############################################################## +## +## Экран настроек позволяет игроку настраивать игру под себя. +## +## https://www.renpy.org/doc/html/screen_special.html#preferences + +screen preferences(): + + tag menu + + use game_menu(_("Настройки"), scroll="viewport"): + + vbox: + + hbox: + box_wrap True + + if renpy.variant("pc") or renpy.variant("web"): + + vbox: + style_prefix "radio" + label _("Режим экрана") + textbutton _("Оконный") action Preference("display", "window") + textbutton _("Полный") action Preference("display", "fullscreen") + + vbox: + style_prefix "check" + label _("Пропуск") + textbutton _("Всего текста") action Preference("skip", "toggle") + textbutton _("После выборов") action Preference("after choices", "toggle") + textbutton _("Переходов") action InvertSelected(Preference("transitions", "toggle")) + + ## Дополнительные vbox'ы типа "radio_pref" или "check_pref" + ## могут быть добавлены сюда для добавления новых настроек. + + null height (4 * gui.pref_spacing) + + hbox: + style_prefix "slider" + box_wrap True + + vbox: + + label _("Скорость текста") + + bar value Preference("text speed") + + label _("Скорость авточтения") + + bar value Preference("auto-forward time") + + vbox: + + if config.has_music: + label _("Громкость музыки") + + hbox: + bar value Preference("music volume") + + if config.has_sound: + + label _("Громкость звуков") + + hbox: + bar value Preference("sound volume") + + if config.sample_sound: + textbutton _("Тест") action Play("sound", config.sample_sound) + + + if config.has_voice: + label _("Громкость голоса") + + hbox: + bar value Preference("voice volume") + + if config.sample_voice: + textbutton _("Тест") action Play("voice", config.sample_voice) + + if config.has_music or config.has_sound or config.has_voice: + null height gui.pref_spacing + + textbutton _("Без звука"): + 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.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.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.text_properties("slider_button") + +style slider_vbox: + xsize 675 + + +## Экран истории ############################################################### +## +## Этот экран показывает игроку историю диалогов. Хотя в этом экране нет ничего +## особенного, он имеет доступ к истории диалогов, хранимом в _history_list. +## +## https://www.renpy.org/doc/html/history.html + +screen history(): + + tag menu + + ## Избегайте предсказывания этого экрана, так как он может быть очень + ## массивным. + predict False + + use game_menu(_("История"), scroll=("vpgrid" if gui.history_height else "viewport"), yinitial=1.0, spacing=gui.history_spacing): + + style_prefix "history" + + for h in _history_list: + + window: + + ## Это всё правильно уравняет, если history_height будет + ## установлен на None. + has fixed: + yfit True + + if h.who: + + label h.who: + style "history_name" + substitute False + + ## Берёт цвет из who параметра персонажа, если он + ## установлен. + 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 _("История диалогов пуста.") + + +## Это определяет, какие теги могут отображаться на экране истории. + +define gui.history_allow_tags = { "alt", "noalt", "rt", "rb", "art" } + + +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 + textalign 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 + textalign 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 + + +## Экран помощи ################################################################ +## +## Экран, дающий информацию о клавишах управления. Он использует другие экраны +## (keyboard_help, mouse_help, и gamepad_help), чтобы показывать актуальную +## помощь. + +screen help(): + + tag menu + + default device = "keyboard" + + use game_menu(_("Помощь"), scroll="viewport"): + + style_prefix "help" + + vbox: + spacing 23 + + hbox: + + textbutton _("Клавиатура") action SetScreenVariable("device", "keyboard") + textbutton _("Мышь") action SetScreenVariable("device", "mouse") + + if GamepadExists(): + textbutton _("Геймпад") 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 _("Войти") + text _("Прохождение диалогов, активация интерфейса.") + + hbox: + label _("Пробел") + text _("Прохождение диалогов без возможности делать выбор.") + + hbox: + label _("Стрелки") + text _("Навигация по интерфейсу.") + + hbox: + label _("Esc") + text _("Вход в игровое меню.") + + hbox: + label _("Ctrl") + text _("Пропускает диалоги, пока зажат.") + + hbox: + label _("Tab") + text _("Включает режим пропуска.") + + hbox: + label _("Страница вверху") + text _("Откат назад по сюжету игры.") + + hbox: + label _("Страница вниз") + text _("Откатывает предыдущее действие вперёд.") + + hbox: + label "H" + text _("Скрывает интерфейс пользователя.") + + hbox: + label "S" + text _("Делает снимок экрана.") + + hbox: + label "V" + text _("Включает поддерживаемый {a=https://www.renpy.org/l/voicing}синтезатор речи{/a}.") + + hbox: + label "Shift+A" + text _("Открывает меню специальных возможностей.") + + +screen mouse_help(): + + hbox: + label _("Левый клик") + text _("Прохождение диалогов, активация интерфейса.") + + hbox: + label _("Клик колёсиком") + text _("Скрывает интерфейс пользователя.") + + hbox: + label _("Правый клик") + text _("Вход в игровое меню.") + + hbox: + label _("Колёсико вверх") + text _("Откат назад по сюжету игры.") + + hbox: + label _("Колёсико вниз") + text _("Откатывает предыдущее действие вперёд.") + + +screen gamepad_help(): + + hbox: + label _("Правый триггер\nA/Нижняя кнопка") + text _("Прохождение диалогов, активация интерфейса.") + + hbox: + label _("Левый Триггер\nЛевый Бампер") + text _("Откат назад по сюжету игры.") + + hbox: + label _("Правый бампер") + text _("Откатывает предыдущее действие вперёд.") + + hbox: + label _("Крестовина, Стики") + text _("Навигация по интерфейсу.") + + hbox: + label _("Старт, Гид, B/кнопка вправо") + text _("Вход в игровое меню.") + + hbox: + label _("Y/Верхняя кнопка") + text _("Скрывает интерфейс пользователя.") + + textbutton _("Калибровка") 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.text_properties("help_button") + +style help_label: + xsize 375 + right_padding 30 + +style help_label_text: + size gui.text_size + xalign 1.0 + textalign 1.0 + + + +################################################################################ +## Дополнительные экраны +################################################################################ + + +## Экран подтверждения ######################################################### +## +## Экран подтверждения вызывается, когда Ren'Py хочет спросить у игрока вопрос +## Да или Нет. +## +## https://www.renpy.org/doc/html/screen_special.html#confirm + +screen confirm(message, yes_action, no_action): + + ## Гарантирует, что другие экраны будут недоступны, пока показан этот экран. + 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 _("Да") action yes_action + textbutton _("Нет") action no_action + + ## Правый клик и esc, как ответ "Нет". + 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: + textalign 0.5 + layout "subtitle" + +style confirm_button: + properties gui.button_properties("confirm_button") + +style confirm_button_text: + properties gui.text_properties("confirm_button") + + +## Экран индикатора пропуска ################################################### +## +## Экран индикатора пропуска появляется для того, чтобы показать, что идёт +## пропуск. +## +## https://www.renpy.org/doc/html/screen_special.html#skip-indicator + +screen skip_indicator(): + + zorder 100 + style_prefix "skip" + + frame: + + hbox: + spacing 9 + + text _("Пропускаю") + + text "▸" at delayed_blink(0.0, 1.0) style "skip_triangle" + text "▸" at delayed_blink(0.2, 1.0) style "skip_triangle" + text "▸" at delayed_blink(0.4, 1.0) style "skip_triangle" + + +## Эта трансформация используется, чтобы мигать стрелками одна за другой. +transform 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: + ## Нам надо использовать шрифт, имеющий в себе символ U+25B8 (стрелку выше). + font "DejaVuSans.ttf" + + +## Экран уведомлений ########################################################### +## +## Экран уведомлений используется, чтобы показать игроку оповещение. (Например, +## когда игра автосохранилась, или был сделан скриншот) +## +## 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 ################################################################### +## +## Этот экран используется в диалогах и меню режима NVL. +## +## 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 + + ## Показывает диалог или в vpgrid, или в vbox. + if gui.nvl_height: + + vpgrid: + cols 1 + yinitial 1.0 + + use nvl_dialogue(dialogue) + + else: + + use nvl_dialogue(dialogue) + + ## Показывает меню, если есть. Меню может показываться некорректно, если + ## config.narrator_menu установлено на 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 + + +## Это контролирует максимальное число строк NVL, могущих показываться за раз. +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 + textalign 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 + textalign 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 + textalign 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.text_properties("nvl_button") + + +## Пузырьковый экран ########################################################### +## +## Экран пузырьков используется для отображения диалога игроку при использовании +## речевых пузырьков. Экран пузырьков принимает те же параметры, что и экран +## say, должен создать отображаемый объект с id "what", и может создавать +## отображаемые объекты с id "namebox", "who" и "window". +## +## https://www.renpy.org/doc/html/bubble.html#bubble-screen + +screen bubble(who, what): + style_prefix "bubble" + + window: + id "window" + + if who is not None: + + window: + id "namebox" + style "bubble_namebox" + + text who: + id "who" + + text what: + id "what" + +style bubble_window is empty +style bubble_namebox is empty +style bubble_who is default +style bubble_what is default + +style bubble_window: + xpadding 30 + top_padding 5 + bottom_padding 5 + +style bubble_namebox: + xalign 0.5 + +style bubble_who: + xalign 0.5 + textalign 0.5 + color "#000" + +style bubble_what: + align (0.5, 0.5) + text_align 0.5 + layout "subtitle" + color "#000" + +define bubble.frame = Frame("gui/bubble.png", 55, 55, 55, 95) +define bubble.thoughtframe = Frame("gui/thoughtbubble.png", 55, 55, 55, 55) + +define bubble.properties = { + "bottom_left" : { + "window_background" : Transform(bubble.frame, xzoom=1, yzoom=1), + "window_bottom_padding" : 27, + }, + + "bottom_right" : { + "window_background" : Transform(bubble.frame, xzoom=-1, yzoom=1), + "window_bottom_padding" : 27, + }, + + "top_left" : { + "window_background" : Transform(bubble.frame, xzoom=1, yzoom=-1), + "window_top_padding" : 27, + }, + + "top_right" : { + "window_background" : Transform(bubble.frame, xzoom=-1, yzoom=-1), + "window_top_padding" : 27, + }, + + "thought" : { + "window_background" : bubble.thoughtframe, + } +} + +define bubble.expand_area = { + "bottom_left" : (0, 0, 0, 22), + "bottom_right" : (0, 0, 0, 22), + "top_left" : (0, 22, 0, 0), + "top_right" : (0, 22, 0, 0), + "thought" : (0, 0, 0, 0), +} + + + +################################################################################ +## Мобильные варианты +################################################################################ + +style pref_vbox: + variant "medium" + xsize 675 + +## Раз мышь может не использоваться, мы заменили быстрое меню версией, +## использующей меньше кнопок, но больших по размеру, чтобы их было легче +## касаться. +screen quick_menu(): + variant "touch" + + zorder 100 + + if quick_menu: + + hbox: + style_prefix "quick" + + xalign 0.5 + yalign 1.0 + + textbutton _("Назад") action Rollback() + textbutton _("Пропуск") action Skip() alternate Skip(fast=True, confirm=True) + textbutton _("Авто") action Preference("auto-forward", "toggle") + textbutton _("Меню") 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 new file mode 100644 index 0000000..add4f82 Binary files /dev/null and b/game/screens.rpyc differ diff --git a/game/script.rpy b/game/script.rpy new file mode 100644 index 0000000..b271198 --- /dev/null +++ b/game/script.rpy @@ -0,0 +1,99 @@ +# Вы можете расположить сценарий своей игры в этом файле. + +# Определение персонажей игры. +define e = Character('Эйлин', color="#c8ffc8") +define sysmsg = Character('sysmsg', color="#c83333") +define root = Character("[root]", color="#ffffff") +define root_mind = Character("ROOT", color="#00ffea") +define unknown_char = Character("???", color="#09ff00") +image root_room = "Scenes/root_room.jpg" +#define menu = nvl_menu +# Вместо использования оператора image можете просто +# складывать все ваши файлы изображений в папку images. +# Например, сцену bg room можно вызвать файлом "bg room.png", +# а eileen happy — "eileen happy.webp", и тогда они появятся в игре. + +# Игра начинается здесь: +label start: + play music "UNIVERSFIELD - Orion Nebula 2.mp3" loop volume 0.5 + scene root_room + sysmsg "OS loading..." + sysmsg "Enter your login and password" + python: + + root = renpy.input("Login:", length=32) + password=renpy.input("Password:", length=32) + root = root.strip() + password = password.strip() + if not root: + root = "root" + + show monitor + + sysmsg "Вход выполнен успешно." + sysmsg "[root]@localhost" + root_mind "Рабочий вечер после трудного рабочего дня. Что может быть лучше? Только рабочий вечер с кружкой горячего кофе." + root_mind "Я заварил свой любимый, хоть и дешевый кофе в кофеварке. Некоторые бы подумали, что при моей зарплате, я бы мог позволить себе и подороже." + root_mind "Однако я пристрастился к этому ужасному вкусу довольно давно, и все остальные сорта кофе казались блеклыми. Ну и ладно. Главное что работу стимулятора мой напиток выполнял исправно." + root_mind "Я привычно запустил подключение к серверу компании на которую работал уже больше полугода. Пробежавшись быстро по задачам, запустил деплой, открыл редактор и начал писать скрипт." + root_mind "Не сказать, чтобы мне уж так нужна была эта подработка, однако глупо отказываться от денег, когда есть силы работать, а вечера занять абсолютно нечем" + root_mind "Друзей у меня было не много, да и с теми что были я встречался довольно редко. Девушки хоть и бывали, но как-то всегда не серьезно и непостоянно. Игры давно приелись, хобби тоже." + root_mind "Скучные, долгие вечера... и скучные долгие ночи..." + root_mind "Бессоница пришла ко мне пару месяцев назад. Сначала это были задержки за подработкой до часу ночи. Потом до двух. Незаметно для меня это превратилось в засиживание до 5 утра." + root_mind "И подъем в семь на основную работу. Я с некоторым внутренним удивлением наблюдал за изменениями в моем режиме сна, но ничего не предпринимал для того чтобы что-то изменить." + root_mind "Дни становились тягучее и тусклее. Час забытия после основной работы и затем вечер за подработкой." + root_mind "А затем, даже ощущая бесконечную усталось, я закрывал рабочие задачи и открывал интернет. Смотрел на ютубе ролики о науке, новости о политике, читал айтишные форумы и блоги." + root_mind "В пять утра я начинал зевать и благодаря всех богов за эту милость падал в кровать и проваливался в черное забытье" + root_mind "Утро я помнил плохо и снова блеклый день, и жизнь безостановочно проходящая мимо..." + root_mind "Возможно так бы дальше все и продолжалось. Но все изменилось когда в мессенджер пришло сообщение с неизвестного аккаунта." + + play sound "email_notify.mp3" volume 1.0 noloop + + menu: + + "Прочитать сообщение": + jump game + + "Время 5 утра. Пойти спать": + jump fast_end + + return + +label game: + + unknown_char "Привет. Дали твои контакты, сказали ты админишь сервера по удаленке. Есть пара задач, по оплате - какая ставка у тебя за час работы?" + python: + rubperhour = renpy.input("Час вашей работы стоит:", length=32) + rubperhour = int(rubperhour.strip()) + if not rubperhour: + rubperhour = 3000 + + if rubperhour > 5000: + unknown_char "Ух... Извини что побеспокоил. Нам такие суммы не подъемны." + jump fast_end + else: + unknown_char "Ok. Нас устраивает. Скину файлом задание и доступы." + jump game1 + + return + +label game1: + root_mind "Заказик прилетел как раз вовремя. Я доделал скрипт, скинул его в репозиторий, запустил тесты, и судя по тому что видел сейчас на экране - скрипт должен отработать как надо." + root_mind "Так что времени для вечерней подработки у меня еще куча, а работы по факту не осталось. Значит возьмусь за разовый заказ." + root_mind "Я открыл файл который мне прислал мой недавний собеседник. Ну, ничего особо сложного. Перенастроить серверы на новый cdn, проверить работу задач в кроне, запустить пару скриптов и проконтроллировать что они отработают успешно." + root_mind "Как говорил один персонаж - Приключение на 5 минут, зайти и выйти." + + return + +label fast_end: + + sysmsg "System will be shutdown..." + sysmsg "...3" + sysmsg "...2" + sysmsg "...1" + sysmsg "Это была самая быстра концовка!" + + return + + + diff --git a/game/script.rpyc b/game/script.rpyc new file mode 100644 index 0000000..e8f952c Binary files /dev/null and b/game/script.rpyc differ diff --git a/game/terminus.ttf b/game/terminus.ttf new file mode 100644 index 0000000..eafa3a6 Binary files /dev/null and b/game/terminus.ttf differ diff --git a/game/tl/None/common.rpym b/game/tl/None/common.rpym new file mode 100644 index 0000000..f2e0bb8 --- /dev/null +++ b/game/tl/None/common.rpym @@ -0,0 +1,1503 @@ + +translate None strings: + + # renpy/common/00accessibility.rpy:28 + old "Self-voicing disabled." + new "Синтезатор речи отключён." + + # renpy/common/00accessibility.rpy:29 + old "Clipboard voicing enabled. " + new "Озвучка буфера обмена включена." + + # renpy/common/00accessibility.rpy:30 + old "Self-voicing enabled. " + new "Синтезатор речи включён." + + # renpy/common/00accessibility.rpy:32 + old "bar" + new ". Полоса настройки" + + # renpy/common/00accessibility.rpy:33 + old "selected" + new ". На данный момент это выбрано" + + # renpy/common/00accessibility.rpy:34 + old "viewport" + new "порт просмотра" + + # renpy/common/00accessibility.rpy:35 + old "horizontal scroll" + new ". горизонтальная полоса прокрутки" + + # renpy/common/00accessibility.rpy:36 + old "vertical scroll" + new ". вертикальная полоса прокрутки" + + # renpy/common/00accessibility.rpy:37 + old "activate" + new "элемент активирован" + + # renpy/common/00accessibility.rpy:38 + old "deactivate" + new "элемент деактивирован" + + # renpy/common/00accessibility.rpy:39 + old "increase" + new "больше" + + # renpy/common/00accessibility.rpy:40 + old "decrease" + new "меньше" + + # renpy/common/00accessibility.rpy:120 + old "Accessibility Menu. Use up and down arrows to navigate, and enter to activate buttons and bars." + new "Меню специальных возможностей. Для навигации используйте стрелки вверх и вниз, а для активации кнопок и полос - клавишу Enter." + + # renpy/common/00accessibility.rpy:139 + old "Font Override" + new "Переопределение шрифта" + + # renpy/common/00accessibility.rpy:143 + old "Default" + new "По умолчанию" + + # renpy/common/00accessibility.rpy:147 + old "DejaVu Sans" + new "DejaVu Sans" + + # renpy/common/00accessibility.rpy:151 + old "Opendyslexic" + new "Opendyslexic" + + # renpy/common/00accessibility.rpy:157 + old "Text Size Scaling" + new "Масштабирование размера текста" + + # renpy/common/00accessibility.rpy:163 + old "Reset" + new "Сбросить" + + # renpy/common/00accessibility.rpy:169 + old "Line Spacing Scaling" + new "Масштабирование межстрочного интервала" + + # renpy/common/00accessibility.rpy:181 + old "High Contrast Text" + new "Высококонтрастный текст" + + # renpy/common/00accessibility.rpy:183 + old "Enable" + new "Активировано" + + # renpy/common/00accessibility.rpy:187 + old "Disable" + new "Отключено" + + # renpy/common/00accessibility.rpy:194 + old "Self-Voicing" + new "Озвучка через синтезатор речи" + + # renpy/common/00accessibility.rpy:198 + old "Off" + new "Выключить" + + # renpy/common/00accessibility.rpy:202 + old "Text-to-speech" + new "Преобразование текста в речь" + + # renpy/common/00accessibility.rpy:206 + old "Clipboard" + new "Из буфера обмена" + + # renpy/common/00accessibility.rpy:210 + old "Debug" + new "Отладку" + + # renpy/common/00accessibility.rpy:216 + old "Voice Volume" + new "Громкость голоса" + + # renpy/common/00accessibility.rpy:224 + old "Self-Voicing Volume Drop" + new "Уменьшение громкости при озвучке через синтезатор речи" + + # renpy/common/00accessibility.rpy:235 + old "The options on this menu are intended to improve accessibility. They may not work with all games, and some combinations of options may render the game unplayable. This is not an issue with the game or engine. For the best results when changing fonts, try to keep the text size the same as it originally was." + new "Параметры этого меню предназначены для увеличения доступности. Они могут работать не со всеми играми, а некоторые комбинации опций могут сделать игру отображаемой некорректно. Это не проблема с игрой или движком. Для достижения наилучших результатов при изменении шрифтов старайтесь сохранять размер текста таким, каким он был изначально." + + # renpy/common/00accessibility.rpy:240 + old "Return" + new "Вернуться" + + # renpy/common/00action_file.rpy:26 + old "{#weekday}Monday" + new "{#weekday}Понедельник" + + # renpy/common/00action_file.rpy:26 + old "{#weekday}Tuesday" + new "{#weekday}Вторник" + + # renpy/common/00action_file.rpy:26 + old "{#weekday}Wednesday" + new "{#weekday}Среда" + + # renpy/common/00action_file.rpy:26 + old "{#weekday}Thursday" + new "{#weekday}Четверг" + + # renpy/common/00action_file.rpy:26 + old "{#weekday}Friday" + new "{#weekday}Пятница" + + # renpy/common/00action_file.rpy:26 + old "{#weekday}Saturday" + new "{#weekday}Суббота" + + # renpy/common/00action_file.rpy:26 + old "{#weekday}Sunday" + new "{#weekday}Воскресенье" + + # renpy/common/00action_file.rpy:37 + old "{#weekday_short}Mon" + new "{#weekday_short}Пн" + + # renpy/common/00action_file.rpy:37 + old "{#weekday_short}Tue" + new "{#weekday_short}Вт" + + # renpy/common/00action_file.rpy:37 + old "{#weekday_short}Wed" + new "{#weekday_short}Ср" + + # renpy/common/00action_file.rpy:37 + old "{#weekday_short}Thu" + new "{#weekday_short}Чт" + + # renpy/common/00action_file.rpy:37 + old "{#weekday_short}Fri" + new "{#weekday_short}Пт" + + # renpy/common/00action_file.rpy:37 + old "{#weekday_short}Sat" + new "{#weekday_short}Сб" + + # renpy/common/00action_file.rpy:37 + old "{#weekday_short}Sun" + new "{#weekday_short}Вс" + + # renpy/common/00action_file.rpy:47 + old "{#month}January" + new "{#month}Января" + + # renpy/common/00action_file.rpy:47 + old "{#month}February" + new "{#month}Февраля" + + # renpy/common/00action_file.rpy:47 + old "{#month}March" + new "{#month}Марта" + + # renpy/common/00action_file.rpy:47 + old "{#month}April" + new "{#month}Апреля" + + # renpy/common/00action_file.rpy:47 + old "{#month}May" + new "{#month}Мая" + + # renpy/common/00action_file.rpy:47 + old "{#month}June" + new "{#month}Июня" + + # renpy/common/00action_file.rpy:47 + old "{#month}July" + new "{#month}Июля" + + # renpy/common/00action_file.rpy:47 + old "{#month}August" + new "{#month}Августа" + + # renpy/common/00action_file.rpy:47 + old "{#month}September" + new "{#month}Сентября" + + # renpy/common/00action_file.rpy:47 + old "{#month}October" + new "{#month}Октября" + + # renpy/common/00action_file.rpy:47 + old "{#month}November" + new "{#month}Ноября" + + # renpy/common/00action_file.rpy:47 + old "{#month}December" + new "{#month}Декабря" + + # renpy/common/00action_file.rpy:63 + old "{#month_short}Jan" + new "{#month_short}Янв" + + # renpy/common/00action_file.rpy:63 + old "{#month_short}Feb" + new "{#month_short}Фев" + + # renpy/common/00action_file.rpy:63 + old "{#month_short}Mar" + new "{#month_short}Мар" + + # renpy/common/00action_file.rpy:63 + old "{#month_short}Apr" + new "{#month_short}Апр" + + # renpy/common/00action_file.rpy:63 + old "{#month_short}May" + new "{#month_short}Мая" + + # renpy/common/00action_file.rpy:63 + old "{#month_short}Jun" + new "{#month_short}Июн" + + # renpy/common/00action_file.rpy:63 + old "{#month_short}Jul" + new "{#month_short}Июл" + + # renpy/common/00action_file.rpy:63 + old "{#month_short}Aug" + new "{#month_short}Авг" + + # renpy/common/00action_file.rpy:63 + old "{#month_short}Sep" + new "{#month_short}Сен" + + # renpy/common/00action_file.rpy:63 + old "{#month_short}Oct" + new "{#month_short}Окт" + + # renpy/common/00action_file.rpy:63 + old "{#month_short}Nov" + new "{#month_short}Ноя" + + # renpy/common/00action_file.rpy:63 + old "{#month_short}Dec" + new "{#month_short}Дек" + + # renpy/common/00action_file.rpy:258 + old "%b %d, %H:%M" + new "%d %b, %H:%M" + + # renpy/common/00action_file.rpy:395 + old "Save slot %s: [text]" + new "Слот сохранения %s: [text]" + + # renpy/common/00action_file.rpy:480 + old "Load slot %s: [text]" + new "Слот загрузки %s: [text]" + + # renpy/common/00action_file.rpy:533 + old "Delete slot [text]" + new "Удалить слот [text]" + + # renpy/common/00action_file.rpy:612 + old "File page auto" + new "Автосохранения" + + # renpy/common/00action_file.rpy:614 + old "File page quick" + new "Быстрые сохранения" + + # renpy/common/00action_file.rpy:616 + old "File page [text]" + new "Страница сохранений [text]" + + # renpy/common/00action_file.rpy:674 + old "Page {}" + new "{} страница" + + # renpy/common/00action_file.rpy:674 + old "Automatic saves" + new "Автосохранения" + + # renpy/common/00action_file.rpy:674 + old "Quick saves" + new "Быстрые сохранения" + + # renpy/common/00action_file.rpy:815 + old "Next file page." + new "Следующая страница сохранений" + + # renpy/common/00action_file.rpy:887 + old "Previous file page." + new "Предыдущая страница сохранений" + + # renpy/common/00action_file.rpy:948 + old "Quick save complete." + new "Быстрое сохранение завершено." + + # renpy/common/00action_file.rpy:963 + old "Quick save." + new "Быстрое сохранение" + + # renpy/common/00action_file.rpy:982 + old "Quick load." + new "Быстрая загрузка" + + # renpy/common/00action_other.rpy:383 + old "Language [text]" + new "Язык [text]" + + # renpy/common/00action_other.rpy:746 + old "Open [text] directory." + new "Открыть папку [text]." + + # renpy/common/00director.rpy:712 + old "The interactive director is not enabled here." + new "Интерактивный директор недоступен." + + # renpy/common/00director.rpy:1511 + old "⬆" + new "⬆" + + # renpy/common/00director.rpy:1517 + old "⬇" + new "⬇" + + # renpy/common/00director.rpy:1581 + old "Done" + new "Принять" + + # renpy/common/00director.rpy:1591 + old "(statement)" + new "(функция)" + + # renpy/common/00director.rpy:1592 + old "(tag)" + new "(тег)" + + # renpy/common/00director.rpy:1593 + old "(attributes)" + new "(аттрибут)" + + # renpy/common/00director.rpy:1594 + old "(transform)" + new "(трансформация)" + + # renpy/common/00director.rpy:1619 + old "(transition)" + new "(переход)" + + # renpy/common/00director.rpy:1631 + old "(channel)" + new "(канал)" + + # renpy/common/00director.rpy:1632 + old "(filename)" + new "(имя файла)" + + # renpy/common/00director.rpy:1661 + old "Change" + new "Изменить" + + # renpy/common/00director.rpy:1663 + old "Add" + new "Добавить" + + # renpy/common/00director.rpy:1666 + old "Cancel" + new "Отмена" + + # renpy/common/00director.rpy:1669 + old "Remove" + new "Убрать" + + # renpy/common/00director.rpy:1704 + old "Statement:" + new "Функции:" + + # renpy/common/00director.rpy:1725 + old "Tag:" + new "Теги:" + + # renpy/common/00director.rpy:1741 + old "Attributes:" + new "Аттрибут:" + + # renpy/common/00director.rpy:1752 + old "Click to toggle attribute, right click to toggle negative attribute." + new "Щелкните, чтобы переключить атрибут, щелкните правой кнопкой мыши, чтобы переключить отрицательный атрибут." + + # renpy/common/00director.rpy:1764 + old "Transforms:" + new "Трансформации:" + + # renpy/common/00director.rpy:1775 + old "Click to set transform, right click to add to transform list." + new "Щелкните, чтобы установить преобразование, щелкните правой кнопкой мыши, чтобы добавить в список преобразований." + + # renpy/common/00director.rpy:1776 + old "Customize director.transforms to add more transforms." + new "Измените director.transforms, чтобы добавить больше трансформаций." + + # renpy/common/00director.rpy:1788 + old "Behind:" + new "Позади:" + + # renpy/common/00director.rpy:1799 + old "Click to set, right click to add to behind list." + new "Щелкните, чтобы установить, щелкните правой кнопкой мыши, чтобы добавить в список позади." + + # renpy/common/00director.rpy:1811 + old "Transition:" + new "Переходы:" + + # renpy/common/00director.rpy:1821 + old "Click to set." + new "Нажмите, чтобы установить." + + # renpy/common/00director.rpy:1822 + old "Customize director.transitions to add more transitions." + new "Измените director.transitions, чтобы добавить больше переходов." + + # renpy/common/00director.rpy:1834 + old "Channel:" + new "Каналы:" + + # renpy/common/00director.rpy:1845 + old "Customize director.audio_channels to add more channels." + new "Измените director.audio_channels, чтобы добавить больше каналов." + + # renpy/common/00director.rpy:1857 + old "Audio Filename:" + new "Имя файла:" + + # renpy/common/00gui.rpy:448 + old "Are you sure?" + new "Вы уверены?" + + # renpy/common/00gui.rpy:449 + old "Are you sure you want to delete this save?" + new "Вы уверены, что хотите удалить это сохранение?" + + # renpy/common/00gui.rpy:450 + old "Are you sure you want to overwrite your save?" + new "Вы уверены, что хотите перезаписать ваше сохранение?" + + # renpy/common/00gui.rpy:451 + old "Loading will lose unsaved progress.\nAre you sure you want to do this?" + new "Загрузка игры приведёт к потере несохранённого прогресса.\nВы уверены, что хотите это сделать?" + + # renpy/common/00gui.rpy:452 + old "Are you sure you want to quit?" + new "Вы уверены, что хотите выйти?" + + # renpy/common/00gui.rpy:453 + old "Are you sure you want to return to the main menu?\nThis will lose unsaved progress." + new "Вы уверены, что хотите вернуться в главное меню?\nЭто приведёт к потере несохранённого прогресса." + + # renpy/common/00gui.rpy:454 + old "Are you sure you want to continue where you left off?" + new "Вы уверены, что хотите продолжить с того места, на котором остановились?" + + # renpy/common/00gui.rpy:455 + old "Are you sure you want to end the replay?" + new "Вы уверены, что хотите завершить повтор?" + + # renpy/common/00gui.rpy:456 + old "Are you sure you want to begin skipping?" + new "Вы уверены, что хотите начать пропуск?" + + # renpy/common/00gui.rpy:457 + old "Are you sure you want to skip to the next choice?" + new "Вы точно хотите пропустить всё до следующего выбора?" + + # renpy/common/00gui.rpy:458 + old "Are you sure you want to skip unseen dialogue to the next choice?" + new "Вы уверены, что хотите пропустить непрочитанные диалоги до следующего выбора?" + + # renpy/common/00gui.rpy:459 + old "This save was created on a different device. Maliciously constructed save files can harm your computer. Do you trust this save's creator and everyone who could have changed the file?" + new "Это сохранение было создано на другом устройстве. Злонамеренно созданные файлы сохранения могут нанести вред вашему компьютеру. Доверяете ли вы создателю этого сохранения и всем тем, кто мог изменить файл?" + + # renpy/common/00gui.rpy:460 + old "Do you trust the device the save was created on? You should only choose yes if you are the device's sole user." + new "Доверяете ли вы устройству, на котором было создано сохранение? Вы должны выбрать \"Да\", только если вы являетесь единственным пользователем устройства." + + # renpy/common/00keymap.rpy:323 + old "Failed to save screenshot as %s." + new "Провалена попытка сохранить скриншот как %s." + + # renpy/common/00keymap.rpy:335 + old "Saved screenshot as %s." + new "Скриншот сохранён как %s." + + # renpy/common/00library.rpy:248 + old "Skip Mode" + new "Режим Пропуска" + + # renpy/common/00library.rpy:317 + old "This program contains free software under a number of licenses, including the MIT License and GNU Lesser General Public License. A complete list of software, including links to full source code, can be found {a=https://www.renpy.org/l/license}here{/a}." + new "Эта программа содержит свободное и открытое программное обеспечение под несколькими лицензиями, включая лицензию MIT и GNU Lesser General Public. Полный список лицензий, включая ссылки на полный исходный код, можно найти {a=https://www.renpy.org/l/license}здесь{/a}." + + # renpy/common/00preferences.rpy:288 + old "display" + new "режим экрана" + + # renpy/common/00preferences.rpy:308 + old "transitions" + new "переходы" + + # renpy/common/00preferences.rpy:317 + old "skip transitions" + new "пропускать переходы" + + # renpy/common/00preferences.rpy:319 + old "video sprites" + new "видео-спрайты" + + # renpy/common/00preferences.rpy:328 + old "show empty window" + new "показывать пустое окно диалога" + + # renpy/common/00preferences.rpy:337 + old "text speed" + new "скорость текста" + + # renpy/common/00preferences.rpy:345 + old "joystick" + new "джойстик" + + # renpy/common/00preferences.rpy:345 + old "joystick..." + new "джойстик..." + + # renpy/common/00preferences.rpy:352 + old "skip" + new "пропускать" + + # renpy/common/00preferences.rpy:355 + old "skip unseen [text]" + new "пропускать весь [text]" + + # renpy/common/00preferences.rpy:360 + old "skip unseen text" + new "пропускать весь текст" + + # renpy/common/00preferences.rpy:362 + old "begin skipping" + new "начать пропуск" + + # renpy/common/00preferences.rpy:366 + old "after choices" + new "после выборов" + + # renpy/common/00preferences.rpy:373 + old "skip after choices" + new "пропускать после выборов" + + # renpy/common/00preferences.rpy:375 + old "auto-forward time" + new "скорость авточтения" + + # renpy/common/00preferences.rpy:389 + old "auto-forward" + new "авточтение" + + # renpy/common/00preferences.rpy:396 + old "Auto forward" + new "Авточтение" + + # renpy/common/00preferences.rpy:399 + old "auto-forward after click" + new "продолжать авточтение после клика" + + # renpy/common/00preferences.rpy:408 + old "automatic move" + new "автоматически передвигать мышь к кнопке" + + # renpy/common/00preferences.rpy:417 + old "wait for voice" + new "ждать голос" + + # renpy/common/00preferences.rpy:426 + old "voice sustain" + new "не останавливать голос" + + # renpy/common/00preferences.rpy:435 + old "self voicing" + new "озвучка через синтезатор речи" + + # renpy/common/00preferences.rpy:438 + old "self voicing enable" + new "включить авто озвучивание" + + # renpy/common/00preferences.rpy:440 + old "self voicing disable" + new "отключить авто озвучивание" + + # renpy/common/00preferences.rpy:444 + old "self voicing volume drop" + new "уменьшение громкости при озвучке через синтезатор речи" + + # renpy/common/00preferences.rpy:452 + old "clipboard voicing" + new "синтез речи из буфера обмена" + + # renpy/common/00preferences.rpy:455 + old "clipboard voicing enable" + new "включить озвучивание буфера обмена" + + # renpy/common/00preferences.rpy:457 + old "clipboard voicing disable" + new "отключить озвучивание буфера обмена" + + # renpy/common/00preferences.rpy:461 + old "debug voicing" + new "режим дебага синтеза речи" + + # renpy/common/00preferences.rpy:464 + old "debug voicing enable" + new "включить дебаг озвучивания" + + # renpy/common/00preferences.rpy:466 + old "debug voicing disable" + new "отключить дебаг озвучивания" + + # renpy/common/00preferences.rpy:470 + old "emphasize audio" + new "усилить громкость заранее заданных звуковых каналов за счёт приглушения остальных каналов" + + # renpy/common/00preferences.rpy:479 + old "rollback side" + new "сторона отката" + + # renpy/common/00preferences.rpy:489 + old "gl powersave" + new "настройка графики. Экономия энергии" + + # renpy/common/00preferences.rpy:495 + old "gl framerate" + new "настройка графики. Частота кадров" + + # renpy/common/00preferences.rpy:498 + old "gl tearing" + new "настройка графики. Разрывание кадров" + + # renpy/common/00preferences.rpy:501 + old "font transform" + new "преобразование шрифта" + + # renpy/common/00preferences.rpy:504 + old "font size" + new "размер шрифта" + + # renpy/common/00preferences.rpy:512 + old "font line spacing" + new "межстрочный интервал" + + # renpy/common/00preferences.rpy:520 + old "system cursor" + new "системный курсор" + + # renpy/common/00preferences.rpy:529 + old "renderer menu" + new "меню рендерера" + + # renpy/common/00preferences.rpy:532 + old "accessibility menu" + new "меню специальных возможностей" + + # renpy/common/00preferences.rpy:535 + old "high contrast text" + new "высококонтрастный текст" + + # renpy/common/00preferences.rpy:544 + old "audio when minimized" + new "звук при сворачивании окна" + + # renpy/common/00preferences.rpy:553 + old "audio when unfocused" + new "звук при расфокусировке" + + # renpy/common/00preferences.rpy:562 + old "web cache preload" + new "предварительная загрузка веб-кэша" + + # renpy/common/00preferences.rpy:577 + old "voice after game menu" + new "голос после меню игры" + + # renpy/common/00preferences.rpy:586 + old "restore window position" + new "восстановить положение окна" + + # renpy/common/00preferences.rpy:595 + old "reset" + new "сбросить" + + # renpy/common/00preferences.rpy:608 + old "main volume" + new "общая громкость" + + # renpy/common/00preferences.rpy:609 + old "music volume" + new "громкость музыки" + + # renpy/common/00preferences.rpy:610 + old "sound volume" + new "громкость звуков" + + # renpy/common/00preferences.rpy:611 + old "voice volume" + new "громкость голоса" + + # renpy/common/00preferences.rpy:612 + old "mute main" + new "режим без звука" + + # renpy/common/00preferences.rpy:613 + old "mute music" + new "без музыки" + + # renpy/common/00preferences.rpy:614 + old "mute sound" + new "без звуков" + + # renpy/common/00preferences.rpy:615 + old "mute voice" + new "без голоса" + + # renpy/common/00preferences.rpy:616 + old "mute all" + new "режим без звука" + + # renpy/common/00preferences.rpy:698 + old "Clipboard voicing enabled. Press 'shift+C' to disable." + new "Озвучка буфера обмена включена. Нажмите 'shift+C', чтобы отключить её." + + # renpy/common/00preferences.rpy:700 + old "Self-voicing would say \"[renpy.display.tts.last]\". Press 'alt+shift+V' to disable." + new "Синтезатор речи должен сказать \"[renpy.display.tts.last]\". Нажмите 'alt+shift+V', чтобы отключить его." + + # renpy/common/00preferences.rpy:702 + old "Self-voicing enabled. Press 'v' to disable." + new "Синтезатор речи включён. Нажмите 'v', чтобы отключить его." + + # renpy/common/00speechbubble.rpy:392 + old "Speech Bubble Editor" + new "Редактор речевых пузырьков" + + # renpy/common/00speechbubble.rpy:397 + old "(hide)" + new "(скрыть)" + + # renpy/common/00speechbubble.rpy:408 + old "(clear retained bubbles)" + new "(очистить сохранившиеся пузыри)" + + # renpy/common/00sync.rpy:70 + old "Sync downloaded." + new "Синхронизация загружена." + + # renpy/common/00sync.rpy:190 + old "Could not connect to the Ren'Py Sync server." + new "Не удалось подключиться к серверу Ren'Py Sync." + + # renpy/common/00sync.rpy:192 + old "The Ren'Py Sync server timed out." + new "Сервер Ren'Py Sync завершил работу по таймеру." + + # renpy/common/00sync.rpy:194 + old "An unknown error occurred while connecting to the Ren'Py Sync server." + new "При подключении к серверу Ren'Py Sync произошла неизвестная ошибка." + + # renpy/common/00sync.rpy:267 + old "The Ren'Py Sync server does not have a copy of this sync. The sync ID may be invalid, or it may have timed out." + new "Сервер Ren'Py Sync не имеет копии этой синхронизации. Идентификатор синхронизации может быть недействительным, или она могла завершиться." + + # renpy/common/00sync.rpy:412 + old "Please enter the sync ID you generated.\nNever enter a sync ID you didn't create yourself." + new "Введите созданный вами идентификатор синхронизации.\nНикогда не вводите идентификатор синхронизации, который вы не создавали сами." + + # renpy/common/00sync.rpy:431 + old "The sync ID is not in the correct format." + new "Идентификатор синхронизации имеет неправильный формат." + + # renpy/common/00sync.rpy:451 + old "The sync could not be decrypted." + new "Синхронизация не может быть расшифрована." + + # renpy/common/00sync.rpy:474 + old "The sync belongs to a different game." + new "Синхронизация относится к другой игре." + + # renpy/common/00sync.rpy:479 + old "The sync contains a file with an invalid name." + new "Синхронизация содержит файл с недопустимым именем." + + # renpy/common/00sync.rpy:538 + old "This will upload your saves to the {a=https://sync.renpy.org}Ren'Py Sync Server{/a}.\nDo you want to continue?" + new "Это загрузит ваши сохранения на сервер {a=https://sync.renpy.org}Ren'Py Sync Server{/a}.\nВы хотите продолжить?" + + # renpy/common/00sync.rpy:546 + old "Yes" + new "Да" + + # renpy/common/00sync.rpy:547 + old "No" + new "Нет" + + # renpy/common/00sync.rpy:569 + old "Enter Sync ID" + new "Введите идентификатор синхронизации" + + # renpy/common/00sync.rpy:580 + old "This will contact the {a=https://sync.renpy.org}Ren'Py Sync Server{/a}." + new "Это позволит связаться с сервером {a=https://sync.renpy.org}Ren'Py Sync Server{/a}." + + # renpy/common/00sync.rpy:609 + old "Sync Success" + new "Успех синхронизации" + + # renpy/common/00sync.rpy:612 + old "The Sync ID is:" + new "Идентификатор синхронизации:" + + # renpy/common/00sync.rpy:618 + old "You can use this ID to download your save on another device.\nThis sync will expire in an hour.\nRen'Py Sync is supported by {a=https://www.renpy.org/sponsors.html}Ren'Py's Sponsors{/a}." + new "Вы можете использовать этот идентификатор для загрузки сохранения на другое устройство.\nСрок действия этой синхронизации истечет через час.\nRen'Py Sync поддерживается спонсорами {a=https://www.renpy.org/sponsors.html}Ren'Py's Sponsors{/a}." + + # renpy/common/00sync.rpy:622 + old "Continue" + new "Продолжить" + + # renpy/common/00sync.rpy:646 + old "Sync Error" + new "Ошибка синхронизации" + + # renpy/common/00iap.rpy:231 + old "Contacting App Store\nPlease Wait..." + new "Связываюсь с App Store\nПожалуйста, ждите..." + + # renpy/common/00updater.rpy:505 + old "No update methods found." + new "Не найдено ни одного метода обновления." + + # renpy/common/00updater.rpy:552 + old "Could not download file list: " + new "Не удалось загрузить список файлов: " + + # renpy/common/00updater.rpy:555 + old "File list digest does not match." + new "Дайджест списка файлов не совпадает." + + # renpy/common/00updater.rpy:763 + old "An error is being simulated." + new "Симулируется ошибка." + + # renpy/common/00updater.rpy:951 + old "Either this project does not support updating, or the update status file was deleted." + new "Или этот проект не поддерживает обновление, или файл статуса обновления был удалён." + + # renpy/common/00updater.rpy:965 + old "This account does not have permission to perform an update." + new "У этого аккаунта нет прав проводить обновление." + + # renpy/common/00updater.rpy:968 + old "This account does not have permission to write the update log." + new "У этого аккаунта нет прав писать лог обновления." + + # renpy/common/00updater.rpy:1048 + old "Could not verify update signature." + new "Не могу верифицировать подпись обновления." + + # renpy/common/00updater.rpy:1367 + old "The update file was not downloaded." + new "Файл обновления не был загружен." + + # renpy/common/00updater.rpy:1385 + old "The update file does not have the correct digest - it may have been corrupted." + new "Файл обновления не содержит корректного дайджеста — он может быть повреждён." + + # renpy/common/00updater.rpy:1535 + old "While unpacking {}, unknown type {}." + new "При распаковке {} обнаружен неизвестный тип {}." + + # renpy/common/00updater.rpy:2015 + old "Updater" + new "Обновление" + + # renpy/common/00updater.rpy:2022 + old "An error has occured:" + new "Возникла ошибка:" + + # renpy/common/00updater.rpy:2024 + old "Checking for updates." + new "Проверка обновлений." + + # renpy/common/00updater.rpy:2026 + old "This program is up to date." + new "Эта программа обновлена." + + # renpy/common/00updater.rpy:2028 + old "[u.version] is available. Do you want to install it?" + new "[u.version] доступна. Вы хотите её установить?" + + # renpy/common/00updater.rpy:2030 + old "Preparing to download the updates." + new "Подготовка к загрузке обновлений." + + # renpy/common/00updater.rpy:2032 + old "Downloading the updates." + new "Загрузка обновлений." + + # renpy/common/00updater.rpy:2034 + old "Unpacking the updates." + new "Распаковка обновлений." + + # renpy/common/00updater.rpy:2036 + old "Finishing up." + new "Завершаю..." + + # renpy/common/00updater.rpy:2038 + old "The updates have been installed. The program will restart." + new "Обновления установлены. Программа будет перезапущена." + + # renpy/common/00updater.rpy:2040 + old "The updates have been installed." + new "Обновления были установлены." + + # renpy/common/00updater.rpy:2042 + old "The updates were cancelled." + new "Обновления были отменены." + + # renpy/common/00updater.rpy:2057 + old "Proceed" + new "Продолжить" + + # renpy/common/00updater.rpy:2072 + old "Preparing to download the game data." + new "Подготовка к загрузке данных игры." + + # renpy/common/00updater.rpy:2074 + old "Downloading the game data." + new "Загрузка данных игры." + + # renpy/common/00updater.rpy:2076 + old "The game data has been downloaded." + new "Данные игры загружены." + + # renpy/common/00updater.rpy:2078 + old "An error occured when trying to download game data:" + new "При попытке загрузить данные игры произошла ошибка:" + + # renpy/common/00updater.rpy:2083 + old "This game cannot be run until the game data has been downloaded." + new "Эту игру невозможно запустить до тех пор, пока не будут загружены данные игры." + + # renpy/common/00updater.rpy:2090 + old "Retry" + new "Повторить попытку" + + # renpy/common/00compat.rpy:421 + old "Fullscreen" + new "Полный" + + # renpy/common/00gallery.rpy:627 + old "Image [index] of [count] locked." + new "Изображение [index] из [count] закрыто." + + # renpy/common/00gallery.rpy:647 + old "prev" + new "пред" + + # renpy/common/00gallery.rpy:648 + old "next" + new "след" + + # renpy/common/00gallery.rpy:649 + old "slideshow" + new "слайд-шоу" + + # renpy/common/00gallery.rpy:650 + old "return" + new "вернуться" + + # renpy/common/00gltest.rpy:89 + old "Renderer" + new "Рендер" + + # renpy/common/00gltest.rpy:93 + old "Automatically Choose" + new "Выбирать Автоматически" + + # renpy/common/00gltest.rpy:100 + old "Force GL Renderer" + new "Принудительный GL рендеринг" + + # renpy/common/00gltest.rpy:105 + old "Force ANGLE Renderer" + new "Принудительный ANGLE рендеринг" + + # renpy/common/00gltest.rpy:110 + old "Force GLES Renderer" + new "Принудительный GLES рендеринг" + + # renpy/common/00gltest.rpy:116 + old "Force GL2 Renderer" + new "Принудительный GL2 рендеринг" + + # renpy/common/00gltest.rpy:121 + old "Force ANGLE2 Renderer" + new "Принудительный ANGLE2 рендеринг" + + # renpy/common/00gltest.rpy:126 + old "Force GLES2 Renderer" + new "Принудительный GLES2 рендеринг" + + # renpy/common/00gltest.rpy:132 + old "Gamepad" + new "Геймпад" + + # renpy/common/00gltest.rpy:136 + old "Enable (No Blocklist)" + new "Включить (игнорировать блоклист)" + + # renpy/common/00gltest.rpy:150 + old "Calibrate" + new "Калибровка" + + # renpy/common/00gltest.rpy:159 + old "Powersave" + new "Экономия энергии" + + # renpy/common/00gltest.rpy:173 + old "Framerate" + new "Частота кадров" + + # renpy/common/00gltest.rpy:177 + old "Screen" + new "Экранная" + + # renpy/common/00gltest.rpy:181 + old "60" + new "60" + + # renpy/common/00gltest.rpy:185 + old "30" + new "30" + + # renpy/common/00gltest.rpy:191 + old "Tearing" + new "Разрывание кадров" + + # renpy/common/00gltest.rpy:207 + old "Changes will take effect the next time this program is run." + new "Изменения вступят в силу при следующем запуске программы." + + # renpy/common/00gltest.rpy:214 + old "Quit" + new "Выход" + + # renpy/common/00gltest.rpy:242 + old "Performance Warning" + new "Предупреждение Производительности" + + # renpy/common/00gltest.rpy:247 + old "This computer is using software rendering." + new "Этот компьютер использует программный рендеринг." + + # renpy/common/00gltest.rpy:249 + old "This game requires use of GL2 that can't be initialised." + new "Эта игра требует использование GL2 который не может быть инициализирован." + + # renpy/common/00gltest.rpy:251 + old "This computer has a problem displaying graphics: [problem]." + new "У этого компьютера проблема с отображением графики: [problem]" + + # renpy/common/00gltest.rpy:255 + old "Its graphics drivers may be out of date or not operating correctly. This can lead to slow or incorrect graphics display." + new "Графические драйвера устарели или работают неверно. Это может привести к медленному или неверному отображению графики." + + # renpy/common/00gltest.rpy:259 + old "The {a=edit:1:log.txt}log.txt{/a} file may contain information to help you determine what is wrong with your computer." + new "Файл {a=edit:1:log.txt}log.txt{/a} может содержать информацию, которая поможет вам определить, что не так с вашим компьютером." + + # renpy/common/00gltest.rpy:264 + old "More details on how to fix this can be found in the {a=[url]}documentation{/a}." + new "Больше информации о том как это может быть исправлено смотрите в {a=[url]}документации{/a}." + + # renpy/common/00gltest.rpy:269 + old "Continue, Show this warning again" + new "Продолжить, Показать это предупреждение снова" + + # renpy/common/00gltest.rpy:273 + old "Continue, Don't show warning again" + new "Продолжить, Не показывать это предупреждение снова." + + # renpy/common/00gltest.rpy:281 + old "Change render options" + new "Изменить настройки рендеринга" + + # renpy/common/00gamepad.rpy:32 + old "Select Gamepad to Calibrate" + new "Выберите Геймпад для Калибровки" + + # renpy/common/00gamepad.rpy:35 + old "No Gamepads Available" + new "Геймпады Не Обнаружены" + + # renpy/common/00gamepad.rpy:54 + old "Calibrating [name] ([i]/[total])" + new "Калибрую [name] ([i]/[total])" + + # renpy/common/00gamepad.rpy:58 + old "Press or move the '[control!s]' [kind]." + new "Нажмите или сдвиньте [kind] '[control!s]'" + + # renpy/common/00gamepad.rpy:68 + old "Skip (A)" + new "Пропуск (A)" + + # renpy/common/00gamepad.rpy:71 + old "Back (B)" + new "Спина (B)" + + # renpy/common/_errorhandling.rpym:662 + old "Open" + new "Журнал" + + # renpy/common/_errorhandling.rpym:664 + old "Opens the traceback.txt file in a text editor." + new "Открывает файл traceback.txt в текстовом редакторе." + + # renpy/common/_errorhandling.rpym:666 + old "Copy BBCode" + new "Скопировать как BBCode" + + # renpy/common/_errorhandling.rpym:668 + old "Copies the traceback.txt file to the clipboard as BBcode for forums like https://lemmasoft.renai.us/." + new "Копирует файл traceback.txt в буфер обмена как BBCode для форумов типа https://lemmasoft.renai.us/." + + # renpy/common/_errorhandling.rpym:670 + old "Copy Markdown" + new "Скопировать как Markdown" + + # renpy/common/_errorhandling.rpym:672 + old "Copies the traceback.txt file to the clipboard as Markdown for Discord." + new "Копирует файл traceback.txt в буфер обмена как Markdown для Дискорда." + + # renpy/common/_errorhandling.rpym:703 + old "An exception has occurred." + new "Возникло исключение." + + # renpy/common/_errorhandling.rpym:726 + old "Rollback" + new "Назад" + + # renpy/common/_errorhandling.rpym:728 + old "Attempts a roll back to a prior time, allowing you to save or choose a different choice." + new "Пытается вернуться назад, позволяя вам сохраниться или принять другой выбор." + + # renpy/common/_errorhandling.rpym:731 + old "Ignore" + new "Игнорировать" + + # renpy/common/_errorhandling.rpym:735 + old "Ignores the exception, allowing you to continue." + new "Игнорирует это исключение, позволяя вам продолжить." + + # renpy/common/_errorhandling.rpym:737 + old "Ignores the exception, allowing you to continue. This often leads to additional errors." + new "Игнорирует это исключение, позволяя вам продолжить. Зачастую это ведёт к дополнительным ошибкам." + + # renpy/common/_errorhandling.rpym:741 + old "Reload" + new "Перезагрузить" + + # renpy/common/_errorhandling.rpym:743 + old "Reloads the game from disk, saving and restoring game state if possible." + new "Перезагружает игру с диска, сохраняя и восстанавливая её состояние, если это возможно." + + # renpy/common/_errorhandling.rpym:746 + old "Console" + new "Консоль" + + # renpy/common/_errorhandling.rpym:748 + old "Opens a console to allow debugging the problem." + new "Открывает консоль, позволяющую отладить проблему." + + # renpy/common/_errorhandling.rpym:761 + old "Quits the game." + new "Выходит из игры." + + # renpy/common/_errorhandling.rpym:782 + old "Parsing the script failed." + new "Обработка сценария завершилась неудачно." + + # renpy/common/_developer/developer.rpym:38 + old "Developer Menu" + new "Меню разработчика" + + # renpy/common/_developer/developer.rpym:43 + old "Interactive Director (D)" + new "Интерактивный Директор (D)" + + # renpy/common/_developer/developer.rpym:45 + old "Reload Game (Shift+R)" + new "Перезагрузить игру (Shift+R)" + + # renpy/common/_developer/developer.rpym:47 + old "Console (Shift+O)" + new "Консоль (Shift+O)" + + # renpy/common/_developer/developer.rpym:49 + old "Variable Viewer" + new "Просмотр переменных" + + # renpy/common/_developer/developer.rpym:51 + old "Persistent Viewer" + new "Постоянный просмотрщик" + + # renpy/common/_developer/developer.rpym:53 + old "Image Location Picker" + new "Инструмент позиционирования на изображениях" + + # renpy/common/_developer/developer.rpym:55 + old "Filename List" + new "Список файлов" + + # renpy/common/_developer/developer.rpym:59 + old "Show Image Load Log (F4)" + new "Показать лог загрузки изображений (F4)" + + # renpy/common/_developer/developer.rpym:62 + old "Hide Image Load Log (F4)" + new "Скрыть лог загрузки изображений (F4)" + + # renpy/common/_developer/developer.rpym:65 + old "Image Attributes" + new "Аттрибуты изображения" + + # renpy/common/_developer/developer.rpym:69 + old "Show Translation Identifiers" + new "Показывать идентификаторы перевода" + + # renpy/common/_developer/developer.rpym:72 + old "Hide Translation Identifiers" + new "Скрыть идентификаторы перевода" + + # renpy/common/_developer/developer.rpym:77 + old "Speech Bubble Editor (Shift+B)" + new "Редактор речевых пузырьков (Shift+B)" + + # renpy/common/_developer/developer.rpym:81 + old "Show Filename and Line" + new "Показывать имя файла и строку" + + # renpy/common/_developer/developer.rpym:84 + old "Hide Filename and Line" + new "Скрыть имя файла и строку" + + # renpy/common/_developer/developer.rpym:127 + old "Layer [l]:" + new "Слой [l]:" + + # renpy/common/_developer/developer.rpym:131 + old " [name] [attributes] (hidden)" + new " [name] [attributes] (скрытый)" + + # renpy/common/_developer/developer.rpym:135 + old " [name] [attributes]" + new " [name] [attributes]" + + # renpy/common/_developer/developer.rpym:187 + old "Nothing to inspect." + new "Переменные не заданы." + + # renpy/common/_developer/developer.rpym:198 + old "Hide deleted" + new "Скрыть удалённые" + + # renpy/common/_developer/developer.rpym:198 + old "Show deleted" + new "Показать удалённые" + + # renpy/common/_developer/developer.rpym:349 + old "Rectangle copied to clipboard." + new "Координаты прямоугольника скопированы в буфер обмена." + + # renpy/common/_developer/developer.rpym:352 + old "Position copied to clipboard." + new "Координаты позиции скопированы в буфер обмена." + + # renpy/common/_developer/developer.rpym:364 + old "Rectangle: %r" + new "Прямоугольник: %r" + + # renpy/common/_developer/developer.rpym:367 + old "Mouse position: %r" + new "Позиция мыши: %r" + + # renpy/common/_developer/developer.rpym:372 + old "Right-click or escape to quit." + new "Нажмите правую кнопку мыши или ESC чтобы выйти." + + # renpy/common/_developer/developer.rpym:420 + old "Type to filter: " + new "Текущий фильтр: " + + # renpy/common/_developer/developer.rpym:538 + old "Textures: [tex_count] ([tex_size_mb:.1f] MB)" + new "Текстур: [tex_count] ([tex_size_mb:.1f] МБ)" + + # renpy/common/_developer/developer.rpym:542 + old "Image cache: [cache_pct:.1f]% ([cache_size_mb:.1f] MB)" + new "Кеш изображений: [cache_pct:.1f]% ([cache_size_mb:.1f] МБ)" + + # renpy/common/_developer/developer.rpym:552 + old "✔ " + new "✔ " + + # renpy/common/_developer/developer.rpym:555 + old "✘ " + new "✘ " + + # renpy/common/_developer/developer.rpym:560 + old "\n{color=#cfc}✔ predicted image (good){/color}\n{color=#fcc}✘ unpredicted image (bad){/color}\n{color=#fff}Drag to move.{/color}" + new "\n{color=#cfc}✔ предсказанное изображение (хорошо){/color}\n{color=#fcc}✘ внезапное изображение (плохо){/color}\n{color=#fff}Нажмите, чтобы передвинуть.{/color}" + + # renpy/common/_developer/developer.rpym:606 + old "\n{color=#fff}Copied to clipboard.{/color}" + new "\n{color=#fff}Скопировано в буфер обмена.{/color}" + + # renpy/common/_developer/developer.rpym:612 + old "\n{color=#fff}Click to copy.\nDrag to move.{/color}" + new "\n{color=#fff}Нажмите, чтобы скопировать.\nПеретащите, чтобы переместить.{/color}" + + # renpy/common/_developer/developer.rpym:657 + old "Click to open in editor." + new "Нажмите, чтобы открыть в текстовом редакторе." + + # renpy/common/_developer/inspector.rpym:38 + old "Displayable Inspector" + new "Диспетчер объектов" + + # renpy/common/_developer/inspector.rpym:61 + old "Size" + new "Разрешение" + + # renpy/common/_developer/inspector.rpym:65 + old "Style" + new "Стиль" + + # renpy/common/_developer/inspector.rpym:71 + old "Location" + new "Местоположение" + + # renpy/common/_developer/inspector.rpym:122 + old "Inspecting Styles of [displayable_name!q]" + new "Инспектирую стили [displayable_name!q]" + + # renpy/common/_developer/inspector.rpym:139 + old "displayable:" + new "объект:" + + # renpy/common/_developer/inspector.rpym:145 + old " (no properties affect the displayable)" + new " (на объект не влияют никакие параметры)" + + # renpy/common/_developer/inspector.rpym:147 + old " (default properties omitted)" + new " (настройки по умолчанию опущены)" + + # renpy/common/_developer/inspector.rpym:185 + old "" + new "" + + # renpy/common/00console.rpy:537 + old "Press to exit console. Type help for help.\n" + new "Нажмите , чтобы выйти из консоли. Введите help для помощи.\n" + + # renpy/common/00console.rpy:541 + old "Ren'Py script enabled." + new "Ren'Py script активирован." + + # renpy/common/00console.rpy:543 + old "Ren'Py script disabled." + new "Ren'Py script деактивирован." + + # renpy/common/00console.rpy:793 + old "help: show this help\n help : show signature and documentation of " + new "help: покажите эту помощь\n help : показать подпись и документацию : run the statement\n" + new " <оператор renpy script>: запуск оператора\n" + + # renpy/common/00console.rpy:838 + old " : run the expression or statement" + new " <выражение или оператор python>: запустить выражение или оператор" + + # renpy/common/00console.rpy:846 + old "clear: clear the console history" + new "clear: очищает историю консоли" + + # renpy/common/00console.rpy:850 + old "exit: exit the console" + new "exit: выход из консоли" + + # renpy/common/00console.rpy:858 + old "stack: print the return stack" + new "stack: выводит стэк возврата (return stack)" + + # renpy/common/00console.rpy:880 + old "load : loads the game from slot" + new "load <слот>: загружает игру из выбранного слота" + + # renpy/common/00console.rpy:893 + old "save : saves the game in slot" + new "save <слот>: сохраняет игру в выбранный слот" + + # renpy/common/00console.rpy:904 + old "reload: reloads the game, refreshing the scripts" + new "reload: перезагружает игру, обновляет скрипты" + + # renpy/common/00console.rpy:912 + old "watch : watch a python expression\n watch short: makes the representation of traced expressions short (default)\n watch long: makes the representation of traced expressions as is" + new "watch <выражение>: наблюдать за выражением python\n watch short: укорачивает отображение отслеживаемых выражений (по умолчанию)\n watch long: делает отображение отслеживаемых выражений как есть" + + # renpy/common/00console.rpy:949 + old "unwatch : stop watching an expression" + new "unwatch <выражение>: прекратить наблюдать за выражением" + + # renpy/common/00console.rpy:995 + old "unwatchall: stop watching all expressions" + new "unwatchall: глобальное прекращение наблюдения" + + # renpy/common/00console.rpy:1016 + old "jump