/
PGStudio
/
DiplomaProject
Обзор
Документация
Войти
/
PGStudio
/
DiplomaProject
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
CI/CD
Аналитика
Безопасность
master
scripts/chapters/Demo.gd
341 строка
24 KB
PGStudio
-
21 июн 2026, 23:04
21 июн 2026, 23:04
c8a06fe
Код
Авторство
О чём код?
extends Node2D @onready var VN: Node2D = $VisualNovel @export var Characters: Dictionary[String, PackedScene] @export var Backgrounds: Dictionary[String, PackedScene] @export var TextboxThemes: Dictionary[String, PackedScene] @export var SelectionScreenThemes: Dictionary[String, PackedScene] func _ready() -> void: VN.add_backgrounds(Backgrounds) VN.add_characters(Characters) VN.add_textbox_themes(TextboxThemes) VN.add_selection_screen_themes(SelectionScreenThemes) #VN.set_autoplay(true) plot() func _process(_delta: float) -> void: if Input.is_action_just_pressed("exit"): if VN.SelectionScreen.is_active(): VN.SelectionScreen.set_active(false) VN.Textbox.modulate = VN.Textbox.modulate.darkened(-1.0) VN.DisplayBackgrounds.modulate = VN.DisplayBackgrounds.modulate.darkened(-1.0) VN.DisplayCharacters.modulate = VN.DisplayCharacters.modulate.darkened(-1.0) return var texts: Array = [ "Продолжить игру", "Сохранить игру", "Выйти в меню" ] var functions: Array = [ func(): VN.SelectionScreen.set_active(false) VN.Textbox.modulate = VN.Textbox.modulate.darkened(-1.0) VN.DisplayBackgrounds.modulate = VN.DisplayBackgrounds.modulate.darkened(-1.0) VN.DisplayCharacters.modulate = VN.DisplayCharacters.modulate.darkened(-1.0), func(): VN.save_procedure() queue_free() get_tree().change_scene_to_file("res://scenes/UI/StartMenu.tscn"), func(): queue_free() get_tree().change_scene_to_file("res://scenes/UI/StartMenu.tscn") ] VN.Textbox.modulate = VN.Textbox.modulate.darkened(0.5) VN.DisplayBackgrounds.modulate = VN.DisplayBackgrounds.modulate.darkened(0.5) VN.DisplayCharacters.modulate = VN.DisplayCharacters.modulate.darkened(0.5) VN.SelectionScreen.set_function_buttons(texts, functions) func plot() -> void: # Приветствие VN.wait() VN.jump("Plot") # Тестирование VN.label("Test") VN.send_message("Тест") VN.jump("End") # Начало сюжета VN.label("Plot") VN.send_message("Добро пожаловать в демо нашего дипломного проекта!") VN.send_message("Начинается пролог...") # Пролог VN.send_message("Все, здесь присутствующие, уже прошли крещение двумя испытаниями. Вы доказали свои знания умением использовать заклинания, показали своё владение мечом.", "Дьякон") VN.send_message("Да, много ваших товарищей не прошло.", "Дьякон") VN.send_message("В любом случае, их отсутствие - показатель несовершенства. Такие люди лишь опозорили бы нашу церковь.", "Дьякон") VN.send_message("В вашем случае, ваше успешное завершение испытания - показатель нашей способности противостоять злу, что плодится в лесах, изничтожает наши селения, превращая таковые в генздилища богопротивных тварей.", "Дьякон") VN.send_message("А теперь давайте перейдем к формальной части крещения, вручению меча. Мастер рун нашего города постарался над эфесом каждого из шести присутствующих.", "Дьякон") VN.send_message("Дьякон, который так радостно смотрел на новоприбывших защитников церкви, приносил с алтаря мечи, начиная с левого и вручая левому в линейке практиканту.") VN.send_message("Пролог закончился, теперь глава I начинается...") VN.send_message("") # Глава 1 VN.set_background("Кабинет") VN.send_message("У нас плохие вести.", "Николай") VN.send_message("Пропал недавно зачисленный в наши списки солдат. Его отец еще не знает, но как ты поймешь, что с ним стало, поедешь к нему и расскажешь, либо он сам расскажет.", "Николай") VN.send_message("Хотя и полагаю, что сам практик уже не сможет... Последний раз его, Артема, видели в отчине, которой заведует Василий Сарофский.", "Николай") VN.send_message("Поезжай туда и возьми с собой оставшуюся в городе часть поступивших.", "Николай") VN.show_character("Кирилл", "center") VN.set_focus_mode(true) VN.focus_character(["Кирилл"]) VN.send_message("Ну да, нужен же им какой-то опыт...", "Кирилл") VN.send_message("Хорошо, пойду готовиться к завтрашнему дню.", "Кирилл") VN.focus_character([]) VN.send_message("Выезжаешь сегодня-же!", "Николай") VN.send_message("Через 4 дня начинается инспекция города, в которой он должен был участвовать, если не найдётся...", "Николай") VN.focus_character(["Кирилл"]) VN.send_message("Так, осталось лишь надеяться, что все оставшиеся сейчас в одной кормче.", "Мысль Кирилла") VN.send_message("Повернувшись на пятке, инквизитор пошел ровным шагом. Дойдя до двери, он вспомнил зачем вообще зашел к его высокородию – Архимагу Николаю Варгунину.") VN.send_message("Простите, я подавал прошение на повышение ранга, оно рассмотрено?", "Кирилл") VN.focus_character([]) VN.send_message("До меня ничего не доходило.", "Николай") VN.selections( ["Промолчать и уйти.", "Спокойно, но настойчиво напомнить.", "Сдержанно, но язвительно."], ["Selection00", "Selection01", "Selection02"] ) VN.label("Selection00") VN.focus_character(["Кирилл"]) VN.send_message("Ладно...", "Кирилл") VN.jump("EndSelection0") VN.label("Selection01") VN.focus_character(["Кирилл"]) VN.send_message("Но ваше высокородие, прошение лежит у вас третий день. Я понимаю занятость, но смею попросить уделить минуту.", "Кирилл") VN.send_message("Служу уже семь лет, а им лишь бы кровь благородной была.", "Мысль Кирилла") VN.focus_character([]) VN.send_message("Архимаг удивился настырности Кирилла и нехотя открыл конверт.") VN.send_message("А... У меня полно дел, я не распечатал тот конверт.", "Николай") VN.focus_character(["Кирилл"]) VN.send_message("...", "Кирилл") VN.send_message("Да Боже ты мой! А может ты его вообще сжег?", "Мысль Кирилла") VN.send_message("Лицо Кирилла не выдавало негодования.") VN.focus_character([]) VN.send_message("Кирилл, зайди ко мне до показательного обхода, отказывать тебе нет причин, но все формальности нужно соблюсти.", "Николай") VN.send_message("Архимаг небрежно помахивал в сторону двери, чтобы у него над ухом никто не жужжал.") VN.focus_character(["Кирилл"]) VN.send_message("Буду непременно!", "Кирилл") VN.jump("EndSelection0") VN.label("Selection02") VN.focus_character(["Кирилл"]) VN.send_message("Разумеется, ваше высокородие. У вас, наверное, и другие важные дела, кроме как подписывать бумаги тех, кто семь лет вытирает кровь за церковь.", "Кирилл") VN.focus_character([]) VN.send_message("Кто вам учили так обращаться ко мне?", "Николай") VN.send_message("Архимаг разозлился, но может и проникнуться уважением к прямоте.") VN.send_message("Ладно, зайди ко мне после показательного обхода, отказывать тебе нет причин, но все формальности нужно соблюсти.", "Николай") VN.focus_character(["Кирилл"]) VN.send_message("Хорошо.", "Кирилл") VN.label("EndSelection0") VN.send_message("Повернувшись к двери, он вышел и тихонько закрыл окованную дверь.") VN.send_message("") VN.set_focus_mode(false) VN.show_character("Кирилл", "left") VN.show_character("Кирилл", "hide") VN.set_background("") VN.set_background("Улица") VN.send_message("Что же, теперь на поиски отряда, чтобы отыскать их товарщиа!", "Мысль Кирилла") VN.send_message("Может...", "Мысль Кирилла") VN.send_message("Нет, обойдусь", "Мысль Кирилла") VN.send_message("") VN.set_background("") VN.set_background("Таверна") VN.show_character("Кирилл", "center") VN.send_message("Бывшие неофиты подняли голову, остановили свой разговор и непонимающе посмотрели на новое лицо за их столом.") VN.send_message("Никто не пошевелился, каждый из четырех пытался понять, где мог видеть этого человека, но никто не вспомнил.") VN.send_message("Когда незнакомец снял плащ, на рукаве красовались символы подразеделения, к которому он принадлежит.") VN.send_message("Сразу стало понятно, что он с их части, и знавение у него на порядок выше.") VN.send_message("В целях соблюдения субординации, каждый кивнул и коснулся груди.") VN.send_message("Чистая вера!", "Практики") VN.send_message("Почти хором проговорили практики.") VN.send_message("Чистое сердце.", "Практик") VN.set_focus_mode(true) VN.focus_character(["Кирилл"]) VN.send_message("Вы из всех харчевнь, из всех пабов, из всех трактиров выбрали самый далекий!", "Кирилл") VN.send_message("Без вяского энтузиазма ответил инквизитор.") VN.send_message("Тут не так дешево, а дома ваши вообще в другом конце города! Я пол дня потратил, чтобы вас отыскать. Объясните, почему вы выбрали это место?", "Кирилл") VN.send_message("Дав знак рукой трактирщику, он уставился на будущий отряд.") VN.focus_character([]) VN.send_message("Ну, в общем. Мы не хотели связываться с военными магами, а еще тут Алиса.", "Практик") VN.selections( ["Строгий выговор.", "С пониманием.", "С насмешкой."], ["Selection10", "Selection11", "Selection12"] ) VN.label("Selection10") VN.focus_character(["Кирилл"]) VN.send_message("Кто тут есть? Так, не понял, в ближние трактиры вас не пускают? Почему? Если к вам плохо относятся сослуживцы ордена, об этом стоило сказать начальству.", "Кирилл") VN.send_message("Это соблюдение правил порядка, о таком докладывают сразу.", "Кирилл") VN.send_message("Если кто-то увидит, как люди ордена между собою трутся, они ведь подумают плохо про весь орден сразу.", "Кирилл") VN.send_message("В следующий раз такого не прощайте.", "Кирилл") VN.jump("EndSelection1") VN.label("Selection11") VN.focus_character(["Кирилл"]) VN.send_message("Ладно, бывает. Военные маги - те еще зазнайки. Но в следующий раз предупреждайте меня, я разберусь.") VN.jump("EndSelection1") VN.label("Selection12") VN.focus_character(["Кирилл"]) VN.send_message("Боитесь магов? А как же фраза «Чистая вера»?") VN.send_message("Или вы только перед начальством её говорите?") VN.focus_character([]) VN.send_message("Практики неловко замолчали.") VN.focus_character(["Кирилл"]) VN.send_message("...") VN.label("EndSelection1") VN.focus_character([]) VN.send_message("Трактирщик аккуратно поставил рагу перед господином, поклонился и пошел к другому столику.") VN.send_message("А для чего вы решили нас найти?", "Толстый парень") VN.send_message("Неуверенным тоном спросил толстый парень, как будь то сомневаясь в логике своего вопроса.") VN.focus_character(["Кирилл"]) VN.send_message("Я ваш наставник, зовут меня Кирилл.", "Кирилл") VN.send_message("Очень неожиданно для всех, у нас появилось поручение от его высокородия - Архимага Николаса. Знаете, куда делся Вольнер?", "Кирилл") VN.send_message("Спросил Кирилл беря в рот очередную ложку рагу.") VN.focus_character([]) VN.send_message("Да, он говорил, что собирается к барону южной волости, чтобы жениться на его дочери", "Практик") VN.send_message("Сказал парень, у которого уже появлялась редкая бородка.") VN.selections( ["Скептицизм.", "Нейтрально-профессионально.", "С ноткой зависти или ностальгии."], ["Selection20", "Selection21", "Selection22"] ) VN.label("Selection20") VN.focus_character(["Кирилл"]) VN.send_message("Жениться? Среди службы? Глупец...", "Кирилл") VN.send_message("Ладно, поедем вытаскивать его из этой авантюры.", "Кирилл") VN.jump("EndSelection2") VN.label("Selection21") VN.focus_character(["Кирилл"]) VN.send_message("Вот туда мы и поедем, недавно выяснилось, что он пропал.", "Кирилл") VN.jump("EndSelection2") VN.label("Selection22") VN.focus_character(["Кирилл"]) VN.send_message("Жениться... Хорошее дело. Только время неподходящее. Ладно проверим, как там наш романтик.", "Кирилл") VN.label("EndSelection2") VN.send_message("Так, а где четвертый товарищ?", "Кирилл") VN.send_message("Закусывая куском теплого хлеба спросил наставник.") VN.focus_character([]) VN.send_message("Ну, в общем. Он как раз с Алисой.", "Практик") VN.send_message("Сказал рябой, опустив глаза в пустую кружку.") VN.focus_character(["Кирилл"]) VN.send_message("Мм, ну как закончит, подходите к южным воротам. Возьмите с собой всё снаряжение, лошадей нам дадут.", "Кирилл") VN.send_message("Сказал Кирилл, выскребая остатки из миски.") VN.focus_character([]) VN.send_message("Хорошо, значит завтра утром встретимся?", "Практик") VN.send_message("Спросил рябой.") VN.selections( ["Сегодня вечером.", "Завтра на рассвете."], ["Selection30", "Selection31"] ) VN.label("Selection30") VN.focus_character(["Кирилл"]) VN.send_message("Сегодня вечером!", "Кирилл") VN.send_message("Я ведь сказал, как закончит!", "Кирилл") VN.jump("EndSelection3") VN.label("Selection31") VN.focus_character(["Кирилл"]) VN.send_message("Выспитесь хорошенько. Выезжаем, как солнце встанет", "Кирилл") VN.label("EndSelection3") VN.send_message("Через четыре дня начинается показательный обход, в котором он должен был участвовать, если не найдётся, его спишут.", "Кирилл") VN.send_message("Сказал Кирилл вспомнив, как это неприятно прозвучало для него несколько часов назад.") VN.send_message("") VN.show_character("Кирилл", "hide") VN.set_focus_mode(false) VN.set_background("") VN.set_background("Улица") VN.show_character("Кирилл", "center") VN.send_message("Стоя у южных ворот, Кирилл зыркал по сторонам, ожидая отряд.") VN.set_focus_mode(true) VN.focus_character(["Кирилл"]) VN.send_message("Черт, успел бы сходить за...", "Кирилл") VN.show_character("Кирилл", "right") VN.show_character("Мелен", "left") VN.focus_character(["Мелен"]) VN.send_message("Здравствуйте, почтенный!", "Практик") VN.send_message("Мы собрались.", "Практик") VN.send_message("Сказал стройный парень, неожиданно выскочивший из-за спины Кирилла.") VN.focus_character(["Кирилл"]) VN.send_message("Фуф...", "Кирилл") VN.send_message("Зачем так пугать!", "Кирилл") VN.send_message("...", "Кирилл") VN.send_message("Пришло самое время познакомиться, начнем с тебя.", "Кирилл") VN.show_character("Мелен", "hide") VN.show_character("Витомир", "left") VN.send_message("Кирилл указал пальцем на парня с редкой бородкой.") VN.focus_character(["Витомир"]) VN.send_message("Мое имя Витомир.", "Витомир") VN.send_message("Сказал он, проводя большим пальцем по краю губ.") VN.focus_character(["Кирилл"]) VN.send_message("Что хоть он все время их трогает, один ус растет...", "Мысль Кирилла") VN.show_character("Витомир", "hide") VN.send_message("Ты", "Кирилл") VN.send_message("Сказал Кирилл, кивнув в сторону полного солдат.") VN.focus_character([]) VN.send_message("Э-э, Димион.", "Димион") VN.send_message("Представился солдат, словно ему было неловко произносить свое имя.") VN.focus_character(["Кирилл"]) VN.send_message("Над ним что, издевались в детстве? Чего он такой стеснительный?", "Мысль Кирилла") VN.show_character("Ризин", "center").time(0.0) VN.show_character("Мелен", "left") VN.focus_character(["Ризин"]) VN.send_message("Ну, в общем, я Ризин, мне девятнадцать.", "Ризин") VN.focus_character(["Кирилл"]) VN.send_message("Наконец-то взяли инициативу.", "Мысль Кирилла") VN.send_message("Хм, на вид самый молодой.", "Мысль Кирилла") VN.focus_character(["Мелен"]) VN.send_message("Я Мелен, мне двадцать. Извиняюсь, что напугал, но я так внезапно на вас наткнулся, что чуть сам не вскрикнул.", "Мелен") VN.focus_character(["Кирилл"]) VN.send_message("Очень уж он незаметно ко мне подошел, неужели у него уже есть навыки скрытности?", "Мысль Кирилла") VN.show_character("Ризин", "hide").time(0.0) VN.show_character("Мелен", "hide").time(0.0) VN.show_character("Кирилл", "center") VN.send_message("Повторю еще раз, я Кирилл, наставник вашей группы.", "Кирилл") VN.send_message("Если нужно повышение - обращайтесь, если нужен отдых - обращайтесь, если к вам пристают из другой группы - обращайтесь.", "Кирилл") VN.send_message("Если вы что-то натворили - расскажите, сделаем вид, что ничего не было.", "Кирилл") VN.send_message("Все услышали?", "Кирилл") VN.set_focus_mode(false) VN.show_character("Кирилл", "hide").time(0.0) VN.show_character("Витомир", "left").time(0.0) VN.show_character("Мелен", "center").time(0.0) VN.show_character("Ризин", "right") VN.send_message("ДА!!", "Все") VN.show_character("Кирилл", "center").time(0.0) VN.show_character("Витомир", "hide").time(0.0) VN.show_character("Мелен", "hide").time(0.0) VN.show_character("Ризин", "hide") VN.set_focus_mode(true) VN.focus_character(["Кирилл"]) VN.send_message("Хорошо, сейчас объясню наш маршрут.", "Кирилл") VN.send_message("Едем всю ночь до Плоцка, потом до Барона Сарофского. В середине ночи остановимся в селе Колские на перекус.", "Кирилл") VN.send_message("У барона пробудем два дня, если раньше не узнаем, что случилось.", "Кирилл") VN.send_message("Все услышали?", "Кирилл") VN.set_focus_mode(false) VN.show_character("Кирилл", "hide").time(0.0) VN.show_character("Витомир", "left").time(0.0) VN.show_character("Мелен", "center").time(0.0) VN.show_character("Ризин", "right") VN.send_message("ДА!!", "Все") VN.show_character("Кирилл", "center").time(0.0) VN.show_character("Витомир", "hide").time(0.0) VN.show_character("Мелен", "hide").time(0.0) VN.show_character("Ризин", "hide") VN.set_focus_mode(true) VN.focus_character(["Кирилл"]) VN.send_message("Тогда в путь. По коням.", "Кирилл") VN.send_message("Кирилл взобрался на коня и стал наблюдать за опытом и сноровкой своих подопеченных.") VN.send_message("Когда убедился, что все седлали сввоих коней, подошел к началу пути...") VN.send_message("").time(0.0) VN.set_focus_mode(false) VN.show_character("Кирилл", "hide") VN.set_background("") VN.send_message("Продолжение следует...") VN.label("End")