This commit is contained in:
2026-09-10 10:59:36 +03:00
commit a369ac57b4
202 changed files with 1785 additions and 0 deletions
@@ -0,0 +1,10 @@
scene: home_basement
priority: 10
---
light_set [{"x":0.38576052,"y":0.31548673,"radius":700,"influence":0.5,"color":"#ffff00"},{"x":0.16893204,"y":0.20154873,"radius":700,"influence":0.5,"color":"#ffff00"},{"x":0.5864078,"y":0.3254425,"radius":700,"influence":0.5,"color":"#ffff00"},{"x":0.8116505,"y":0.27123895,"radius":700,"influence":0.5,"color":"#ffff00"}]
select "Подвал" key=rooms/basement/prompt
option "Выйти" key=rooms/basement/opt_exit -> :exit
:exit
switch_scene home_vestibule
end
@@ -0,0 +1,10 @@
scene: home_bedroom
save_allowed: true
priority: 10
---
select "Твоя спальня, тут можно поспать и набраться сил" key=rooms/bedroom/prompt
option "Выйти" key=rooms/bedroom/opt_exit -> :exit
:exit
switch_scene home_vestibule
end
@@ -0,0 +1,10 @@
scene: home_kitchen
priority: 10
---
light_set [{"x":0.43052286,"y":0.5760054,"radius":500,"influence":1,"color":"#ffff00"},{"x":0.103702,"y":0.26946074,"radius":500,"influence":1,"color":"#ffff00"}]
select "Комната оборудованная под кухню" key=rooms/kitchen/prompt
option "Выйти" key=rooms/kitchen/opt_exit -> :exit
:exit
switch_scene home_vestibule
end
@@ -0,0 +1,10 @@
scene: home_livingroom
priority: 10
---
light_set [{"x":0.32427186,"y":0.5831858,"radius":300,"influence":1,"color":"#ffff00"},{"x":0.11262136,"y":0.44159293,"radius":300,"influence":0.6,"color":"#ffff00"}]
select "Гостинная" key=rooms/livingroom/prompt
option "Выйти" key=rooms/livingroom/opt_exit -> :exit
:exit
switch_scene home_vestibule
end
@@ -0,0 +1,20 @@
scene: home_outside
priority: 10
---
light_set [{"x":0.29462293,"y":0.43369123,"radius":100,"influence":1,"color":"#ffff00"},{"x":0.29967362,"y":0.62050235,"radius":100,"influence":1,"color":"#ffff00"},{"x":0.49256954,"y":0.40350124,"radius":100,"influence":1,"color":"#ffff00"},{"x":0.5846468,"y":0.37935096,"radius":100,"influence":1,"color":"#ffff00"},{"x":0.33943588,"y":0.41643897,"radius":100,"influence":1,"color":"#ffff00"},{"x":0.43495983,"y":0.41557643,"radius":100,"influence":1,"color":"#ffff00"},{"x":0.30102944,"y":0.5208026,"radius":100,"influence":1,"color":"#ffff00"},{"x":0.67573905,"y":0.40436372,"radius":100,"influence":1,"color":"#ffff00"},{"x":0.3522381,"y":0.5113151,"radius":100,"influence":1,"color":"#ffff00"},{"x":0.6782009,"y":0.507865,"radius":150,"influence":1,"color":"#ffff00"}]
select "" key=home_outside/prompt
option "Зайти в дом" key=home_outside/opt_enter -> :enter
option "В город" key=home_outside/opt_town -> :town
option "В лес" key=home_outside/opt_forest -> :forest
:enter
switch_scene home_vestibule
end
:town
switch_scene town_entry
end
:forest
switch_scene forest
end
@@ -0,0 +1,30 @@
scene: home_vestibule
priority: 40
---
light_set [{"x":0.32427186,"y":0.5831858,"radius":300,"influence":1,"color":"#ffff00"},{"x":0.11262136,"y":0.44159293,"radius":300,"influence":0.6,"color":"#ffff00"}]
select "" key=vestibule/diner/prompt
option "В рабочую комнату" key=vestibule/diner/opt_workroom -> :workroom
option "В обеденную комнату" key=vestibule/diner/opt_dinerroom -> :kitchen
option "В спальню" key=vestibule/diner/opt_bedroom -> :bedroom
option "В подвал" key=vestibule/diner/opt_cellar -> :cellar
option "На улицу" key=vestibule/diner/opt_outside -> :outside
:workroom
switch_scene home_workroom
end
:kitchen
switch_scene home_kitchen
end
:bedroom
switch_scene home_bedroom
end
:cellar
switch_scene home_basement
end
:outside
switch_scene home_outside
end
@@ -0,0 +1,10 @@
scene: home_workroom
priority: 10
---
light_set [{"x":0.45825243,"y":0.5865044,"radius":300,"influence":1,"color":"#ffff00"},{"x":0.5190939,"y":0.52787614,"radius":300,"influence":1,"color":"#ffff00"},{"x":0.77411,"y":0.45929205,"radius":300,"influence":1,"color":"#ffff00"},{"x":0.8699029,"y":0.4869469,"radius":300,"influence":1,"color":"#ffff00"}]
select "Рабочий кабинет, тут тебя никто не будет отвлекать от исследований" key=rooms/workroom/prompt
option "Выйти" key=rooms/workroom/opt_exit -> :exit
:exit
switch_scene home_vestibule
end
@@ -0,0 +1,16 @@
scene: prolog_graveyard
priority: 10
is_one_run: true
---
background prolog/00025-165590409
text "Могильные плиты тянулись вдаль, серые и мрачные. Старые дубы качали голыми ветвями. Где-то каркала ворона."
text "Свистки стихли — полицейские потеряли его из виду." first=marao/think
text "Марао перевёл дух и прислонился к высокому склепу с выцветшей надписью: «Семья фон Штольц»." first=marao/think
text "И тут его скрутило. Живот скрутило так, что он согнулся пополам." first=marao/sad
text "— Ну вот. Организм. Раньше я мог пол-литра пива и огурцы, а теперь от одной воды уже..." first=marao/sad
text "Он покосился на книгу, которая всё ещё была у него под мышкой." first=marao/think
text "— Хм. А чего бы и нет? Всё равно время есть." first=marao/smile
notify "За склепом можно уединиться."
end
+35
View File
@@ -0,0 +1,35 @@
# Клик по книге — Аль-Азиф просыпается (канон: глава 4).
# Файл без шапки: InteractiveManager отрезает метаданные, играет только тело.
text "Марао плюнул и присел, сложив книгу стопкой страниц. Поднёс к пятой точке." first=marao/think
ptext "Книга заорала."
ptext "— НЕ СМЕЙ!"
text "Голос был похож на скрип несмазанных ворот, смешанный с плачем сотни младенцев. Буквы на раскрытой странице корчились, складываясь в ужасные морды, которые разевали рты." first=marao/think
text "— Ты умеешь говорить?" first=marao/think
ptext "— Я — АЛЬ АЗИФ, КНИГА МЁРТВЫХ ИМЁН! Я СВОДИЛ С УМА ЦИВИЛИЗАЦИИ! Я — ГЛАС БЕЗДНЫ!"
text "— Понятно. — Марао кивнул и снова придвинул книгу к себе." first=marao/smile
ptext "— Я УНИЧТОЖУ ТВОЙ РОД ДО СЕДЬМОГО КОЛЕНА!"
text "Страницы засветились багровым, по кладбищу побежали тени, могильные плиты затряслись."
text "— Да тихо ты. Голова от тебя болит. Я тут только что обосрался от страха, когда за мной полиция бежала, а ты ревёшь на всё кладбище..." first=marao/sad
ptext "Книга попыталась вторгнуться в его разум. Поток видений: бескрайние океаны тьмы, гигантские щупальца, разрывающие реальность, звёзды, гаснущие одна за другой."
text "Марао просто икнул. В его голове стоял запах дешёвого портвейна, играла шарманка и мелькала мысль о том, что надо бы кефирчику холодного." first=marao/think
ptext "— ПОЧЕМУ ТЫ НЕ БЕЖИШЬ В УЖАСЕ?!"
text "— А чё бежать? Ты бумажка. Говорящая, но бумажка. И вообще: если я тебя в штаны не засуну, то как мне вытираться?" first=marao/think
ptext "— ТЫ НЕ ПОНИМАЕШЬ! ТЫ ОТКРЫЛ ПОРТАЛЫ! ВЕЗДЕ! В ГОРОДАХ, В ПОЛЯХ, В ДОМАХ! ОНИ ПРИДУТ!"
text "— Какие ещё порталы? А, это я стихи читал. Ну, казахские. Красиво же." first=marao/smile
ptext "— ЭТО БЫЛИ ЗАКЛИНАНИЯ ВЫЗОВА!"
text "— А они платить будут? За аренду материка? Или мне потом штрафы за самострой придут?" first=marao/think
ptext "Книга захлебнулась собственным сиянием. Она попыталась захлопнуться и выскользнуть, но Марао держал её крепко."
text "— Слушай, книга. Орать можешь сколько влезет. Но мне нужно прийти в себя, одеться и пожрать. Давай договоримся: ты не орёшь — я не пытаюсь тобой подтереться. Идёт?" first=marao/think
ptext "Книга онемела."
ptext "— ТЫ... ТЫ СМЕЕШЬСЯ НАД ДРЕВНИМ УЖАСОМ?.."
text "— Да не смеюсь я. Хочешь, я тебя вон тем листом лопуха протру? Будешь чистенькая. Хочешь?" first=marao/smile
ptext "Книга издала звук, похожий на всхлип."
ptext "Вдалеке снова засвистели полицейские свистки."
sound locations/prolog/police
text "Марао встал, накинул красную тряпку и сунул книгу под мышку." first=marao/smile
text "— Валим. Давай, книжка, показывай, где тут трактир. А то у меня всего две мысли: «нахера я такой голый» и «где бы опохмелиться»." first=marao/smile
title "Конец пролога. Впереди — дорога вдоль реки..."
action quest.add_tag quest_id=NakedMorningQuest tag=azif_awake
interactive_remove book_wipe
end
@@ -0,0 +1,7 @@
scene: prolog_graveyard
priority: 15
condition: NakedMorningQuest.hasTag("graveyard_read") && NakedMorningQuest.notHasTag("azif_awake")
---
# Прочитано, но Аль-Азиф ещё не проснулся: держим хотспот книги на сцене.
interactive_add book_wipe
end
@@ -0,0 +1,8 @@
scene: prolog_graveyard
priority: 15
condition: NakedMorningQuest.notHasTag("graveyard_read")
---
# Книга ещё не прочитана вслух: держим хотспот «за склепом» на сцене.
# Идемпотентно при каждом входе (Add по тому же id возвращает существующий объект).
interactive_add crypt_spot
end
+25
View File
@@ -0,0 +1,25 @@
# Клик «за склепом» — нужда и первое чтение (канон: глава 3).
# Файл без шапки: InteractiveManager отрезает метаданные, играет только тело.
text "Марао отошёл за склеп и присел на корточки. Кладбище было тихим, спокойным. Только ветер гонял сухие листья по плитам." first=marao/think
text "— А чего бы и нет? Всё равно время есть."
text "Он открыл книгу на первой попавшейся странице." first=marao/think
text "Буквы напоминали кириллицу, но с множеством крючков, хвостов и точек, которые, казалось, шевелились. Некоторые строки мерцали. Марао прищурился и потёр глаза." first=marao/think
text "— Казахский. Точно казахский. У нас на стройке был казах Ахмет — он ругался так же. Все слова знакомые, а смысла ноль." first=marao/smile
text "Он начал читать вслух, с интонацией базарного зазывалы, выговаривая страшные имена как «Джамбулат-ага» и «Алма-ата»." first=marao/smile
background_color red
ptext "Где-то далеко, в Океане Кошмаров, Ктулху вздрогнул во сне."
ptext "Священный ритм «Ph'nglui mglw'nafh...» кто-то читал со словами «...и сметаны по два фунта, да?»"
ptext "Порталы стали открываться по всему материку — с противным чавкающим звуком, похожим на открывание банки с тушёнкой."
background prolog/00025-165590409
text "Марао закончил читать, закрыл книгу и снова скривился." first=marao/think
text "— И как теперь вытираться?"
text "Лопухов не было. Только крапива да старый газетный клочок. И книга." first=marao/think
text "Он потянул страницу за уголок — ноль реакции. Дёрнул сильнее: бумага была твёрдой, как металл, но гибкой. Он рвал и так, и сяк, даже ногтями пытался. Бесполезно." first=marao/sad
text "— Что за брак! Я за такие деньги..." first=marao/sad
action quest.add_tag quest_id=NakedMorningQuest tag=graveyard_read
interactive_remove crypt_spot
interactive_add book_wipe
end
+12
View File
@@ -0,0 +1,12 @@
# Клик по книге — Аль-Азиф в спячке и молчит (канон: главы 1-3).
# Файл без шапки: InteractiveManager отрезает метаданные, играет только тело.
text "Рядом, в грязи, лежала толстая книга в сером кожаном переплёте, с металлическими уголками, покрытыми зеленоватой патиной." first=marao/think
text "На обложке был странный барельеф: многорукая фигура с головой осьминога сжимала перевёрнутые звёзды." first=marao/think
text "— Какая-то мутная хрень. Откуда она у меня?" first=marao/sad
text "В голове мелькнул смутный образ: он в какой-то лавке протягивает монеты и берёт книгу. Но когда? Где? Почему? Больше ничего." first=marao/think
text "Марао пожал плечами и сунул книгу под мышку." first=marao/smile
text "— Ладно, бумага не жрёт. Пойдём, найдём, где опохмелиться." first=marao/smile
action quest.add_tag quest_id=NakedMorningQuest tag=book_taken
interactive_remove book_ground
switch_scene prolog_alley
end
+10
View File
@@ -0,0 +1,10 @@
# Клик по красной тряпке — Марао прикрывается (канон: глава 1).
# Файл без шапки: InteractiveManager отрезает метаданные, играет только тело.
text "Он сделал шаг, другой, придерживаясь за стену, и наступил на что-то мягкое. Красная тряпка." first=marao/think
text "Выцветшая, с бахромой по краям. Когда-то это было что-то вроде плаща или шали. На ткани угадывался вышитый крест." first=marao/think
text "Марао развернул её, оценил размер и намотал на плечи, как римскую тогу. Края едва доходили до колен." first=marao/smile
text "— Лучше, чем ничего. Срам прикрыт, хоть сзади и развевается, как знамя нищего легиона." first=marao/smile
action quest.add_tag quest_id=NakedMorningQuest tag=cloak_taken
interactive_remove cloak_ground
switch_scene prolog_alley
end
@@ -0,0 +1,9 @@
scene: prolog_alley
priority: 15
condition: NakedMorningQuest.notHasTag("cloak_taken") && NakedMorningQuest.notHasTag("book_taken")
---
# Ни один предмет ещё не взят: держим оба интерактива на сцене.
# Не is_one_run — идемпотентно пересоздаёт объекты при каждом входе (Add по тому же id возвращает существующий).
interactive_add cloak_ground
interactive_add book_ground
end
+22
View File
@@ -0,0 +1,22 @@
scene: prolog_alley
priority: 20
is_one_run: true
condition: NakedMorningQuest.hasTag("cloak_taken") && NakedMorningQuest.hasTag("book_taken")
---
sound locations/prolog/police
delay 0.7 hidden=true
title "Глава 2. Погоня"
ptext "Из подворотни вышли трое полицейских в синих мундирах, с медными пуговицами, начищенными до блеска."
ptext "— ЭЙ, ТЫ! СТОЯТЬ!"
ptext "— Голый мужик в красной тряпке по городу бегает! Извращенец!"
text "— Какой извращенец? Я же одет... почти..." first=marao/think
ptext "Толстый полицейский с красным лицом поднёс свисток к губам и дул в него так, что закладывало уши. Молодой, с усиками, уже бежал вперёд, расстёгивая кобуру."
ptext "— ДЕРЖИ ЕГО!"
text "Спорить с полицией Марао был не готов. Спорить с полицией Марао не умел вообще. Он развернулся и побежал." first=marao/sad
text "Босые ноги, топот сапог за спиной, крики «Держи его!» — Марао летел по улочке, перепрыгнул через бочку с водой, шлёпнулся на колени, вскочил и побежал дальше." first=marao/sad
text "Он свернул влево, потом вправо и нырнул в ближайшую арку. Выбежав с другой стороны, он оказался у высоких кованых ворот." first=marao/think
text "За воротами было кладбище. Марао нырнул внутрь." first=marao/think
switch_scene prolog_graveyard
end
@@ -0,0 +1,7 @@
scene: prolog_alley
priority: 15
condition: NakedMorningQuest.hasTag("cloak_taken") && NakedMorningQuest.notHasTag("book_taken")
---
# Тряпка взята, книга ещё нет: возвращаем книгу после перезагрузки сцены.
interactive_add book_ground
end
@@ -0,0 +1,7 @@
scene: prolog_alley
priority: 15
condition: NakedMorningQuest.hasTag("book_taken") && NakedMorningQuest.notHasTag("cloak_taken")
---
# Книга взята, тряпка ещё нет: возвращаем тряпку после перезагрузки сцены.
interactive_add cloak_ground
end
+17
View File
@@ -0,0 +1,17 @@
scene: prolog_alley
priority: 10
is_one_run: true
---
background prolog/start_lane
title "Глава 1. Пробуждение"
text "Марао открыл глаза и сразу пожалел об этом." first=marao/sad
text "Голова раскалывалась так, будто внутри неё поселился кузнец с молотом. Во рту было сухо и горько, как после трёх дней пьянки без закуски." first=marao/sad
text "Он лежал в грязном переулке между двух облезлых стен. Вокруг валялись тряпки, осколки бутылок и куски газет, которые ветер гонял по лужам." first=marao/think
text "Память отказывалась работать. Последнее, что он помнил: звон стаканов. Потом темнота. И всё." first=marao/think
text "Холодный воздух пробрал до костей. Марао посмотрел вниз, на себя, и снова выругался — уже громче." first=marao/think
text "— Да что ж такое! Где мои штаны?!" first=marao/sad
text "Он был абсолютно голый. Босые ступни на холодном камне. Тело болело — как будто его били чем-то тяжёлым. Возможно ногами. Возможно и по лицу." first=marao/sad
notify "Осмотрись. В переулке что-то лежит."
end
+6
View File
@@ -0,0 +1,6 @@
scene: start_scene
priority: 0
is_one_run: true
---
switch_scene prolog_alley
end
@@ -0,0 +1,14 @@
scene: town_entry
priority: 40
---
select "" key=town_entry/prompt
option "Вернуться к дому" key=town_entry/opt_home -> :home
option "На площадь" key=town_entry/opt_square -> :square
:home
switch_scene home_outside
end
:square
switch_scene town_outskirts
end
@@ -0,0 +1,14 @@
scene: town_outskirts
priority: 10
---
select "" key=town_outskirts/prompt
option "Вернуться к дому" key=town_outskirts/opt_home -> :home
option "В лес" key=town_outskirts/opt_forest -> :forest
:home
switch_scene home_outside
end
:forest
switch_scene forest
end