This commit is contained in:
Freestyle-Play
2026-08-25 18:22:36 +03:00
commit 60991875c0
7 changed files with 5165 additions and 0 deletions

546
data.js Normal file
View File

@@ -0,0 +1,546 @@
/* ============================================================
ДЕЛО № 260826. ИСЧЕЗНОВЕНИЕ ПОДАРКА — версия 2
Конфигурация и содержимое.
Правьте блок CONFIG — остальное трогать не обязательно.
============================================================ */
const CONFIG = {
name: "Алиса",
caseNumber: "260826",
caseDateWords: "двадцать шестое августа две тысячи двадцать шестого года",
pvzAddress: "Москва, Кочновский пр-д, 4 к. 1. ПВЗ Озон",
/* Штрихкод не показывается в квесте: именинница присылает это кодовое
слово в личные сообщения, а штрихкод отправляется в ответ. */
pickupCode: "АРБУЗ",
pvzPageUrl: "",
songSrc: "assets/song.mp3",
};
/* Три факта, которые игрок добывает по ходу дела и вписывает
в финальную форму ордера. Меняются только вместе с загадками. */
const FACTS = {
exitTime: "09:08", // глава 2: журнал турникета
foreignTag: "ДС-04", // глава 1: бирка сторонней службы
codeWord: "ПАУЗА", // глава 4: акростих бриджа
};
const COMMON = {
hintIntro: [
"Следствие разрешает воспользоваться подсказкой. Это не считается поражением. Хотя статистика говорит об обратном.",
"Подсказка выдана. Бюро делает вид, что это было предусмотрено.",
"Следствие идёт навстречу. Один раз. И ещё один. И, кажется, ещё.",
],
wrongGeneric: [
"Ответ не подтверждён. Следователь сделал вид, что так и задумано.",
"Нет. Но уверенность впечатляет.",
"Такая версия рассматривалась ещё в 1974 году. Не спрашивайте почему.",
"Система вежливо не согласна. И просит передать это деликатно.",
"Ошибка. Один из документов тихо извинился.",
"Не подтверждается. Но в отчёте можно написать «смелая гипотеза».",
],
};
const CONTENT = {
/* ---------- ПРОЛОГ ---------- */
intro: {
tag: "УВЕДОМЛЕНИЕ БКТО",
title: "Объект задержан",
body: [
"В отношении объекта, предназначавшегося вам в качестве подарка, открыто дело.",
"Статус объекта: ВРЕМЕННО ОГРАНИЧЕН.",
"Прямое раскрытие сюрприза запрещено регламентом. Всё, что вам могут дать, — документы.",
],
button: "Принять дело к производству",
footnote: "Отказ не предусмотрен. День рождения уже в процессе.",
},
loadingScreen: {
system: "ГИС «ПАПКА»",
subtitle: "Подарочный Архив · Праздничный Контроль · Финальная Торжественность · Абсурд",
lines: [
"Проверка праздничного статуса…",
"Сверка папок…",
"Папки найдены. Одна моргнула.",
"Загрузка материалов дела…",
],
button: "Войти в систему",
},
/* ---------- ГЛАВА 0. НОМЕР ДЕЛА ---------- */
caseNumber: {
chapter: "Допуск",
title: "ПОДТВЕРЖДЕНИЕ ДОСТУПА",
body: [
"Доступ к материалам открыт только получателю объекта.",
"Номер дела не сообщается напрямую: он формируется автоматически.",
],
ruleTitle: "ВЫПИСКА ИЗ РЕГЛАМЕНТА, П. 4.2",
ruleText: "Номер дела образуется из даты регистрации в формате ДДММГГ, без разделителей.",
registryTitle: "КАРТОЧКА РЕГИСТРАЦИИ",
registryRows: [
["Заявитель", "под грифом ДРУЖБА"],
["Дата регистрации", CONFIG.caseDateWords],
["Предмет", "объект торжественного назначения, 1 шт."],
],
placeholder: "Номер дела",
button: "Открыть дело",
wrong: [
"Номер дела не совпадает. Бюрократия тихо плачет в папку.",
"Дело с таким номером существует, но оно про кота. Не ваше.",
"Не сходится. Регламент напоминает: сначала день, потом месяц, потом год. Все по две цифры.",
],
hints: [
"Дата регистрации записана прописью. Переведите её в цифры.",
"Формат ДДММГГ: день, месяц и год — каждый ровно двумя цифрами, подряд, без точек.",
"Двадцать шестое августа две тысячи двадцать шестого — это " + CONFIG.caseNumber + ".",
],
},
caseOpened: {
title: "ДЕЛО ОТКРЫТО",
body: [
"Вам присвоен статус: временный следователь по собственному делу.",
"",
"Права: ошибаться, сомневаться, запрашивать подсказки, быть именинницей.",
"Ограничения: нельзя пропустить день рождения.",
"",
"Бюро обращает внимание: всё, что вы установите, попадёт в журнал дела. В финале журнал понадобится целиком.",
],
button: "Осмотреть место происшествия",
},
/* ---------- ГЛАВА 1. ОПИСЬ ---------- */
scene: {
chapter: "Глава 1",
title: "МЕСТО ПРОИСШЕСТВИЯ",
body: [
"Снимок рабочего стола, сделанный после исчезновения объекта.",
"Каждый предмет Бюро снабжает инвентарной биркой. Все предметы отдела имеют префикс БКТО.",
"",
"Задача: найти на столе предмет, которого нет в описи.",
],
protocolTitle: "ОПИСЬ ИМУЩЕСТВА ОТДЕЛА",
protocolNote: "Проверено вручную. Примерно.",
inventory: [
["БКТО-11", "лампа настольная, зелёная"],
["БКТО-12", "кружка с надписью «НЕ ТРОГАТЬ»"],
["БКТО-13", "календарь настенный"],
["БКТО-14", "папка дела"],
["БКТО-15", "карандаш"],
["БКТО-16", "кактус (эмоционально устойчив)"],
["БКТО-17", "лист с надписью «ПЕЧАТЬ НЕ ТРОГАТЬ»"],
],
correctId: "box",
successTitle: "Предмет вне описи обнаружен",
successBody: "Картонная коробка с биркой " + FACTS.foreignTag + ". Префикс не принадлежит Бюро: это служба доставки «Доставка с чувством». Коробка приехала снаружи — и, судя по всему, уехала обратно.",
reactions: {
lamp: "Бирка БКТО-11. Лампа в описи. Лампа отрицает участие, но свет у неё подозрительно уверенный.",
mug: "Бирка БКТО-12. Кружка в описи. Уликой не является, но морально поддерживает следствие.",
calendar: "Бирка БКТО-13. Календарь в описи. Число 26 обведено дважды — это личное дело календаря.",
folder: "Бирка БКТО-14. Папка уже в деле. Не заставляйте её волноваться повторно.",
pencil: "Бирка БКТО-15. Карандаш в описи. Готов сотрудничать, но ему нечего сказать.",
cactus: "Бирка БКТО-16. Кактус в описи и от показаний отказывается, ссылаясь на колючий характер.",
paper: "Бирка БКТО-17. Лист в описи. Надпись «ПЕЧАТЬ НЕ ТРОГАТЬ» соблюдена. Формально.",
},
hints: [
"Сверяйте бирки на предметах со списком в описи. Один предмет в списке отсутствует.",
"Бюро использует только префикс БКТО. На одной бирке префикс другой.",
"Картонная коробка справа внизу помечена «" + FACTS.foreignTag + "» — это чужая служба. Нажмите на неё.",
],
evidence: {
name: "КОРОБКА",
fact: FACTS.foreignTag,
factLabel: "Инвентарный признак сторонней службы",
desc: "Картонная коробка службы «Доставка с чувством». В опись Бюро не входит.",
},
button: "Приобщить к делу",
},
/* ---------- ГЛАВА 2. ЖУРНАЛ И ПОКАЗАНИЯ ---------- */
witnesses: {
chapter: "Глава 2",
title: "СВЕРКА ПОКАЗАНИЙ",
body: [
"Коробку кто-то вынес. Бюро подняло журнал турникета и опросило четверых.",
"",
"Задача: найти свидетеля, чьи показания физически невозможны — то есть противоречат журналу проходов.",
],
logTitle: "ЖУРНАЛ ТУРНИКЕТА · 26 АВГУСТА",
logRows: [
["08:41", "Пылинкин А.", "вход"],
["09:02", "Шлюз К. И.", "выход"],
["09:06", "Быстрый Т.", "вход"],
["09:08", "Быстрый Т.", "выход"],
["09:12", "Шлюз К. И.", "вход"],
["09:15", "Каверза Л. П.", "вход"],
],
cards: [
{
id: "klavdia",
name: "Клавдия Ивановна Шлюз",
role: "вахтёрша",
text: "«В 09:07 я была на посту. Мимо меня никто не проходил — ни туда, ни обратно. У меня глаз профессиональный».",
},
{
id: "pylinkin",
name: "Архивариус Пылинкин",
role: "младший хранитель бумажных сущностей",
text: "«Около девяти мимо прошёл человек в шарфе. Папка при этом моргнула. Я доложил. Папке стало легче».",
},
{
id: "timur",
name: "Тимур Быстрый",
role: "курьер службы «Доставка с чувством»",
text: "«Пришёл, забрал коробку, ушёл. Две минуты, не больше. Коробка была лёгкая. Подозрительно лёгкая».",
},
{
id: "kaverza",
name: "Л. П. Каверза",
role: "филолог-консультант",
text: "«Когда я вошёл, на столе уже ничего не было. И сразу уточню: не “украдено”, а “изъято”. Это разные вещи».",
},
],
correct: "klavdia",
successTitle: "Противоречие установлено",
successBody: "По журналу Шлюз К. И. вышла в 09:02 и вернулась в 09:12. В 09:07 её не было в здании — значит, видеть коридор она не могла. Свидетель ошибается, не становясь преступником.",
wrongReactions: {
pylinkin: "Пылинкин вошёл в 08:41 и не выходил. Около девяти он действительно был внутри — журналу это не противоречит. Странность показаний ещё не делает их невозможными.",
timur: "Быстрый вошёл в 09:06 и вышел в 09:08. Ровно две минуты, как он и говорит. Журнал подтверждает его слово в точности.",
kaverza: "Каверза вошёл в 09:15 — уже после того, как коробку вынесли. Он и правда мог застать пустой стол. Противоречия нет.",
},
hints: [
"Возьмите время из каждого показания и проверьте по журналу, был ли этот человек в здании в тот момент.",
"Один свидетель называет время, когда он, судя по журналу, находился снаружи.",
"Шлюз вышла в 09:02 и вернулась в 09:12 — а утверждает, что была на посту в 09:07.",
],
evidence: {
name: "ЖУРНАЛ",
fact: FACTS.exitTime,
factLabel: "Время выхода объекта из здания",
desc: "Коробку вынес курьер Быстрый Т. Турникет зафиксировал выход в " + FACTS.exitTime + ".",
},
button: "Приобщить к делу",
},
/* ---------- ГЛАВА 3. ФИЛОЛОГИЯ ---------- */
philology: {
chapter: "Глава 3",
title: "ФИЛОЛОГИЧЕСКАЯ ЭКСПЕРТИЗА",
body: [
"Отдел нарративной безопасности сообщает: среди трёх документов дела один изготовлен не Бюро.",
"",
"Подделка может иметь подпись и даже печать. Но она не выдерживает проверки языком.",
],
memoTitle: "ПАМЯТКА КОНСУЛЬТАНТА Л. П. КАВЕРЗЫ",
memoText: "«Предлог “согласно” управляет дательным падежом: согласно чему? — согласно приказу, протоколу, распоряжению. Форма “согласно приказа” — родительный падеж — в служебном документе невозможна. Запятая — это дверь; падеж — это замок».",
docs: [
{
id: 1,
head: "Распоряжение № 4/тор",
text: "«Согласно приказу № " + CONFIG.caseNumber + ", объект подлежит проверке на торжественную пригодность».",
sign: "К. К. Пропавший-Без-Вести",
},
{
id: 2,
head: "Служебная записка № 7",
text: "«В соответствии с протоколом № 7 свидетель обязан сохранять загадочность и не разглашать сюрприз в обеденный перерыв».",
sign: "З. М. Штемпель",
},
{
id: 3,
head: "Постановление б/н",
text: "«Согласно приказа о похищении, подарок считается украденным, а филолог — подозрительным».",
sign: "подпись неразборчива",
},
],
correct: 3,
successTitle: "Подделка обнаружена",
successBody: "«Согласно приказа» — родительный падеж. Настоящее Бюро написало бы «согласно приказу». Отдел грамматики аплодирует, но по регламенту делает это беззвучно.",
wrongReactions: {
1: "Документ № 1 оскорблён. Он всю жизнь использовал дательный падеж и не намерен это обсуждать: «согласно приказу» — безупречно.",
2: "Документ № 2 загадочен, но законен. «В соответствии с протоколом» — корректная конструкция. Свидетель сохраняет загадочность; дело пока нет.",
},
hints: [
"Прочтите памятку Каверзы и проверьте по ней каждый документ.",
"Ищите документ, где после «согласно» стоит не дательный падеж.",
"Документ № 3: «согласно приказа» вместо «согласно приказу». Это подделка.",
],
evidence: {
name: "ЭКСПЕРТИЗА",
fact: "согласно приказу",
factLabel: "Признак подлинности документа",
desc: "Настоящие документы Бюро используют дательный падеж. «Согласно приказа» — маркер подделки.",
},
button: "Приобщить к делу",
},
/* ---------- ГЛАВА 4. АУДИО ---------- */
audio: {
chapter: "Глава 4",
title: "АУДИОЭКСПЕРТИЗА",
body: [
"Из архива поступила служебная песня. Бюро напоминает: музыка считается документом, если в ней есть хотя бы одна печать.",
"",
"В песне спрятано служебное слово. В самом тексте оно не звучит ни разу — иначе какая же это тайна.",
"",
"Припев намеренно подсовывает похожие слова. Не доверяйте припеву.",
],
songTitle: "«Временное ограничение»",
songAuthor: "ВИА «Канцелярия» при участии Отдела музыкальной отчётности",
bridgeLabel: "служебная вставка",
lyrics: [
{ type: "verse", label: "Куплет 1", lines: [
"В архиве пахнет пылью и чаем,",
"Объект на месте. Объект молчит.",
"Мы ничего не подозреваем —",
"Мы просто ждём, пока форма звучит.",
]},
{ type: "chorus", label: "Припев", lines: [
"Не украден, не забыт,",
"Он в законном состоянье.",
"Не потерян, не сокрыт —",
"Просто длится ожиданье.",
]},
{ type: "verse", label: "Куплет 2", lines: [
"Свидетель смотрит в журнал слишком долго,",
"Курьер уверяет, что вышел пустым.",
"Филолог поправит падеж — и только",
"Тогда документ перестанет быть злым.",
]},
{ type: "chorus", label: "Припев", lines: [
"Не украден, не забыт,",
"Он в законном состоянье.",
"Не потерян, не сокрыт —",
"Просто длится ожиданье.",
]},
{ type: "bridge", label: "Бридж", lines: [
"Пусть протокол никуда не спешит,",
"Архив тишину до конца сторожит.",
"Условие радости: дать ей отстояться,",
"Задержка объекта — не повод бояться,",
"А выдача будет. По форме. Не сразу.",
]},
{ type: "chorus", label: "Финальный припев", lines: [
"Не украден, не забыт,",
"Он почти уже открыт.",
"Не потерян, не сокрыт —",
"Форма выдачи звучит.",
]},
],
placeholder: "Служебное слово",
button: "Подтвердить",
correct: FACTS.codeWord,
successTitle: "Служебное слово принято",
successBody: "Первые буквы бриджа складываются в «" + FACTS.codeWord + "». Именно этим словом Бюро обозначает состояние объекта: не украден, не потерян — поставлен на паузу до появления сюжета.",
wrongHints: {
ozhidanie: "Слово из припева. Припев вас именно на это и ловил. Служебное слово в тексте не звучит — его нужно собрать.",
syuzhet: "Красивая версия, но этого слова в бридже не собрать. Смотрите на первые буквы пяти строк служебной вставки.",
},
wrong: [
"Слово не принято. Музыкальная комиссия сделала вид, что это была репетиция.",
"Неверно. Хор Бюро выражает сочувствие в допустимом диапазоне громкости.",
"Не совпадает. Возможно, вы слушали слишком доверчиво.",
],
hints: [
"Служебная вставка — это бридж, пять строк, выделенных отдельно. Смотрите на начала строк.",
"Возьмите по одной первой букве каждой из пяти строк бриджа и прочтите сверху вниз.",
"П, А, У, З, А — получается «" + FACTS.codeWord + "».",
],
evidence: {
name: "ЗАПИСЬ",
fact: FACTS.codeWord,
factLabel: "Служебное кодовое слово",
desc: "Акростих бриджа. Обозначает состояние объекта: задержан до появления сюжета.",
},
button: "Приобщить к делу",
},
/* ---------- ГЛАВА 5. ЛОЖНЫЙ СЛЕД ---------- */
falseTrail: {
chapter: "Глава 5",
title: "СРОЧНОЕ ОБНОВЛЕНИЕ",
alertBody: [
"В дело поступил рапорт о похищении объекта.",
"Обвиняется филолог-консультант Л. П. Каверза.",
],
reportTitle: "РАПОРТ О ПОХИЩЕНИИ",
intro: "Рапорт выглядит официально: есть номер дела, время, подпись и печать. Бюро предлагает проверить его до того, как кого-нибудь задержат.",
/* Текст рапорта разбит на фрагменты. is: тип реакции.
tell: true — настоящий признак подделки (нужно найти оба). */
reportParts: [
{ t: "Дело № " + CONFIG.caseNumber + ". ", id: "num" },
{ t: "Установлено, что филолог-консультант Л. П. Каверза изъял объект ", id: "plain" },
{ t: "в 09:05", id: "time", tell: true },
{ t: " и вынес его через турникет ", id: "plain2" },
{ t: "согласно приказа", id: "case", tell: true },
{ t: " № " + CONFIG.caseNumber + ". Мотив: день рождения казался недостаточно сюжетным. ", id: "motive" },
{ t: "Подпись: Л. П. Каверза.", id: "sign" },
{ t: " Печать: имеется. Уверенность: повышенная.", id: "stamp" },
],
task: "Найдите в тексте признаки подделки. Их два. Нажимайте прямо на подозрительные места.",
counter: "Признаков найдено",
tellReactions: {
time: {
title: "Признак 1: невозможное время",
text: "По журналу турникета Каверза вошёл в здание в 09:15. В 09:05 его здесь не было — изъять объект он не мог физически.",
},
case: {
title: "Признак 2: чужая грамматика",
text: "«Согласно приказа» — родительный падеж. Настоящее Бюро пишет «согласно приказу». Тот же почерк, что и у поддельного постановления.",
},
},
plainReactions: {
num: "Номер дела указан верно. Подделка всегда начинается с правдоподобного.",
plain: "Формулировка как формулировка. Обвинение — ещё не доказательство.",
plain2: "Турникет действительно существует. Это, пожалуй, единственное, что здесь бесспорно.",
motive: "Мотив звучит обидно правдоподобно. Но мотив не является уликой.",
sign: "Подпись есть. Каверза утверждает, что подписывается всегда со сноской. Сноски нет — но это спорный аргумент.",
stamp: "«Уверенность: повышенная» — не реквизит документа. Смешно, но подделку этим не доказать.",
},
successTitle: "Рапорт признан подделкой",
successBody: "Оба признака подтверждены: время противоречит журналу, падеж противоречит регламенту. Филолог освобождён от подозрений с формулировкой «слишком грамотен для этого преступления».",
kaverzaQuote: "«Я подозревал, что меня подставят. Но не ожидал, что сделают это с такой слабой грамматикой. Это обиднее подозрений».",
hints: [
"Один признак — фактический: сверьте время в рапорте с журналом турникета. Второй — языковой: вспомните памятку Каверзы.",
"Каверза вошёл в 09:15, а рапорт называет другое время. И где-то в тексте снова хромает падеж.",
"Нажмите на «в 09:05» и на «согласно приказа».",
],
evidence: {
name: "ОПРОВЕРЖЕНИЕ",
fact: "версия о краже несостоятельна",
factLabel: "Итог проверки",
desc: "Рапорт изготовлен Отделом срочных ложных версий. Кражи не было.",
},
button: "Приобщить к делу",
},
/* ---------- ГЛАВА 6. ОРДЕР ---------- */
order: {
chapter: "Глава 6",
title: "ФОРМА ОРДЕРА НА ВЫДАЧУ",
body: [
"Кражи не было. Объект не похищен — он задержан.",
"",
"Чтобы снять ограничение, заполните ордер. Все три графы уже установлены следствием: загляните в журнал дела, если что-то забылось.",
],
fields: [
{
id: "exitTime",
label: "Графа 1. Время выхода объекта из здания",
placeholder: "чч:мм",
hintSource: "глава 2, журнал турникета",
wrong: "Время не соответствует журналу турникета. Проверьте, когда именно объект покинул здание.",
},
{
id: "foreignTag",
label: "Графа 2. Инвентарный признак сторонней службы",
placeholder: "XX-00",
hintSource: "глава 1, опись имущества",
wrong: "Такой бирки в деле нет. Речь о предмете, которого не было в описи Бюро.",
},
{
id: "codeWord",
label: "Графа 3. Служебное кодовое слово",
placeholder: "слово",
hintSource: "глава 4, аудиоэкспертиза",
wrong: "Слово не совпадает со служебным. Оно было собрано из первых букв бриджа.",
},
],
button: "Подать ордер",
partial: "Форма принята частично. Бюро не любит частично.",
hints: [
"Все три значения уже есть в журнале дела — откройте его кнопкой «Журнал» наверху.",
"Графа 1 — время из журнала турникета. Графа 2 — бирка коробки. Графа 3 — акростих бриджа.",
FACTS.exitTime + " · " + FACTS.foreignTag + " · " + FACTS.codeWord,
],
},
/* ---------- ФИНАЛ ---------- */
twist: {
lines: [
"Преступления не было.",
"Дело № " + CONFIG.caseNumber + " переквалифицировано.",
"Объект не похищали. Объект был поставлен на паузу — до появления сюжета.",
"Сюжет создан. Вами. Только что.",
],
stamp: "СЮЖЕТ ПРИЛОЖЕН",
button: "Закрыть дело",
},
congrats: {
title: "Дело № " + CONFIG.caseNumber + " закрыто",
body: [
"Преступления не было.",
"",
"Были бумаги, штампы, журнал турникета, один подделанный рапорт и один филолог, который переживал за падежи больше, чем за собственную репутацию.",
"",
"А ещё был день рождения, который заслуживал не просто подарок, а историю.",
"",
CONFIG.name + ", ты прошла это дело с внимательностью, иронией и терпением, которым позавидовала бы любая бюрократическая система.",
"",
"С днём рождения.",
"",
"Пусть запятые стоят там, где им удобно.",
"Пусть правила нарушаются с умом.",
"Пусть подарки ждут тебя не в камерах хранения, а в руках.",
"",
"И если жизнь когда-нибудь снова покажется слишком серьёзной — вспомни: где-то в этом деле тебя официально признали человеком, способным расследовать собственную радость.",
],
button: "Получить ордер на выдачу",
},
orderScreen: {
title: "ОРДЕР НА ВЫДАЧУ ОБЪЕКТА № " + CONFIG.caseNumber,
rows: [
["Объект", "Подарок, 1 шт."],
["Статус", "готов к выдаче"],
["Основание", "сюжет приложен"],
],
qrNote: "Наведите камеру на контрольную печать.",
/* Штрихкод намеренно не выдаётся системой: последний шаг —
написать организатору. */
claimTitle: "ПОЛУЧЕНИЕ ШТРИХКОДА",
claimLead: "Бюро не хранит штрихкоды в открытом виде: они выдаются ответственному лицу под расписку.",
claimSteps: [
"Отправьте мне в личные сообщения кодовое слово: " + CONFIG.pickupCode + ".",
"В ответ придёт штрихкод заказа.",
"Покажите штрихкод на пункте выдачи по адресу выше.",
],
claimNote: "Да, это ещё одна бюрократическая процедура. Последняя. Обещаю.",
joke: "Если сотрудник ПВЗ спросит, зачем вам подарок, отвечайте: «По делу № " + CONFIG.caseNumber + "». Это не поможет. Но звучит весомо.",
reserveNote: "Если что-то не открывается — это не подарок, это техническая подделка. Напишите мне.",
copyButton: "Скопировать адрес и кодовое слово",
},
easter: {
speedButton: "Ускорить следствие",
speedFirst: "Кнопка работает только в следующем квесте.",
speedSecond: "Следствие ускорено эмоционально. Фактических изменений нет.",
complaintButton: "Пожаловаться на Бюро",
complaintResult: "Ваша жалоба принята. Ей присвоен номер № 0. Номер № 0 благодарит вас за внимание.",
confusedButton: "Я ничего не понимаю",
confusedFirst: "Это нормальная реакция. Следствие признаёт её официальной.",
confusedSecond: "Уровень понимания не изменился. Уровень атмосферы вырос.",
resetButton: "Начать сначала",
resetArm: "Нажмите ещё раз, чтобы начать дело заново. Прогресс будет стёрт.",
footer: "если вы читаете это, вы внимательны. подарок всё ещё реален.",
},
};
/* Порядок глав для индикатора прогресса */
const CHAPTERS = [
{ stage: "caseNumber", label: "Допуск" },
{ stage: "scene", label: "Опись" },
{ stage: "witnesses", label: "Показания" },
{ stage: "philology", label: "Экспертиза" },
{ stage: "audio", label: "Запись" },
{ stage: "falseTrail", label: "Ложный след" },
{ stage: "orderForm", label: "Ордер" },
];