abyssfuge 42

Вдохновил Кэндзи Сиратори - и его «Кровь электрическая»

***


<!DOCTYPE html>
<html lang="ru">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>ЭССЕНЦИЯ СЮРРЕАЛИЗМА</title>
    <style>
        :root {
            /* Тема по умолчанию: Океанская */
            --bg-color: #090914;
            --text-color: #c8c8ff;
            --accent-color: #141428;
            --choice-bg: #242440;
            --choice-hover: #34345a;
            --border-color: #5040d0;
            --highlight-color: #8060f0;
            --end-color: #ff2060;
            --font-main: 'Courier New', Courier, monospace;
            --font-header: 'Georgia', serif;
        }

        /* Тема Пустыни Историй */
        .desert-theme {
            --bg-color: #1a150f;
            --text-color: #e0d0b0;
            --accent-color: #2a2015;
            --choice-bg: #3a2f1f;
            --choice-hover: #4a3f2f;
            --border-color: #8b7555;
            --highlight-color: #c4a77d;
            --end-color: #e74c3c;
        }

        /* Тема Эха */
        .echo-theme {
            --bg-color: #0f1a1a;
            --text-color: #b0e0e0;
            --accent-color: #152a2a;
            --choice-bg: #1f3a3a;
            --choice-hover: #2f4a4a;
            --border-color: #558b8b;
            --highlight-color: #7dc4c4;
            --end-color: #3ce7e7;
        }

        /* Тема Поля */
        .field-theme {
            --bg-color: #102010;
            --text-color: #c0d0c0;
            --accent-color: #183018;
            --choice-bg: #284028;
            --choice-hover: #385038;
            --border-color: #609060;
            --highlight-color: #80c080;
            --end-color: #40e040;
        }

        /* Тема Комнаты */
        .room-theme {
            --bg-color: #181010;
            --text-color: #d0c0c0;
            --accent-color: #281818;
            --choice-bg: #382828;
            --choice-hover: #483838;
            --border-color: #a07070;
            --highlight-color: #d09090;
            --end-color: #f06060;
        }

        /* Тема Леса */
        .forest-theme {
            --bg-color: #0f1a0f;
            --text-color: #b0e0b0;
            --accent-color: #152a15;
            --choice-bg: #1f3a1f;
            --choice-hover: #2f4a2f;
            --border-color: #558b55;
            --highlight-color: #7dc47d;
            --end-color: #3ce73c;
        }

        /* Тема Океана */
        .ocean-theme {
             /* Используем значения по умолчанию из :root */
        }

        /* Тема Музыки (для эффектов) */
        .font-music {
            font-family: 'Arial Rounded MT Bold', 'Arial', sans-serif;
            letter-spacing: 1px;
            /* Можно добавить анимацию пульсации для музыки */
            animation: pulse 2s infinite;
        }

        @keyframes pulse {
            0% { transform: scale(1); }
            50% { transform: scale(1.02); }
            100% { transform: scale(1); }
        }

        body {
            margin: 0;
            padding: 0;
            background-color: var(--bg-color);
            color: var(--text-color);
            font-family: var(--font-main);
            line-height: 1.6;
            min-height: 100vh;
            display: flex;
            justify-content: center;
            align-items: center;
            transition: background-color 1s ease, color 1s ease;
        }

        #game-container {
            width: 90%;
            max-width: 800px;
            padding: 20px;
            border: 1px solid var(--border-color);
            border-radius: 8px;
            background-color: var(--accent-color);
            box-shadow: 0 0 20px rgba(80, 64, 208, 0.3);
            position: relative;
            overflow: hidden;
        }

        /* Glitch Effect для сцен */
        .glitch {
            position: relative;
            animation: glitch-anim 0.3s linear infinite;
        }

        @keyframes glitch-anim {
            0% { transform: translate(0); }
            20% { transform: translate(-3px, 3px); }
            40% { transform: translate(-3px, -3px); }
            60% { transform: translate(3px, 3px); }
            80% { transform: translate(3px, -3px); }
            100% { transform: translate(0); }
        }

        header {
            text-align: center;
            margin-bottom: 20px;
            border-bottom: 1px dashed var(--border-color);
            padding-bottom: 10px;
        }

        h1 {
            font-family: var(--font-header);
            color: var(--highlight-color);
            text-shadow: 0 0 5px rgba(128, 96, 240, 0.7);
            margin: 0;
            font-size: 2em;
        }

        #progress-bar-container {
            width: 100%;
            height: 10px;
            background-color: #1a1a2a;
            border-radius: 5px;
            overflow: hidden;
            margin-bottom: 20px;
        }

        #progress-bar {
            height: 100%;
            width: 0%;
            background-color: var(--highlight-color);
            transition: width 0.5s ease-in-out;
        }

        #scene-text {
            margin-bottom: 20px;
            min-height: 150px;
            padding: 15px;
            border-radius: 5px;
            background-color: rgba(20, 20, 40, 0.5);
            opacity: 0;
            animation: fadeIn 1s ease-in forwards;
        }

        @keyframes fadeIn {
            from { opacity: 0; transform: translateY(10px); }
            to { opacity: 1; transform: translateY(0); }
        }

        #choices {
            margin-bottom: 20px;
        }

        .choice-button {
            display: block;
            width: 100%;
            padding: 12px 15px;
            margin-bottom: 10px;
            background-color: var(--choice-bg);
            color: var(--text-color);
            border: none;
            border-radius: 5px;
            cursor: pointer;
            text-align: left;
            font-family: var(--font-main);
            font-size: 1em;
            transition: background-color 0.3s, transform 0.2s;
            opacity: 0;
            animation: fadeIn 0.5s ease-in forwards;
        }

        .choice-button:hover {
            background-color: var(--choice-hover);
            transform: translateX(5px);
        }

        .choice-button:disabled {
            background-color: #3a3a5a;
            color: #8888aa;
            cursor: not-allowed;
            transform: none;
        }

        #game-info {
            display: flex;
            justify-content: space-between;
            margin-top: 20px;
            padding-top: 15px;
            border-top: 1px dashed var(--border-color);
            font-size: 0.9em;
        }

        #inventory, #motifs, #archetype-display {
            flex: 1;
            padding: 10px;
            background-color: rgba(20, 20, 40, 0.3);
            border-radius: 5px;
            margin-right: 10px;
            overflow-y: auto;
            max-height: 150px;
        }

        #archetype-display {
            margin-right: 0;
        }

        #inventory h3, #motifs h3, #archetype-display h3 {
            margin-top: 0;
            margin-bottom: 8px;
            color: var(--highlight-color);
            font-size: 1em;
        }

        #inventory ul, #motifs ul {
            list-style-type: none;
            padding-left: 0;
            margin: 0;
        }

        #inventory li, #motifs li {
            margin-bottom: 5px;
            font-size: 0.85em;
        }

        #save-load-buttons {
            text-align: center;
            margin-top: 20px;
        }

        .save-load-button {
            padding: 8px 15px;
            margin: 0 5px;
            background-color: var(--choice-bg);
            color: var(--text-color);
            border: 1px solid var(--border-color);
            border-radius: 5px;
            cursor: pointer;
            font-family: var(--font-main);
            transition: background-color 0.3s;
        }

        .save-load-button:hover {
            background-color: var(--choice-hover);
        }

        #notification {
            position: fixed;
            top: 20px;
            left: 50%;
            transform: translateX(-50%);
            background-color: var(--accent-color);
            color: var(--text-color);
            padding: 10px 20px;
            border-radius: 5px;
            border: 1px solid var(--border-color);
            box-shadow: 0 0 10px rgba(0, 0, 0, 0.5);
            opacity: 0;
            transition: opacity 0.5s ease-in-out;
            z-index: 1000;
        }

        .end-scene {
            color: var(--end-color);
            font-weight: bold;
        }

        footer {
            text-align: center;
            margin-top: 30px;
            font-size: 0.8em;
            color: #8888aa;
            font-style: italic;
        }

        /* Шрифты */
        .font-comic { font-family: 'Comic Sans MS', 'Comic Sans', cursive; }
        .font-papyrus { font-family: 'Papyrus', fantasy; }
        .font-lucida { font-family: 'Lucida Console', 'Courier New', monospace; }
        .font-impact { font-family: 'Impact', 'Arial Black', sans-serif; }
        .font-courier { font-family: 'Courier New', Courier, monospace; }
        .font-georgia { font-family: 'Georgia', serif; }
    </style>
</head>
<body>
    <div id="game-container">
        <header>
            <h1>ЭССЕНЦИЯ СЮРРЕАЛИЗМА</h1>
        </header>

        <div id="progress-bar-container">
            <div id="progress-bar"></div>
        </div>

        <div id="scene-text"></div>

        <div id="choices"></div>

        <div id="game-info">
            <div id="inventory">
                <h3>Инвентарь:</h3>
                <ul id="inventory-list"></ul>
            </div>
            <div id="motifs">
                <h3>Мотивы:</h3>
                <ul id="motifs-list"></ul>
            </div>
            <div id="archetype-display">
                <h3>Архетип:</h3>
                <p id="archetype-text">Не определен</p>
            </div>
        </div>

        <div id="save-load-buttons">
            <button class="save-load-button" onclick="saveGame()">Сохранить</button>
            <button class="save-load-button" onclick="loadGame()">Загрузить</button>
            <button class="save-load-button" onclick="resetGame()">Начать сначала</button>
        </div>

        <footer>
            <p>Исследуйте лабиринты сознания. Каждый выбор - это шаг в бездну.</p>
        </footer>
    </div>

    <div id="notification"></div>

    <script>
        // --- ДАННЫЕ ИГРЫ ---
        const gameData = {
            scenes: {
                // --- НАЧАЛЬНЫЕ СЦЕНЫ ---
                "start": {
                id: "start",
                text: "Ты стоишь у края зыбучего океана, волны которого сделаны из чернил и звездного света. Над тобой висит перевернутый город, его здания растут корнями в небо. В твоей руке - перо, которое светится холодным синим светом. Что ты делаешь?",
                choices: [
                { text: "Погружаюсь в океан, держа перо.", nextSceneId: "dive_ocean" },
                { text: "Пишу на песке первую букву своего имени.", nextSceneId: "write_sand" },
                { text: "Лечу вверх, к перевернутому городу.", nextSceneId: "fly_city" },
                { text: "Сажусь и начинаю рисовать пейзаж вокруг.", nextSceneId: "draw_landscape" },
                { text: "Закрываю глаза и слушаю шепот волн.", nextSceneId: "listen_waves" }
                ]
                },
                "dive_ocean": {
                id: "dive_ocean",
                text: "Холод охватывает тебя. Ты погружаешься в глубины, где свет пера рассеивается, создавая причудливые узоры. Водоворот мыслей и образов окружает тебя. Ты чувствуешь, как твоя сущность начинает меняться.",
                choices: [
                { text: "Принять изменения и стать частью водоворота.", nextSceneId: "become_vortex" },
                { text: "Бороться, сохраняя человеческую форму.", nextSceneId: "fight_form" },
                { text: "Отпустить перо и наблюдать, как оно плывет прочь.", nextSceneId: "release_pen" },
                { text: "Попытаться понять язык шепчущих волн.", nextSceneId: "understand_waves" },
                { text: "Всплыть на поверхность, испугавшись глубин.", nextSceneId: "surface_fear" }
                ]
                },
                "write_sand": {
                id: "write_sand",
                text: "Песок под твоими пальцами начинает жить. Написанная буква превращается в сияющий символ, который поднимается в воздух. Вокруг появляются другие символы, складывающиеся в непонятное письмо.",
                choices: [
                { text: "Попытаться прочитать это письмо.", nextSceneId: "read_symbols" },
                { text: "Стереть символы, вернув песок в исходное состояние.", nextSceneId: "erase_symbols" },
                { text: "Следовать за парящим символом.", nextSceneId: "follow_symbol" },
                { text: "Добавить больше букв, создавая сложный узор.", nextSceneId: "create_pattern" },
                { text: "Закопать перо в песок.", nextSceneId: "bury_pen" }
                ]
                },
                "fly_city": {
                id: "fly_city",
                text: "Ты взлетаешь, и мир переворачивается. Теперь ты летишь среди корней зданий, внизу раскинулся океан. Город живой, его стены пульсируют, а окна - это глаза, следящие за тобой.",
                choices: [
                { text: "Посетить самое большое 'окно-глаз'.", nextSceneId: "visit_big_eye" },
                { text: "Попытаться войти внутрь одного из зданий через дверь в корне.", nextSceneId: "enter_building" },
                { text: "Прикоснуться к пульсирующей стене.", nextSceneId: "touch_wall" },
                { text: "Искать выход из этого перевернутого мира.", nextSceneId: "find_exit" },
                { text: "Петь, наблюдая за движением города.", nextSceneId: "sing_city" }
                ]
                },
                "draw_landscape": {
                id: "draw_landscape",
                text: "Перо касается бумаги... но бумаги нет. Ты рисуешь в воздухе, и линии остаются, создавая объемные образы. Твой рисунок начинает жить, превращаясь в маленький мир, парящий перед тобой.",
                choices: [
                { text: "Войти в нарисованный мир.", nextSceneId: "enter_drawing" },
                { text: "Создать второго себя на рисунке.", nextSceneId: "create_self" },
                { text: "Нарисовать мост между реальностью и рисунком.", nextSceneId: "draw_bridge" },
                { text: "Стереть рисунок, пока он не стал опасным.", nextSceneId: "erase_drawing" },
                { text: "Отдать перо нарисованному существу.", nextSceneId: "give_pen_to_drawing" }
                ]
                },
                "listen_waves": {
                id: "listen_waves",
                text: "Шепот волн становится громче, превращаясь в голоса. Они рассказывают истории забытых цивилизаций, древние заклинания и тайны бытия. Ты понимаешь, что можешь задать один вопрос.",
                choices: [
                { text: "Спросить о смысле собственного существования.", nextSceneId: "ask_existence" },
                { text: "Спросить о судьбе перевернутого города.", nextSceneId: "ask_city_fate" },
                { text: "Спросить, как выбраться из этого сна.", nextSceneId: "ask_wake_up" },
                { text: "Спросить о природе реальности.", nextSceneId: "ask_reality" },
                { text: "Не задавать вопрос, продолжая просто слушать.", nextSceneId: "keep_listening" }
                ]
                },
                // --- ВЕТКА: Погружение в океан ---
                "become_vortex": {
                id: "become_vortex",
                text: "Ты отпускаешь контроль. Твое тело распадается, сознание расширяется. Ты становишься водоворотом, поглощающим образы, мысли, миры. Ты - это движение, это вечность.",
                choices: [],
                isEnd: true,
                onEnter: function(state) { addMotif(state, "Слияние"); determineArchetypeAndShow(state); }
                },
                "fight_form": {
                id: "fight_form",
                text: "Ты сопротивляешься. Сила водоворота пытается разорвать тебя, но ты держишься. Перо в твоей руке начинает светиться ярче, как маяк. Внезапно ты выбрасываешься на поверхность.",
                choices: [
                { text: "Осмотреть новое окружение.", nextSceneId: "surface_new_world" },
                { text: "Проверить перо.", nextSceneId: "check_pen_surface" }
                ]
                },
                "release_pen": {
                id: "release_pen",
                text: "Перо выскальзывает из пальцев и уплывает вглубь. В этот момент ты понимаешь, что перо было якорем, связывающим тебя с реальностью. Ты начинаешь дезинтегрироваться, становясь частью океана.",
                choices: [],
                isEnd: true,
                onEnter: function(state) { addMotif(state, "Потеря Якоря"); determineArchetypeAndShow(state); }
                },
                "understand_waves": {
                id: "understand_waves",
                text: "Язык волн - это музыка, это ритм бытия. Ты начинаешь понимать его, и волны подхватывают тебя, унося в лабиринт подводных пещер, наполненных сияющими кристаллами памяти.",
                choices: [
                { text: "Исследовать ближайшую пещеру.", nextSceneId: "explore_cave" },
                { text: "Собрать кристалл памяти.", nextSceneId: "collect_crystal", item: "Кристалл Памяти" }
                ]
                },
                "surface_fear": {
                id: "surface_fear",
                text: "Страх заставляет тебя всплыть. Ты вдыхаешь воздух, но мир изменился. Океан стал зеркалом, и ты видишь отражение не себя, а кого-то другого. Перевернутый город исчез.",
                choices: [
                { text: "Вглядеться в отражение.", nextSceneId: "look_reflection" },
                { text: "Разбить зеркало океана.", nextSceneId: "break_mirror" }
                ]
                },
                // --- ВЕТКА: Письмо на песке ---
                "read_symbols": {
                id: "read_symbols",
                text: "Символы складываются в предложение: 'Ты - ключ, но дверь еще не создана'. Земля под тобой начинает вибрировать, и из песка вырастает лестница, ведущая вниз, в темноту.",
                choices: [
                { text: "Спуститься по лестнице.", nextSceneId: "descend_ladder" },
                { text: "Искать 'дверь', о которой говорится в послании.", nextSceneId: "search_door" }
                ]
                },
                "erase_symbols": {
                id: "erase_symbols",
                text: "Ты стираешь символы, но песок сразу же формирует их снова, теперь вдвое больше. Они окружают тебя, создавая ловушку из света и тени. Ты чувствуешь, как твоя воля угасает.",
                choices: [],
                isEnd: true,
                onEnter: function(state) { addMotif(state, "Ловушка Смысла"); determineArchetypeAndShow(state); }
                },
                "follow_symbol": {
                id: "follow_symbol",
                text: "Символ плывет вперед, и ты следуешь за ним. Он ведет тебя к краю обрыва, где песок обрывается в пустоту. Символ останавливается, вращаясь в воздухе.",
                choices: [
                { text: "Прыгнуть в пустоту за символом.", nextSceneId: "jump_void" },
                { text: "Попытаться схватить символ.", nextSceneId: "grab_symbol" }
                ]
                },
                "create_pattern": {
                id: "create_pattern",
                text: "Узор становится все сложнее, и внезапно он вспыхивает, открывая портал в другой мир. Из портала доносится приглушенный смех и звук капающей воды.",
                choices: [
                { text: "Войти в портал.", nextSceneId: "enter_portal_sand" },
                { text: "Закрыть портал, завершив узор.", nextSceneId: "close_portal_sand" }
                ]
                },
                "bury_pen": {
                id: "bury_pen",
                text: "Ты закапываешь перо. Земля дрожит, и из точки, где зарыто перо, начинает расти дерево. Его листья - это страницы книг, а плоды - сияющие чернильницы.",
                choices: [
                { text: "Сорвать плод-чернильницу.", nextSceneId: "pick_ink_fruit", item: "Чернильница Мемории" },
                { text: "Сесть под деревом и начать читать листья.", nextSceneId: "read_leaves" }
                ]
                },
                // --- ВЕТКА: Полет к городу ---
                "visit_big_eye": {
                id: "visit_big_eye",
                text: "Ты приближаешься к огромному окну. Внутри ты видишь бесконечную библиотеку, где книги сами перелистываются. Глаз моргает, и ты чувствуешь, как знания хлынули в твой разум.",
                choices: [
                { text: "Попытаться войти в библиотеку.", nextSceneId: "enter_library" },
                { text: "Отвести взгляд, боясь потерять рассудок.", nextSceneId: "look_away_library" }
                ]
                },
                "enter_building": {
                id: "enter_building",
                text: "Дверь открывается, и ты оказываешься в странном помещении. Пол - это звездное небо, стены текут как вода. В центре комнаты стоит стол, на котором лежит карта, но она изображает не местность, а твои собственные сны.",
                choices: [
                { text: "Изучить карту снов.", nextSceneId: "study_dream_map" },
                { text: "Положить руку на звездный пол.", nextSceneId: "touch_star_floor" }
                ]
                },
                "touch_wall": {
                id: "touch_wall",
                text: "Стена пульсирует под твоим прикосновением. Ты чувствуешь, как твоя кожа становится прозрачной, и ты видишь свои внутренние органы, но они сделаны из света и тени. Город принимает тебя.",
                choices: [],
                isEnd: true,
                onEnter: function(state) { addMotif(state, "Слияние с Городом"); determineArchetypeAndShow(state); }
                },
                "find_exit": {
                id: "find_exit",
                text: "Ты ищешь выход и находишь его - дверь, ведущую обратно в 'правильный' мир. Но рядом с дверью сидит фигура, похожая на тебя, но с перевернутым лицом. Она смотрит на тебя.",
                choices: [
                { text: "Открыть дверь и уйти.", nextSceneId: "open_door_leave" },
                { text: "Поговорить с перевернутой фигурой.", nextSceneId: "talk_flipped_figure" }
                ]
                },
                "sing_city": {
                id: "sing_city",
                text: "Твой голос эхом разносится по городу. Здания начинают вибрировать в такт, создавая симфонию. Окна-глаза закрываются, и ты чувствуешь, как город засыпает под твою песню.",
                choices: [],
                isEnd: true,
                onEnter: function(state) { addMotif(state, "Убаюкивание"); determineArchetypeAndShow(state); }
                },
                // --- ВЕТКА: Рисование ---
                "enter_drawing": {
                id: "enter_drawing",
                text: "Ты шагаешь в рисунок. Мир внутри него странен и прекрасен, но хрупок. Каждый твой шаг стирает линии, изменяя пейзаж. Ты понимаешь, что ты создатель и разрушитель этого мира одновременно.",
                choices: [
                { text: "Двигаться осторожно, чтобы сохранить мир.", nextSceneId: "move_carefully_drawing" },
                { text: "Бежать, наблюдая, как мир меняется за тобой.", nextSceneId: "run_drawing" }
                ]
                },
                "create_self": {
                id: "create_self",
                text: "Нарисованный 'ты' оживает. Он смотрит на тебя с любопытством, затем улыбается и делает шаг навстречу. Вы стоите лицом к лицу - оригинал и копия.",
                choices: [
                { text: "Попытаться объяснить ему, кто ты.", nextSceneId: "explain_to_copy" },
                { text: "Предложить ему выйти в реальный мир.", nextSceneId: "invite_copy_out" }
                ]
                },
                "draw_bridge": {
                id: "draw_bridge",
                text: "Мост материализуется. Он ведет в никуда, в точку между реальностью и воображением. По мосту идут другие путешественники - фрагменты твоего подсознания.",
                choices: [
                { text: "Перейти мост.", nextSceneId: "cross_bridge" },
                { text: "Поговорить с одним из фрагментов.", nextSceneId: "talk_fragment" }
                ]
                },
                "erase_drawing": {
                id: "erase_drawing",
                text: "Ты стираешь рисунок. Мир исчезает, но в воздухе остается ощущение утраты. Перо в твоей руке становится тяжелее. Ты чувствуешь, что потерял что-то важное.",
                choices: [
                { text: "Попытаться нарисовать что-то новое.", nextSceneId: "draw_new" },
                { text: "Уйти с этого места.", nextSceneId: "leave_place" }
                ]
                },
                "give_pen_to_drawing": {
                id: "give_pen_to_drawing",
                text: "Существо берет перо. Его глаза вспыхивают, и оно начинает рисовать. Новый мир создается вокруг, более яркий и живой, чем предыдущий. Оно предлагает тебе место в этом новом мире.",
                choices: [],
                isEnd: true,
                onEnter: function(state) { addMotif(state, "Сотворение"); determineArchetypeAndShow(state); }
                },
                // --- ВЕТКА: Шепот волн ---
                "ask_existence": {
                id: "ask_existence",
                text: "Голоса шепчут: 'Ты - вопрос, на который мир пытается ответить. Твое существование - это акт творения, повторяющийся бесконечно.' Волны становятся спокойнее.",
                choices: [
                { text: "Спросить: 'Какой ответ?'.", nextSceneId: "ask_answer" },
                { text: "Принять это и встать.", nextSceneId: "accept_stand" }
                ]
                },
                "ask_city_fate": {
                id: "ask_city_fate",
                text: "Ответ эхом: 'Город падает, чтобы снова взлететь. Он ищет того, кто станет его корнем. Ты - возможно, этот кто-то.' Небо над тобой начинает темнеть.",
                choices: [
                { text: "Поднять голову и ждать.", nextSceneId: "wait_sky" },
                { text: "Закрыть уши и уйти.", nextSceneId: "leave_waves" }
                ]
                },
                "ask_wake_up": {
                id: "ask_wake_up",
                text: "Шепот становится громче: 'Сон - это другая форма реальности. Ты не спишь, ты просто смотришь с другого берега.' Ты чувствуешь, как реальность вокруг начинает колебаться, как теплый воздух над огнем.",
                choices: [
                { text: "Попытаться 'проснуться'.", nextSceneId: "try_wake_up" },
                { text: "Исследовать колеблющуюся реальность.", nextSceneId: "explore_shifting_reality" }
                ]
                },
                "ask_reality": {
                id: "ask_reality",
                text: "Волны замолкают на мгновение, затем отвечают хором: 'Реальность - это согласованный сон разума. Ты - один из сонных богов, забывших, что они спят.' Вокруг появляются фантомы других 'сонных богов'.",
                choices: [
                { text: "Попытаться вспомнить.", nextSceneId: "try_remember_god" },
                { text: "Объединиться с фантомами.", nextSceneId: "unite_phantoms" }
                ]
                },
                "keep_listening": {
                id: "keep_listening",
                text: "Ты слушаешь. Истории сменяют друг друга, становясь все причудливее. Ты перестаешь понимать, где заканчиваются истории и начинаешься ты. Ты сливаешься с шепотом.",
                choices: [],
                isEnd: true,
                onEnter: function(state) { addMotif(state, "Слияние с Нарративом"); determineArchetypeAndShow(state); }
                },
                // --- ДОПОЛНИТЕЛЬНЫЕ СЦЕНЫ ДЛЯ ПРОДОЛЖЕНИЯ ВЕТОК ---
                "surface_new_world": {
                id: "surface_new_world",
                text: "Ты находишься на берегу нового, неизведанного континента. Небо здесь фиолетовое, а деревья растут вниз корнями. Вдалеке виднеется башня, похожая на свернувшуюся улитку.",
                choices: [
                { text: "Идти к башне-улитке.", nextSceneId: "go_to_snail_tower" },
                { text: "Исследовать ближайшее дерево.", nextSceneId: "explore_tree" }
                ]
                },
                "check_pen_surface": {
                id: "check_pen_surface",
                text: "Перо светится, но свет стал теплее. Оно как будто откликнулось на твой страх и усилие. Ты чувствуешь, что оно стало частью тебя, а не просто инструментом.",
                choices: [
                { text: "Продолжить исследование берега.", nextSceneId: "explore_shore" }
                ],
                onEnter: function(state) { addToInventory(state, "Связанное Перо"); }
                },
                "explore_cave": {
                id: "explore_cave",
                text: "Пещера ведет вниз, вглубь планеты. Стены покрыты глифами, похожими на корни и вены. Воздух наполнен эхом чужих мыслей.",
                choices: [
                { text: "Идти глубже, следуя эху.", nextSceneId: "follow_echo" },
                { text: "Выйти из пещеры.", nextSceneId: "exit_cave" }
                ]
                },
                "look_reflection": {
                id: "look_reflection",
                text: "Отражение улыбается тебе чужой улыбкой. Это лицо знакомо, но ты не можешь вспомнить, чье это. Оно шепчет твое имя, но с интонацией, от которой кровь стынет в жилах.",
                choices: [
                { text: "Ответить на шепот.", nextSceneId: "respond_whisper" },
                { text: "Отвернуться и уйти.", nextSceneId: "turn_away_reflection" }
                ]
                },
                "break_mirror": {
                id: "break_mirror",
                text: "Ты бьешь по зеркалу. Оно трескается, и из каждой трещины вырывается стая птиц, сделанных из чернил. Они улетают в небо, оставляя после себя надпись: 'Память не стереть'.",
                choices: [
                { text: "Прочитать надпись.", nextSceneId: "read_inscription" }
                ]
                },
                "descend_ladder": {
                id: "descend_ladder",
                text: "Лестница ведет вниз, в темноту. Воздух становится плотнее. Ты слышишь собственное эхо, но оно звучит как чей-то другой голос.",
                choices: [
                { text: "Продолжать спуск.", nextSceneId: "continue_descent" },
                { text: "Остановиться и послушать эхо.", nextSceneId: "listen_echo_ladder" }
                ]
                },
                "search_door": {
                id: "search_door",
                text: "Ты ищешь дверь, но земля вокруг начинает меняться. Песок превращается в книги, а книги - в двери. Каждая дверь ведет в историю, которую ты никогда не жил.",
                choices: [
                { text: "Открыть первую попавшуюся дверь.", nextSceneId: "open_random_door" },
                { text: "Искать дверь с твоим именем.", nextSceneId: "find_door_with_name" }
                ]
                },
                "jump_void": {
                id: "jump_void",
                text: "Ты прыгаешь. Падение длится бесконечно. Ты проходишь сквозь слои реальности, видя фрагменты множества других жизней и миров. Наконец, ты приземляешься в мягкий свет.",
                choices: [
                { text: "Осмотреться.", nextSceneId: "look_around_void" }
                ]
                },
                "grab_symbol": {
                id: "grab_symbol",
                text: "Ты хватаешь символ. Он обжигает твою руку, и ты отпускаешь его. Символ взрывается, и из него вырывается поток света, который ослепляет тебя. Когда ты открываешь глаза, ты снова стоишь у края океана.",
                choices: [
                { text: "Начать сначала.", nextSceneId: "start" }
                ]
                },
                "enter_portal_sand": {
                id: "enter_portal_sand",
                text: "Ты входишь в портал. Мир вокруг искажается, и ты находишь себя в библиотеке, где книги растут как деревья. В центре стоит пожилая женщина, читающая книгу, страницы которой самопроизвольно перелистываются.",
                choices: [
                { text: "Подойти к женщине.", nextSceneId: "approach_woman" },
                { text: "Выбрать книгу-дерево и начать читать.", nextSceneId: "read_tree_book" }
                ]
                },
                "close_portal_sand": {
                id: "close_portal_sand",
                text: "Ты закрываешь портал. Узор на песке исчезает. Мир вокруг становится статичным, как старая фотография. Ты чувствуешь себя одиноким и забытым.",
                choices: [
                { text: "Попытаться создать новый узор.", nextSceneId: "create_new_pattern" },
                { text: "Уйти прочь.", nextSceneId: "walk_away" }
                ]
                },
                "read_leaves": {
                id: "read_leaves",
                text: "Листья шелестят историями. Ты читаешь о себе, но в этих историях ты - герой, злодей, жертва и свидетель одновременно. Каждая история заканчивается твоей смертью, но по-разному.",
                choices: [
                { text: "Найти историю, где ты выжил.", nextSceneId: "find_survival_story" },
                { text: "Закрыть глаза и перестать читать.", nextSceneId: "stop_reading" }
                ]
                },
                "enter_library": {
                id: "enter_library",
                text: "Ты входишь в библиотеку. Книги шепчут тебе на ухо, предлагая прочитать их. На одной обложке написано твое имя. На другой - имя того, кого ты никогда не знал, но всегда искал.",
                choices: [
                { text: "Взять книгу со своим именем.", nextSceneId: "take_book_your_name" },
                { text: "Взять книгу с именем неизвестного.", nextSceneId: "take_book_unknown_name" }
                ]
                },
                "look_away_library": {
                id: "look_away_library",
                text: "Ты отводишь взгляд. Глаз окна моргает, и ты чувствуешь облегчение. Но теперь ты видишь, что вокруг города появились новые, еще более странные строения, как будто он продолжает расти.",
                choices: [
                { text: "Исследовать новые строения.", nextSceneId: "explore_new_structures" }
                ]
                },
                "study_dream_map": {
                id: "study_dream_map",
                text: "Карта показывает пересечения, повторения, циклы. Ты видишь, что некоторые сны ведут в тупики, а другие - в те же точки, откуда ты начал. Это лабиринт.",
                choices: [
                { text: "Найти выход из лабиринта на карте.", nextSceneId: "find_exit_map" },
                { text: "Попытаться изменить маршрут на карте.", nextSceneId: "change_route_map" }
                ]
                },
                "touch_star_floor": {
                id: "touch_star_floor",
                text: "Прикосновение к полу открывает портал под твоими ногами. Ты падаешь в звездную бездну, где каждая звезда - это чья-то нереализованная мечта.",
                choices: [
                { text: "Попытаться схватить одну из звезд.", nextSceneId: "grab_star" },
                { text: "Крикнуть в бездну.", nextSceneId: "shout_void" }
                ]
                },
                "open_door_leave": {
                id: "open_door_leave",
                text: "Ты открываешь дверь. За ней обычный мир, солнце, шум машин. Ты оборачиваешься, но города уже нет. У тебя в руке осталось перо. Ты кладешь его в карман и уходишь.",
                choices: [],
                isEnd: true,
                onEnter: function(state) { addMotif(state, "Возвращение"); determineArchetypeAndShow(state); }
                },
                "talk_flipped_figure": {
                id: "talk_flipped_figure",
                text: "Фигура говорит твоим голосом, но задом наперед. Она говорит о том, что ты - лишь отражение, а она - истинная реальность. Предлагает поменяться местами.",
                choices: [
                { text: "Согласиться поменяться.", nextSceneId: "agree_swap" },
                { text: "Отказаться и открыть дверь.", nextSceneId: "refuse_open_door" }
                ]
                },
                "move_carefully_drawing": {
                id: "move_carefully_drawing",
                text: "Ты двигаешься осторожно. Мир вокруг стабилизируется. Ты понимаешь, что являешься его творцом. Перед тобой появляется возможность создать идеальный пейзаж.",
                choices: [
                { text: "Создать пейзаж воспоминаний.", nextSceneId: "create_memory_landscape" },
                { text: "Создать пейзаж мечты.", nextSceneId: "create_dream_landscape" }
                ]
                },
                "run_drawing": {
                id: "run_drawing",
                text: "Ты бежишь. Мир за тобой меняется хаотично, сливаясь в абстрактные формы. Ты теряешь ориентацию и в конце концов растворяешься в этом хаосе.",
                choices: [],
                isEnd: true,
                onEnter: function(state) { addMotif(state, "Растворение в Хаосе"); determineArchetypeAndShow(state); }
                },
                "explain_to_copy": {
                id: "explain_to_copy",
                text: "Ты пытаешься объяснить. Копия слушает, кивает, но в ее глазах появляется сомнение. Она говорит: 'Если ты оригинал, то кто я? И почему я чувствую, что ты - лишь копия?'",
                choices: [
                { text: "Доказать, что ты оригинал.", nextSceneId: "prove_original" },
                { text: "Признать, что не знаешь.", nextSceneId: "admit_dont_know" }
                ]
                },
                "invite_copy_out": {
                id: "invite_copy_out",
                text: "Копия улыбается и берет тебя за руку. В момент прикосновения ты чувствуешь, как перо выскальзывает из твоей руки и возвращается в рисунок. Копия становится оригиналом, а ты - рисунком.",
                choices: [],
                isEnd: true,
                onEnter: function(state) { addMotif(state, "Инверсия"); determineArchetypeAndShow(state); }
                },
                "cross_bridge": {
                id: "cross_bridge",
                text: "По мосту ты идешь в неизвестность. Ветер шепчет голоса других путешественников. В центре моста ты встречаешь существо, которое задает тебе загадку.",
                choices: [
                { text: "Попытаться решить загадку.", nextSceneId: "solve_riddle" },
                { text: "Пройти мимо, игнорируя существо.", nextSceneId: "ignore_creature" }
                ]
                },
                "talk_fragment": {
                id: "talk_fragment",
                text: "Фрагмент говорит голосом твоего забытого детства. Он рассказывает о вещах, которые ты старательно забыл. Ты чувствуешь, как прошлое пытается вернуться.",
                choices: [
                { text: "Выслушать до конца.", nextSceneId: "listen_past" },
                { text: "Закрыть уши и бежать.", nextSceneId: "run_from_past" }
                ]
                },
                "draw_new": {
                id: "draw_new",
                text: "Ты пытаешься рисовать снова, но перо не слушается. Оно рисует не то, что ты хочешь, а то, что оно хочет. На этот раз рисунок изображает твой собственный скелет, смотрящий на тебя сквозь плоть.",
                choices: [
                { text: "Стереть этот рисунок.", nextSceneId: "erase_skeleton" },
                { text: "Спросить скелет, чего он хочет.", nextSceneId: "ask_skeleton" }
                ]
                },
                "leave_place": {
                id: "leave_place",
                text: "Ты уходишь. Место, где было рисунок, остается пустым. Ты чувствуешь облегчение, но и тоску. Перо в твоей руке кажется теперь чужим.",
                choices: [
                { text: "Вернуться к океану.", nextSceneId: "return_ocean" }
                ]
                },
                "ask_answer": {
                id: "ask_answer",
                text: "Голоса отвечают: 'Ответ - это следующий вопрос.' Волны начинают образовывать новые узоры, как будто сам океан задает тебе вопрос.",
                choices: [
                { text: "Попытаться 'прочитать' узоры.", nextSceneId: "read_wave_patterns" },
                { text: "Задать свой вопрос океану.", nextSceneId: "ask_ocean" }
                ]
                },
                "accept_stand": {
                id: "accept_stand",
                text: "Ты встаешь. Шепот волн стихает. Ты чувствуешь себя более целостным, как будто только что нашел недостающую часть себя. Перо в твоей руке светится мягко, в унисон твоему сердцебиению.",
                choices: [
                { text: "Идти вдоль берега.", nextSceneId: "walk_along_shore" }
                ]
                },
                "wait_sky": {
                id: "wait_sky",
                text: "Ты ждешь. Небо становится чернее, и в нем появляются трещины, как на зеркале. Из трещин падают фрагменты света, превращаясь в птиц. Они кружат над тобой.",
                choices: [
                { text: "Поднять руку, чтобы птицы сели на нее.", nextSceneId: "raise_hand_birds" },
                { text: "Закрыть глаза и ждать конца.", nextSceneId: "close_eyes_wait_end" }
                ]
                },
                "leave_waves": {
                id: "leave_waves",
                text: "Ты уходишь. Шепот стихает. Перевернутый город возвращается, но теперь он кажется тебе менее странным, более знакомым. Ты чувствуешь, что начинаешь понимать его природу.",
                choices: [
                { text: "Подойти ближе к городу.", nextSceneId: "approach_city_understood" }
                ]
                },
                "try_wake_up": {
                id: "try_wake_up",
                text: "Ты пытаешься 'проснуться'. Мир вокруг начинает меркнуть, как старый фильм. Ты чувствуешь тяжесть, холод. Глаза открываются. Ты лежишь в своей постели. Но в руке твое перо.",
                choices: [],
                isEnd: true,
                onEnter: function(state) { addMotif(state, "Просвет"); determineArchetypeAndShow(state); }
                },
                "explore_shifting_reality": {
                id: "explore_shifting_reality",
                text: "Ты исследуешь колеблющуюся реальность. Стены домов становятся жидкими, небо меняет цвет каждую секунду. Ты понимаешь, что можешь влиять на эти изменения своим настроением.",
                choices: [
                { text: "Попытаться стабилизировать реальность.", nextSceneId: "stabilize_reality" },
                { text: "Погрузиться в хаос перемен.", nextSceneId: "embrace_chaos" }
                ]
                },
                "try_remember_god": {
                id: "try_remember_god",
                text: "Ты пытаешься вспомнить. Фантомы окружают тебя, и ты видишь фрагменты воспоминаний, которые не принадлежат тебе. Это воспоминания всех, кто когда-либо спал и грезил.",
                choices: [
                { text: "Выбрать одно воспоминание и прожить его.", nextSceneId: "live_memory" },
                { text: "Оттолкнуть фантомов и очнуться.", nextSceneId: "push_phantoms" }
                ]
                },
                "unite_phantoms": {
                id: "unite_phantoms",
                text: "Ты протягиваешь руки к фантомам. Они принимают тебя. Ты чувствуешь, как твое сознание расширяется, вбирая в себя бесчисленные сны. Ты становишься частью коллективного бессознательного.",
                choices: [],
                isEnd: true,
                onEnter: function(state) { addMotif(state, "Слияние с Коллективом"); determineArchetypeAndShow(state); }
                },
                // --- ФИНАЛЬНЫЕ СЦЕНЫ ОСНОВНОЙ ВЕТКИ ---
                "read_inscription": {
                id: "read_inscription",
                text: "[Финал: Чтение] Ты читаешь надпись на обрыве: 'Память не стереть, но можно переписать'. Слова мерцают и исчезают. Ты остаешься один, с новым пониманием.",
                choices: [],
                isEnd: true,
                onEnter: function(state) { addMotif(state, "Чтение"); determineArchetypeAndShow(state); }
                },
                "go_to_snail_tower": {
                id: "go_to_snail_tower",
                text: "[Финал: Путешествие] Ты входишь в башню-улитку. Внутри - бесконечная спираль лестниц. Ты поднимаешься, и с каждой ступенью чувствуешь, как становишься легче. В конце пути - дверь в новое начало.",
                choices: [],
                isEnd: true,
                onEnter: function(state) { addMotif(state, "Путешествие"); determineArchetypeAndShow(state); }
                },
                "explore_tree": {
                id: "explore_tree",
                text: "[Финал: Исследование] Ты исследуешь дерево. Его корни уходят глубоко в землю, а крона теряется в фиолетовом небе. Ты находишь дупло, где лежит зеркало. В отражении ты видишь свое истинное 'я'.",
                choices: [],
                isEnd: true,
                onEnter: function(state) { addMotif(state, "Исследование"); determineArchetypeAndShow(state); }
                },
                "follow_echo": {
                id: "follow_echo",
                text: "[Финал: Поиск] Ты следуешь за эхом. Оно ведет тебя к сердцу планеты, где ты находишь кристалл, излучающий твой собственный голос. Ты понимаешь, что был в поиске себя.",
                choices: [],
                isEnd: true,
                onEnter: function(state) { addMotif(state, "Поиск"); determineArchetypeAndShow(state); }
                },
                "exit_cave": {
                id: "exit_cave",
                text: "[Финал: Возвращение] Ты выходишь из пещеры. Свет ослепляет. Ты видишь океан, но он другой. Ты другой. Перо в твоей руке теперь просто палка. Ты бросаешь ее и идешь домой.",
                choices: [],
                isEnd: true,
                onEnter: function(state) { addMotif(state, "Возвращение"); determineArchetypeAndShow(state); }
                },
                "respond_whisper": {
                id: "respond_whisper",
                text: "[Финал: Диалог] Ты отвечаешь на шепот. Отражение выходит из зеркала океана и становится реальным. Оно говорит: 'Теперь мы вместе'. Вы идете вдвоем по берегу, становясь одним.",
                choices: [],
                isEnd: true,
                onEnter: function(state) { addMotif(state, "Диалог"); determineArchetypeAndShow(state); }
                },
                "turn_away_reflection": {
                id: "turn_away_reflection",
                text: "[Финал: Отказ] Ты отворачиваешься. Отражение кричит, зовет тебя, но ты уходишь. Ты чувствуешь облегчение. Ты сохранил свою целостность, отказавшись от встречи с другой стороной своей души.",
                choices: [],
                isEnd: true,
                onEnter: function(state) { addMotif(state, "Отказ"); determineArchetypeAndShow(state); }
                },
                "continue_descent": {
                id: "continue_descent",
                text: "[Финал: Погружение] Ты продолжаешь спускаться. Темнота становится абсолютной. Ты перестаешь чувствовать свое тело. Ты - только мысль, падающая в вечность.",
                choices: [],
                isEnd: true,
                onEnter: function(state) { addMotif(state, "Погружение"); determineArchetypeAndShow(state); }
                },
                "listen_echo_ladder": {
                id: "listen_echo_ladder",
                text: "[Финал: Прислушивание] Ты останавливаешься и слушаешь эхо. Оно рассказывает историю о том, как ты забрел сюда много лет назад и так и не нашел выход. Ты понимаешь, что это твое подсознание.",
                choices: [],
                isEnd: true,
                onEnter: function(state) { addMotif(state, "Прислушивание"); determineArchetypeAndShow(state); }
                },
                "open_random_door": {
                id: "open_random_door",
                text: "[Финал: Случайность] Ты открываешь дверь. За ней - твоя жизнь, но с одним изменением. Ты видишь себя, сделавшего другой выбор много лет назад. Жизнь пошла по другому пути. Ты закрываешь дверь, понимая, что все возможно.",
                choices: [],
                isEnd: true,
                onEnter: function(state) { addMotif(state, "Случайность"); determineArchetypeAndShow(state); }
                },
                "find_door_with_name": {
                id: "find_door_with_name",
                text: "[Финал: Идентичность] Ты находишь дверь со своим именем. За ней - комната, в которой ты видишь все свои возможные 'я'. Ты выбираешь одно и становишься им. Другие исчезают.",
                choices: [],
                isEnd: true,
                onEnter: function(state) { addMotif(state, "Идентичность"); determineArchetypeAndShow(state); }
                },
                "look_around_void": {
                id: "look_around_void",
                text: "[Финал: Наблюдение] Ты оглядываешься. Место странное и красивое. Ты чувствуешь, что можешь остаться здесь навсегда, наблюдая за потоками реальности. Ты становишься вечным наблюдателем.",
                choices: [],
                isEnd: true,
                onEnter: function(state) { addMotif(state, "Наблюдение"); determineArchetypeAndShow(state); }
                },
                "approach_woman": {
                id: "approach_woman",
                text: "[Финал: Знание] Ты подходишь к женщине. Она улыбается и протягивает тебе книгу. 'Это твоя история', - говорит она. Ты берешь книгу. На обложке твое имя. Ты открываешь первую страницу и читаешь: 'Жил-был...'",
                choices: [],
                isEnd: true,
                onEnter: function(state) { addMotif(state, "Знание"); determineArchetypeAndShow(state); }
                },
                "read_tree_book": {
                id: "read_tree_book",
                text: "[Финал: Поглощение] Ты начинаешь читать книгу-дерево. Слова входят в тебя, переполняют сознание. Ты перестаешь быть собой. Ты становишься частью книги, части дерева, частью самой библиотеки.",
                choices: [],
                isEnd: true,
                onEnter: function(state) { addMotif(state, "Поглощение"); determineArchetypeAndShow(state); }
                },
                "create_new_pattern": {
                id: "create_new_pattern",
                text: "[Финал: Творчество] Ты создаешь новый узор. Он красив и сложен. В этот момент ты понимаешь, что являешься творцом реальности. Ты можешь создать любой мир. Ты начинаешь создавать свой собственный мир.",
                choices: [],
                isEnd: true,
                onEnter: function(state) { addMotif(state, "Творчество"); determineArchetypeAndShow(state); }
                },
                "walk_away": {
                id: "walk_away",
                text: "[Финал: Уход] Ты уходишь. Песок остается пустым. Ты чувствуешь, что упустил что-то важное. Ты оборачиваешься, но портал не открывается снова. Ты идешь по берегу, оставляя следы.",
                choices: [],
                isEnd: true,
                onEnter: function(state) { addMotif(state, "Уход"); determineArchetypeAndShow(state); }
                },
                "find_survival_story": {
                id: "find_survival_story",
                text: "[Финал: Надежда] Ты находишь историю, где выжил. Но прочитав ее, ты понимаешь, что 'выжить' означало отказаться от всего, что делало тебя собой. Выживший - это пустая оболочка. Ты закрываешь глаза, понимая цену выживания.",
                choices: [],
                isEnd: true,
                onEnter: function(state) { addMotif(state, "Надежда"); determineArchetypeAndShow(state); }
                },
                "stop_reading": {
                id: "stop_reading",
                text: "[Финал: Игнорирование] Ты перестаешь читать. Дерево перестает шелестеть. Тишина окутывает тебя. Ты чувствуешь облегчение, но и пустоту. Ты уходишь, оставляя за собой неотвеченные вопросы.",
                choices: [],
                isEnd: true,
                onEnter: function(state) { addMotif(state, "Игнорирование"); determineArchetypeAndShow(state); }
                },
                "take_book_your_name": {
                id: "take_book_your_name",
                text: "[Финал: Признание] Ты берешь книгу со своим именем. Она рассыпается в твоих руках, превращаясь в пыль. Из пыли поднимается образ твоего 'я', который говорит: 'Ты наконец нашел меня'.",
                choices: [],
                isEnd: true,
                onEnter: function(state) { addMotif(state, "Признание"); determineArchetypeAndShow(state); }
                },
                "take_book_unknown_name": {
                id: "take_book_unknown_name",
                text: "[Финал: Открытие] Ты берешь книгу с неизвестным именем. В ней история о человеке, которого не существует, но который живет в каждом из нас. Ты понимаешь, что это ты, которого ты боишься стать.",
                choices: [],
                isEnd: true,
                onEnter: function(state) { addMotif(state, "Открытие"); determineArchetypeAndShow(state); }
                },
                "explore_new_structures": {
                id: "explore_new_structures",
                text: "[Финал: Исследование] Ты исследуешь новые строения. Они излучают тепло и пульсируют. Ты входишь в одно из них и находишь комнату, полную зеркал. В каждом зеркале - ты, но в разном возрасте, в разных жизнях.",
                choices: [],
                isEnd: true,
                onEnter: function(state) { addMotif(state, "Исследование"); determineArchetypeAndShow(state); }
                },
                "find_exit_map": {
                id: "find_exit_map",
                text: "[Финал: Решение] Ты находишь выход на карте. Он ведет в точку, обозначенную как 'Начало'. Ты понимаешь, что лабиринт - это круг. Ты возвращаешься туда, откуда начал, но уже не тот, что был.",
                choices: [],
                isEnd: true,
                onEnter: function(state) { addMotif(state, "Решение"); determineArchetypeAndShow(state); }
                },
                "change_route_map": {
                id: "change_route_map",
                text: "[Финал: Изменение] Ты пытаешься изменить маршрут. Карта сопротивляется, но ты настаиваешь. Линии перерисовываются. Ты создаешь новый путь, ведущий в неизведанное. Ты следуешь по нему.",
                choices: [],
                isEnd: true,
                onEnter: function(state) { addMotif(state, "Изменение"); determineArchetypeAndShow(state); }
                },
                "grab_star": {
                id: "grab_star",
                text: "[Финал: Достижение] Ты хватаешь звезду. Она обжигает, но ты не отпускаешь. Свет ослепляет. Ты чувствуешь, как наполняешься силой чужих мечтаний. Ты становишься воплощением надежды.",
                choices: [],
                isEnd: true,
                onEnter: function(state) { addMotif(state, "Достижение"); determineArchetypeAndShow(state); }
                },
                "shout_void": {
                id: "shout_void",
                text: "[Финал: Крик] Ты кричишь в бездну. Твой крик эхом возвращается, но каждый раз он звучит по-другому. Ты понимаешь, что кричишь не в пустоту, а в бесконечность возможностей. Каждый эхо - это новая жизнь.",
                choices: [],
                isEnd: true,
                onEnter: function(state) { addMotif(state, "Крик"); determineArchetypeAndShow(state); }
                },
                "agree_swap": {
                id: "agree_swap",
                text: "[Финал: Жертва] Ты соглашаешься поменяться. Мир переворачивается. Ты теперь внутри двери, а фигура снаружи. Ты чувствуешь, как реальность принимает тебя. Ты - новая стражница границы.",
                choices: [],
                isEnd: true,
                onEnter: function(state) { addMotif(state, "Жертва"); determineArchetypeAndShow(state); }
                },
                "refuse_open_door": {
                id: "refuse_open_door",
                text: "[Финал: Упорство] Ты отказываешься. Фигура вздыхает и отходит в сторону. Ты открываешь дверь. За ней обычный мир. Ты уходишь, чувствуя, что сохранил себя, несмотря ни на что.",
                choices: [],
                isEnd: true,
                onEnter: function(state) { addMotif(state, "Упорство"); determineArchetypeAndShow(state); }
                },
                "create_memory_landscape": {
                id: "create_memory_landscape",
                text: "[Финал: Ностальгия] Ты создаешь пейзаж воспоминаний. Он прекрасен, но грустен. Ты живешь в нем вечно, переживая одни и те же моменты снова и снова. Время останавливается.",
                choices: [],
                isEnd: true,
                onEnter: function(state) { addMotif(state, "Ностальгия"); determineArchetypeAndShow(state); }
                },
                "create_dream_landscape": {
                id: "create_dream_landscape",
                text: "[Финал: Идеализм] Ты создаешь пейзаж мечты. Он совершенен, но хрупок. Любое прикосновение к нему искажает его. Ты становишься тюремщиком собственной мечты, боясь даже дышать.",
                choices: [],
                isEnd: true,
                onEnter: function(state) { addMotif(state, "Идеализм"); determineArchetypeAndShow(state); }
                },
                "prove_original": {
                id: "prove_original",
                text: "[Финал: Доказательство] Ты пытаешься доказать. Но чем больше ты доказываешь, тем меньше уверен в себе. Копия улыбается. 'Видишь, ты уже сомневаешься. Значит, я - оригинал'. Мир меняется.",
                choices: [],
                isEnd: true,
                onEnter: function(state) { addMotif(state, "Доказательство"); determineArchetypeAndShow(state); }
                },
                "admit_dont_know": {
                id: "admit_dont_know",
                text: "[Финал: Смирение] Ты признаешь, что не знаешь. Копия кивает с уважением. 'Тогда мы оба оригиналы', - говорит она. Она протягивает руку, и вы выходите из рисунка вместе, став двумя частями одного целого.",
                choices: [],
                isEnd: true,
                onEnter: function(state) { addMotif(state, "Смирение"); determineArchetypeAndShow(state); }
                },
                "solve_riddle": {
                id: "solve_riddle",
                text: "[Финал: Интеллект] Ты решаешь загадку. Существо улыбается и исчезает. Мост под твоими ногами становится прочнее. Ты переходишь его и находишь себя в месте, где все вопросы уже имеют ответы.",
                choices: [],
                isEnd: true,
                onEnter: function(state) { addMotif(state, "Интеллект"); determineArchetypeAndShow(state); }
                },
                "ignore_creature": {
                id: "ignore_creature",
                text: "[Финал: Индифферентность] Ты идешь мимо. Существо вздыхает и исчезает. Мост трясется под твоими ногами. Ты почти достигаешь середины, когда мост обрушивается. Ты падаешь в пустоту, но падение не приносит страха, а лишь покой.",
                choices: [],
                isEnd: true,
                onEnter: function(state) { addMotif(state, "Индифферентность"); determineArchetypeAndShow(state); }
                },
                "listen_past": {
                id: "listen_past",
                text: "[Финал: Принятие] Ты выслушиваешь до конца. Прошлое вливается в тебя, делая тебя целостным. Ты понимаешь, что не нужно бояться забытого. Ты встаешь, чувствуя себя полным.",
                choices: [],
                isEnd: true,
                onEnter: function(state) { addMotif(state, "Принятие"); determineArchetypeAndShow(state); }
                },
                "run_from_past": {
                id: "run_from_past",
                text: "[Финал: Отрицание] Ты бежишь. Фрагменты прошлого кричат тебе вслед, но ты не оглядываешься. Ты выходишь из рисунка, чувствуя облегчение. Но ты знаешь, что часть тебя осталась там, в прошлом.",
                choices: [],
                isEnd: true,
                onEnter: function(state) { addMotif(state, "Отрицание"); determineArchetypeAndShow(state); }
                },
                "erase_skeleton": {
                id: "erase_skeleton",
                text: "[Финал: Отказ от Смерти] Ты стираешь рисунок скелета. Перо дрожит в твоей руке. Ты чувствуешь, как жизнь вливается в тебя с новой силой. Ты отверг смерть, выбрав жизнь.",
                choices: [],
                isEnd: true,
                onEnter: function(state) { addMotif(state, "Отказ от Смерти"); determineArchetypeAndShow(state); }
                },
                "ask_skeleton": {
                id: "ask_skeleton",
                text: "[Финал: Диалог со Смертью] Ты спрашиваешь скелет. Он отвечает: 'Я хочу быть свободным'. Ты понимаешь, что должен отпустить перо. Оно возвращается скелету, и тот оживает, благодарит тебя и уходит, оставляя после себя только пустую оболочку.",
                choices: [],
                isEnd: true,
                onEnter: function(state) { addMotif(state, "Диалог со Смертью"); determineArchetypeAndShow(state); }
                },
                "return_ocean": {
                id: "return_ocean",
                text: "[Финал: Возвращение] Ты возвращаешься к океану. Все как будто забылось. Но в твоем сердце остался осадок пережитого. Ты снова стоишь у края, перо в руке. Что ты делаешь?",
                choices: [
                { text: "Погружаюсь в океан, держа перо.", nextSceneId: "dive_ocean" },
                { text: "Пишу на песке первую букву своего имени.", nextSceneId: "write_sand" },
                { text: "Лечу вверх, к перевернутому городу.", nextSceneId: "fly_city" },
                { text: "Сажусь и начинаю рисовать пейзаж вокруг.", nextSceneId: "draw_landscape" },
                { text: "Закрываю глаза и слушаю шепот волн.", nextSceneId: "listen_waves" }
                ],
                onEnter: function(state) { addMotif(state, "Цикл"); }
                },
                "read_wave_patterns": {
                id: "read_wave_patterns",
                text: "[Финал: Чтение Природы] Ты 'читаешь' узоры волн. Они говорят о великом цикле, о связи всех вещей. Ты понимаешь свое место в этом цикле. Ты становишься частью океана, но сохраняешь сознание.",
                choices: [],
                isEnd: true,
                onEnter: function(state) { addMotif(state, "Чтение Природы"); determineArchetypeAndShow(state); }
                },
                "ask_ocean": {
                id: "ask_ocean",
                text: "[Финал: Вопрос] Ты задаешь свой вопрос океану. Волны отвечают не словами, а чувствами. Ты понимаешь ответ всем своим существом. Это знание становится частью тебя. Ты уходишь, измененный.",
                choices: [],
                isEnd: true,
                onEnter: function(state) { addMotif(state, "Вопрос"); determineArchetypeAndShow(state); }
                },
                "walk_along_shore": {
                id: "walk_along_shore",
                text: "[Финал: Путь] Ты идешь вдоль берега. Перо в руке светится в такт твоим шагам. Ты не знаешь, куда ведет путь, но ты идешь. Это и есть ответ.",
                choices: [],
                isEnd: true,
                onEnter: function(state) { addMotif(state, "Путь"); determineArchetypeAndShow(state); }
                },
                "raise_hand_birds": {
                id: "raise_hand_birds",
                text: "[Финал: Принятие Дара] Ты поднимаешь руку. Птицы садятся на нее. Их свет наполняет тебя. Ты понимаешь, что они - твои забытые мечты. Ты принимаешь их обратно. Ты становишься целым.",
                choices: [],
                isEnd: true,
                onEnter: function(state) { addMotif(state, "Принятие Дара"); determineArchetypeAndShow(state); }
                },
                "close_eyes_wait_end": {
                id: "close_eyes_wait_end",
                text: "[Финал: Сдача] Ты закрываешь глаза и ждешь. Тьма окутывает тебя. Ты чувствуешь, как твое 'я' распадается. Это не боль, а облегчение. Ты сдаешься концу.",
                choices: [],
                isEnd: true,
                onEnter: function(state) { addMotif(state, "Сдача"); determineArchetypeAndShow(state); }
                },
                "approach_city_understood": {
                id: "approach_city_understood",
                text: "[Финал: Понимание] Ты подходишь к городу. Теперь ты понимаешь его. Это не город, а карта твоего сознания. Ты входишь в него, чтобы исследовать себя изнутри.",
                choices: [],
                isEnd: true,
                onEnter: function(state) { addMotif(state, "Понимание"); determineArchetypeAndShow(state); }
                },
                "stabilize_reality": {
                id: "stabilize_reality",
                text: "[Финал: Контроль] Ты стабилизируешь реальность. Хаос утихает. Мир становится предсказуемым. Ты чувствуешь власть, но также и скуку. Ты создал идеальную клетку.",
                choices: [],
                isEnd: true,
                onEnter: function(state) { addMotif(state, "Контроль"); determineArchetypeAndShow(state); }
                },
                "embrace_chaos": {
                id: "embrace_chaos",
                text: "[Финал: Хаос] Ты погружаешься в хаос. Мир меняется каждую секунду. Ты теряешь себя, но находишь нечто большее. Ты становишься частью потока, частью вечного изменения.",
                choices: [],
                isEnd: true,
                onEnter: function(state) { addMotif(state, "Хаос"); determineArchetypeAndShow(state); }
                },
                "live_memory": {
                id: "live_memory",
                text: "[Финал: Жизнь в Прошлом] Ты выбираешь воспоминание и живешь его. Оно становится реальнее настоящего. Ты забываешь, кто ты есть сейчас. Ты остаешься в прошлом навсегда.",
                choices: [],
                isEnd: true,
                onEnter: function(state) { addMotif(state, "Жизнь в Прошлом"); determineArchetypeAndShow(state); }
                },
                "push_phantoms": {
                id: "push_phantoms",
                text: "[Финал: Пробуждение] Ты отталкиваешь фантомов. Сны рассеиваются. Ты очищаешься от чужих воспоминаний. Ты встаешь, чувствуя себя своим хозяином. Ты проснулся.",
                choices: [],
                isEnd: true,
                onEnter: function(state) { addMotif(state, "Пробуждение"); determineArchetypeAndShow(state); }
                },
                // --- ВЕТКА: ПУСТЫНЯ ИСТОРИЙ ---
                // --- СЦЕНА 1: ВХОД В ПУСТЫНЮ ---
                "desert_enter": {
                id: "desert_enter",
                text: "Ты входишь в Пустыню Историй. Песок здесь не желтый, а серо-бежевый, как старые страницы. Воздух наполнен шелестом пергамента и запахом чернил. Ты видишь руины, похожие одновременно на обломки дома и обложки книги.",
                choices: [
                { text: "Иду к ближайшим руинам.", nextSceneId: "desert_approach_ruins" },
                { text: "Слушаю шелест песка.", nextSceneId: "desert_listen_sand" },
                { text: "Собираю обломки, чтобы построить что-то новое.", nextSceneId: "desert_collect_fragments" },
                { text: "Ищу следы других путешественников.", nextSceneId: "desert_look_for_tracks" }
                ],
                style: { theme: "desert-theme", font: "font-papyrus" }
                },
                // --- СЦЕНА 2: ПОДХОЖУ К РУИНАМ ---
                "desert_approach_ruins": {
                id: "desert_approach_ruins",
                text: "Руины напоминают обломки старого дома. Стены покрыты символами, похожими на буквы, но искаженными. Внутри ты находишь стол, на котором лежит блокнот. Он открыт на странице с надписью: 'Предупреждение: каждая история требует жертвы. Обещание: каждая жертва дарует сокровище.'",
                choices: [
                { text: "Читаю предупреждение и обещание.", nextSceneId: "desert_read_notebook" },
                { text: "Сажусь за стол и начинаю писать свою историю.", nextSceneId: "desert_write_own_story" },
                { text: "Сжигаю блокнот.", nextSceneId: "desert_burn_notebook" },
                { text: "Слушаю, что шепчут руины.", nextSceneId: "desert_listen_ruins" }
                ],
                style: { theme: "desert-theme", font: "font-papyrus" }
                },
                // --- СЦЕНА 3: ЧИТАЮ БЛОКНОТ ---
                "desert_read_notebook": {
                id: "desert_read_notebook",
                text: "Ты читаешь предупреждение и обещание. Слова начинают мерцать. Внезапно блокнот закрывается, и из него вылетает стая бумажных лодок. Они плывут по воздуху, как по течению. Каждая лодка - это история, которую кто-то оставил здесь.",
                choices: [
                { text: "Строю из песка плот, чтобы последовать за ними.", nextSceneId: "build_sand_raft" },
                { text: "Разбиваю оставшиеся кусочки страниц. Больше лодок не появляется.", nextSceneId: "break_more_lonely" },
                { text: "Сажусь и смотрю фильм до конца.", nextSceneId: "desert_sit_watch_film" }
                ],
                onEnter: function(state) { addMotif(state, "Мотив: Предупреждение и Обещание"); },
                style: { theme: "desert-theme", font: "font-papyrus" }
                },
                // --- СЦЕНА 4: СОБИРАЮ ОБЛОМКИ ---
                "desert_collect_fragments": {
                id: "desert_collect_fragments",
                text: "Ты начинаешь собирать обломки. Из кусочка стены, кусочка пола, осколка окна ты пытаешься сложить что-то целое. С каждым новым фрагментом твоя конструкция становится все причудливее. Это уже не дом и не книга. Это что-то новое, рожденное из хаоса. Когда ты заканчиваешь, конструкция оживает. Стены начинают менять цвет, пол – издавать тихий шепот, а из окна доносится свет. Ты слышишь голос: 'Ты создал новую реальность. Войди в нее.'",
                choices: [
                { text: "Вхожу внутрь созданной конструкции.", nextSceneId: "desert_enter_creation" },
                { text: "Наблюдаю, как оживает моя конструкция.", nextSceneId: "desert_watch_creation" },
                { text: "Разрушаю конструкцию, боясь её силы.", nextSceneId: "desert_destroy_creation" }
                ],
                style: { theme: "desert-theme", font: "font-comic" }
                },
                // --- СЦЕНА 5: ВХОЖУ В КОНСТРУКЦИЮ ---
                "desert_enter_creation": {
                id: "desert_enter_creation",
                text: "Ты входишь внутрь созданной конструкции. Стены меняют цвет. Пол издает тихий шепот. Из окна доносится свет. Ты чувствуешь, как ты становишься частью этой конструкции. Ты – не гость, ты – хозяин.",
                choices: [
                { text: "Исследую интерьер конструкции.", nextSceneId: "desert_explore_interior" },
                { text: "Кричу, чтобы проверить акустику.", nextSceneId: "desert_shout_acoustics" },
                { text: "Сажусь и размышляю о своей роли.", nextSceneId: "desert_sit_reflect_role" }
                ],
                style: { theme: "desert-theme", font: "font-papyrus" }
                },
                // --- СЦЕНА 6: НАБЛЮДАЮ ЗА КОНСТРУКЦИЕЙ ---
                "desert_watch_creation": {
                id: "desert_watch_creation",
                text: "Ты наблюдаешь, как оживает моя конструкция. Стены начинают менять цвет, пол – издавать тихий шепот, а из окна доносится свет. Ты чувствуешь, как ты становишься частью этого процесса. Ты – создатель.",
                choices: [
                { text: "Вхожу внутрь конструкции.", nextSceneId: "desert_enter_creation" },
                { text: "Кричу, чтобы конструкция остановилась.", nextSceneId: "desert_shout_stop_creation" },
                { text: "Сажусь и размышляю о творении.", nextSceneId: "desert_sit_reflect_creation" }
                ],
                style: { theme: "desert-theme", font: "font-papyrus" }
                },
                // --- СЦЕНА 7: РАЗРУШАЮ КОНСТРУКЦИЮ ---
                "desert_destroy_creation": {
                id: "desert_destroy_creation",
                text: "Ты разрушаешь конструкцию. Стены теряют цвет, шепот стихает, свет меркнет. Ты чувствуешь облегчение, но и сожаление. Ты – разрушитель.",
                choices: [
                { text: "Покидаю место разрушения.", nextSceneId: "desert_leave_destruction" },
                { text: "Собираю осколки заново.", nextSceneId: "desert_rebuild_creation" },
                { text: "Сажусь среди обломков и размышляю о разрушении.", nextSceneId: "desert_sit_amidst_debris" }
                ],
                style: { theme: "desert-theme", font: "font-papyrus" }
                },
                // --- ФИНАЛЬНЫЕ СЦЕНЫ ВЕТКИ ПУСТЫНИ ---
                "desert_burn_notebook": {
                id: "desert_burn_notebook",
                text: "[Финал: Молчание] Ты сжигаешь блокнот. История уничтожена. Ты больше не можешь вспомнить предупреждение и обещание. Ты - молчаливый.",
                choices: [],
                isEnd: true,
                onEnter: function(state) { addMotif(state, "Финал: Молчание"); collectTreasure(state, "Слово-Сокровище: Тишина"); incrementFinalCounter(state, "История"); determineArchetypeAndShow(state); },
                style: { theme: "desert-theme", font: "font-papyrus" }
                },
                "build_sand_raft": {
                id: "build_sand_raft",
                text: "Ты строишь плот. Он держится на воде недолго, но этого достаточно, чтобы отплыть немного вдаль. Иногда этого достаточно.",
                choices: [{ text: "Плыть немного.", nextSceneId: "end_jump_waves" }],
                style: { theme: "desert-theme", font: "font-papyrus" }
                },
                "break_more_lonely": {
                id: "break_more_lonely",
                text: "Ты разбиваешь оставшиеся кусочки. Больше лодок нет. Ты один. Одиночество охватывает тебя, но в нём тоже есть своя истина.",
                choices: [{ text: "Принять одиночество.", nextSceneId: "end_cannot_write" }],
                style: { theme: "desert-theme", font: "font-papyrus" }
                },
                "desert_sit_watch_film": {
                id: "desert_sit_watch_film",
                text: "[Финал: Наблюдение] Ты сажусь и смотришь, как бумажные лодки уплывают. Ты понимаешь, что иногда быть наблюдателем - это тоже форма участия. Ты - зритель.",
                choices: [],
                isEnd: true,
                onEnter: function(state) { addMotif(state, "Финал: Наблюдение"); collectTreasure(state, "Слово-Сокровище: Взгляд"); incrementFinalCounter(state, "История"); determineArchetypeAndShow(state); },
                style: { theme: "desert-theme", font: "font-lucida" }
                },
                "desert_explore_interior": {
                id: "desert_explore_interior",
                text: "[Финал: Исследование] Ты исследуешь интерьер. Каждая комната - это новая глава, каждый предмет - символ. Ты становишься частью созданной реальности. Ты - исследователь.",
                choices: [],
                isEnd: true,
                onEnter: function(state) { addMotif(state, "Финал: Исследование"); collectTreasure(state, "Слово-Сокровище: Ключ"); incrementFinalCounter(state, "История"); determineArchetypeAndShow(state); },
                style: { theme: "desert-theme", font: "font-papyrus" }
                },
                "desert_shout_acoustics": {
                id: "desert_shout_acoustics",
                text: "[Финал: Эхо] Ты кричишь. Голос отражается от стен, создавая эхо. Эхо становится громче, и ты понимаешь, что оно несет в себе голоса всех, кто когда-либо кричал здесь. Ты - эхо.",
                choices: [],
                isEnd: true,
                onEnter: function(state) { addMotif(state, "Финал: Эхо"); collectTreasure(state, "Слово-Сокровище: Глас"); incrementFinalCounter(state, "История"); determineArchetypeAndShow(state); },
                style: { theme: "echo-theme", font: "font-impact" }
                },
                "desert_sit_reflect_role": {
                id: "desert_sit_reflect_role",
                text: "[Финал: Размышление] Ты сажусь и размышляешь о своей роли. Ты понимаешь, что создание реальности - это великая ответственность. Ты - мыслитель.",
                choices: [],
                isEnd: true,
                onEnter: function(state) { addMotif(state, "Финал: Размышление"); collectTreasure(state, "Слово-Сокровище: Мудрость"); incrementFinalCounter(state, "История"); determineArchetypeAndShow(state); },
                style: { theme: "desert-theme", font: "font-lucida" }
                },
                "desert_shout_stop_creation": {
                id: "desert_shout_stop_creation",
                text: "[Финал: Остановка] Ты кричишь, чтобы остановить конструкцию. Твоя воля сильнее. Конструкция замирает. Ты - властелин.",
                choices: [],
                isEnd: true,
                onEnter: function(state) { addMotif(state, "Финал: Остановка"); collectTreasure(state, "Слово-Сокровище: Власть"); incrementFinalCounter(state, "История"); determineArchetypeAndShow(state); },
                style: { theme: "echo-theme", font: "font-impact" }
                },
                "desert_sit_reflect_creation": {
                id: "desert_sit_reflect_creation",
                text: "[Финал: Творец] Ты сажусь и размышляешь о творении. Ты понимаешь, что создал нечто большее, чем просто конструкцию. Ты создал новую реальность. Ты - творец.",
                choices: [],
                isEnd: true,
                onEnter: function(state) { addMotif(state, "Финал: Творец"); collectTreasure(state, "Слово-Сокровище: Искра"); incrementFinalCounter(state, "История"); determineArchetypeAndShow(state); },
                style: { theme: "desert-theme", font: "font-lucida" }
                },
                "desert_leave_destruction": {
                id: "desert_leave_destruction",
                text: "[Финал: Уход] Ты покидаешь место разрушения. Ты чувствуешь облегчение, но и пустоту. Ты ушел от ответственности. Ты - беглец.",
                choices: [],
                isEnd: true,
                onEnter: function(state) { addMotif(state, "Финал: Уход"); collectTreasure(state, "Слово-Сокровище: Свобода"); incrementFinalCounter(state, "История"); determineArchetypeAndShow(state); },
                style: { theme: "desert-theme", font: "font-papyrus" }
                },
                "desert_rebuild_creation": {
                id: "desert_rebuild_creation",
                text: "[Финал: Возрождение] Ты собираешь осколки заново. Конструкция оживает снова, но теперь она сильнее. Ты понимаешь, что разрушение - это тоже часть творения. Ты - возрожденный.",
                choices: [],
                isEnd: true,
                onEnter: function(state) { addMotif(state, "Финал: Возрождение"); collectTreasure(state, "Слово-Сокровище: Воскрешение"); incrementFinalCounter(state, "История"); determineArchetypeAndShow(state); },
                style: { theme: "desert-theme", font: "font-papyrus" }
                },
                "desert_sit_amidst_debris": {
                id: "desert_sit_amidst_debris",
                text: "[Финал: Размышление о Разрушении] Ты сажусь среди обломков и размышляешь о разрушении. Ты понимаешь, что иногда разрушение необходимо для создания чего-то нового. Ты - философ.",
                choices: [],
                isEnd: true,
                onEnter: function(state) { addMotif(state, "Финал: Размышление о Разрушении"); collectTreasure(state, "Слово-Сокровище: Пепел"); incrementFinalCounter(state, "История"); determineArchetypeAndShow(state); },
                style: { theme: "desert-theme", font: "font-lucida" }
                },
                // --- СЦЕНЫ-ЗАГЛУШКИ ДЛЯ ОШИБОК ---
                "end_jump_waves": {
                id: "end_jump_waves",
                text: "[Финал: Прыжок] Ты прыгаешь в волны. Ты чувствуешь, как тело становится легче, как будто растворяешься в чернилах и свете. Ты - часть океана.",
                choices: [],
                isEnd: true,
                onEnter: function(state) { addMotif(state, "Финал: Прыжок"); collectTreasure(state, "Слово-Сокровище: Растворение"); incrementFinalCounter(state, "История"); determineArchetypeAndShow(state); }
                },
                "end_cannot_write": {
                id: "end_cannot_write",
                text: "[Финал: Неспособность Писать] Ты пытаешься написать, но слова не идут. Ты чувствуешь, как пустота заполняет тебя. Ты - немой.",
                choices: [],
                isEnd: true,
                onEnter: function(state) { addMotif(state, "Финал: Неспособность Писать"); collectTreasure(state, "Слово-Сокровище: Гласность"); incrementFinalCounter(state, "История"); determineArchetypeAndShow(state); }
                },
                // --- НОВЫЕ СЦЕНЫ ИЗ ФАЙЛА ---
                // --- СЦЕНА: Слияние с мелодией в Пустыне ---
                "desert_merge_with_melody": {
                id: "desert_merge_with_melody",
                text: "Музыка становится всё громче и причудливее. Ты чувствуешь, как твои пальцы начинают сливаться с клавишами. Ты больше не играешь, ты становишься частью мелодии. Ты чувствуешь, как твое сознание расплывается, сливаясь с шепотом: '...вдохнул-выдохнул...'",
                choices: [
                { text: "Сливаюсь с мелодией полностью.", nextSceneId: "desert_fully_merged" },
                { text: "Пытаюсь остановить playing, чувствуя, что иду слишком далеко.", nextSceneId: "desert_stop_playing_far" }
                ],
                style: { theme: "desert-theme", font: "font-music" },
                onEnter: function(state) { addMotif(state, "Мотив: Музыка"); }
                },
                "desert_fully_merged": {
                id: "desert_fully_merged",
                text: "Ты сливаешься с мелодией. Твоё сознание расширяется до размеров вселенной. Ты становишься частью потока, частью вечности. Ты больше не 'ты'. Ты - это всё и ничто. Мотив завершен. Или только начинается?",
                choices: [],
                isEnd: true,
                onEnter: function(state) { addMotif(state, "Финал: Слияние"); collectTreasure(state, "Слово-Сокровище: Единство"); incrementFinalCounter(state, "История"); determineArchetypeAndShow(state); },
                style: { theme: "desert-theme", font: "font-music" }
                },
                "desert_stop_playing_far": {
                id: "desert_stop_playing_far",
                text: "Ты пытаешься остановиться, но мелодия уже стала частью тебя. Ты чувствуешь, как твоя кожа начинает светиться, как перо. Ты понимаешь, что теперь ты - часть этой песни.",
                choices: [
                { text: "Продолжаю играть, но теперь контролирую мелодию.", nextSceneId: "desert_control_melody" },
                { text: "Отпускаю клавиши и смотрю, что произойдет.", nextSceneId: "desert_release_keys" }
                ],
                style: { theme: "desert-theme", font: "font-impact" }
                },
                "desert_control_melody": {
                id: "desert_control_melody",
                text: "Ты берешь контроль над мелодией. Она становится твоим голосом, твоим выражением. Ты чувствуешь, как твоя сущность расширяется, но теперь ты управляешь этим расширением.",
                choices: [],
                isEnd: true,
                onEnter: function(state) { addMotif(state, "Финал: Контроль"); collectTreasure(state, "Слово-Сокровище: Мастерство"); incrementFinalCounter(state, "История"); determineArchetypeAndShow(state); },
                style: { theme: "desert-theme", font: "font-music" }
                },
                "desert_release_keys": {
                id: "desert_release_keys",
                text: "Ты отпускаешь клавиши. Музыка замирает. Ты чувствуешь, как возвращаешься к себе. Перо в твоей руке снова холодное. Ты смотришь на него с новым пониманием.",
                choices: [
                { text: "Пишу имя того, кого искал, на песке.", nextSceneId: "desert_write_name_sought" },
                { text: "Продолжаю исследовать Пустыню Историй.", nextSceneId: "desert_approach_ruins" }
                ],
                style: { theme: "desert-theme", font: "font-papyrus" }
                },
                // --- СЦЕНА: Лестница из слов ---
                "climb_word_ladder": {
                id: "climb_word_ladder",
                text: "Лестница из слов 'Мечта', 'Страх', 'Надежда', 'Забвение' ведет тебя вверх. Каждое слово под твоими ногами исчезает, превращаясь в дым. Воздух становится гуще, наполненным запахом старых книг и забытых времен. Что ты делаешь?",
                choices: [
                { text: "Останавливаюсь и смотрю вниз. Океан теперь выглядит как точка.", nextSceneId: "stop_look_down" },
                { text: "Продолжаешь подниматься быстрее, чтобы не провалиться.", nextSceneId: "climb_faster" },
                { text: "Вырываешь одно из слов из лестницы и кладешь его в карман.", nextSceneId: "take_word", item: "Слово: Надежда" }
                ],
                style: { theme: "echo-theme", font: "font-lucida" }
                },
                "stop_look_down": {
                id: "stop_look_down",
                text: "Ты останавливаешься. Океан действительно выглядит как точка. Ты чувствуешь, как далеко ушел от начала пути. Ветер шепчет тебе имя, которое ты почти забыл.",
                choices: [
                { text: "Произношу имя вслух.", nextSceneId: "speak_name_aloud" },
                { text: "Продолжаю подниматься.", nextSceneId: "climb_faster" }
                ],
                style: { theme: "echo-theme", font: "font-lucida" }
                },
                "climb_faster": {
                id: "climb_faster",
                text: "Ты карабкаешься быстрее. Слова под твоими ногами исчезают быстрее. Внезапно ты чувствуешь, как кто-то тянется к тебе снизу. Это твоя Тень.",
                choices: [
                { text: "Пытаюсь убежать от Тени.", nextSceneId: "run_from_shadow" },
                { text: "Поворачиваюсь и смотрю на Тень.", nextSceneId: "face_shadow" }
                ],
                style: { theme: "echo-theme", font: "font-lucida" }
                },
                "take_word": {
                id: "take_word",
                text: "Ты вырываешь слово 'Надежда' из лестницы. Оно в твоей руке теплое, как живое. Лестница колеблется, и несколько слов падают вниз, превращаясь в звезды. Ты продолжаешь подниматься. Город уже совсем близко, и ты видишь, что его улицы заполнены тенями твоих воспоминаний. Что ты делаешь?",
                choices: [
                { text: "Вхожу в ближайшее здание. Внутри - зал, где на стенах висят портреты всех людей, которых ты когда-либо любил.", nextSceneId: "hall_of_lovers" },
                { text: "Следую по главной улице. Она ведет к огромной площади с фонтаном, из которого бьет свет.", nextSceneId: "main_street_fountain" }
                ],
                style: { theme: "echo-theme", font: "font-lucida" }
                },
                "run_from_shadow": {
                id: "run_from_shadow",
                text: "[Финал: Бегство от Тени] Ты бежишь от Тени. Но она всегда рядом. Ты не можешь избавиться от неё. Ты чувствуешь, как ты теряешь часть себя.",
                choices: [],
                isEnd: true,
                onEnter: function(state) { addMotif(state, "Финал: Бегство от Тени"); collectTreasure(state, "Слово-Сокровище: Потеря"); incrementFinalCounter(state, "История"); determineArchetypeAndShow(state); },
                style: { theme: "echo-theme", font: "font-lucida" }
                },
                "face_shadow": {
                id: "face_shadow",
                text: "Ты поворачиваешься. Тень смотрит на тебя с твоими же глазами. Она говорит: 'Ты не можешь уйти от меня. Я - часть тебя.' Ты чувствуешь, как она пытается снова стать частью тебя.",
                choices: [
                { text: "Принимаю Тень обратно.", nextSceneId: "accept_shadow" },
                { text: "Отказываюсь и продолжаю подъем.", nextSceneId: "refuse_continue_climb" }
                ],
                style: { theme: "echo-theme", font: "font-lucida" }
                },
                "accept_shadow": {
                id: "accept_shadow",
                text: "Ты принимаешь Тень. Она сливается с тобой, и ты чувствуешь, как твоя сущность становится полной. Ты понимаешь, что не можешь быть целым без своих темных сторон.",
                choices: [],
                isEnd: true,
                onEnter: function(state) { addMotif(state, "Финал: Принятие"); collectTreasure(state, "Слово-Сокровище: Целостность"); incrementFinalCounter(state, "История"); determineArchetypeAndShow(state); },
                style: { theme: "echo-theme", font: "font-lucida" }
                },
                "refuse_continue_climb": {
                id: "refuse_continue_climb",
                text: "Ты отказываешься. Тень отходит в сторону, но ты чувствуешь, как часть тебя уходит вместе с ней. Ты продолжаешь подъем, чувствуя себя неполным.",
                choices: [
                { text: "Вхожу в ближайшее здание.", nextSceneId: "enter_building_echo" },
                { text: "Следую по главной улице.", nextSceneId: "main_street_echo" }
                ],
                style: { theme: "echo-theme", font: "font-lucida" }
                },
                // --- СЦЕНА: Стая механических птиц ---
                "mechanical_birds": {
                id: "mechanical_birds",
                text: "Стая птиц кружит над тобой, свитки в их клювах трепещут на ветру. Символы на них переливаются и меняются. Одна птица отделяется от стаи и летит прямо к тебе, протягивая свиток. Что ты делаешь?",
                choices: [
                { text: "Берешь свиток. Символы на нем складываются в твое имя, написанное задом наперед.", nextSceneId: "take_scroll_name" },
                { text: "Открываешь свиток. Из него вылетает маленький торнадо, наполненное картинами из твоего прошлого.", nextSceneId: "open_scroll_tornado" },
                { text: "Отказываюсь брать свиток и смотрю, что будет дальше.", nextSceneId: "refuse_scroll_watch" }
                ],
                style: { theme: "echo-theme", font: "font-lucida" }
                },
                "take_scroll_name": {
                id: "take_scroll_name",
                text: "Ты берешь свиток. Символы на нем складываются в твое имя, написанное задом наперед. Имя вспыхивает на небе, как новая звезда. Вдруг город над тобой начинает падать, но вместо того, чтобы разрушаться, он раскрывается, как книга. Страницы летят вниз, и на каждой из них - фраза из письма, которое ты никогда не отправил. Что ты делаешь?",
                choices: [
                { text: "Ловлю одну из страниц. На ней написано: 'Ты был моим сном, а я - твоим кошмаром.'", nextSceneId: "dream_nightmare" },
                { text: "Позволяю страницам пролететь мимо. Они превращаются в бабочек и улетают вдаль.", nextSceneId: "pages_butterflies" }
                ],
                style: { theme: "echo-theme", font: "font-lucida" }
                },
                "open_scroll_tornado": {
                id: "open_scroll_tornado",
                text: "Ты открываешь свиток. Из него вылетает маленький торнадо, наполненное картинами из твоего прошлого. Ты видишь моменты, которые забыл, моменты, которые изменили тебя. Торнадо кружит вокруг тебя, и ты чувствуешь, как прошлое пытается вернуться.",
                choices: [
                { text: "Позволяю торнадо поглотить меня.", nextSceneId: "let_tornado_consume" },
                { text: "Бегу прочь от торнадо.", nextSceneId: "run_from_tornado" }
                ],
                style: { theme: "echo-theme", font: "font-lucida" }
                },
                "refuse_scroll_watch": {
                id: "refuse_scroll_watch",
                text: "Ты отказываешься брать свиток. Птица клюет тебя в руку, и ты чувствуешь резкую боль. Кровь на твоей руке превращается в чернила, и из них вырастает дерево. Его листья - это страницы ненаписанных историй.",
                choices: [
                { text: "Сажусь под деревом и начинаю читать листья.", nextSceneId: "sit_read_leaves_tree" },
                { text: "Рву одно из листьев и кладу его в карман.", nextSceneId: "tear_leaf_pocket", item: "Лист: Возможность" }
                ],
                style: { theme: "echo-theme", font: "font-lucida" }
                },
                "pages_butterflies": {
                id: "pages_butterflies",
                text: "Ты позволяешь страницам пролететь мимо. Они превращаются в бабочек и улетают вдаль. Одна из бабочек садится тебе на плечо. Она шепчет тебе на ухо имя того, кого ты потерял.",
                choices: [
                { text: "Произношу имя вслух.", nextSceneId: "speak_name_lost" },
                { text: "Следую за одной из бабочек. Она ведет тебя к краю океана, где волны замерли.", nextSceneId: "follow_butterfly_edge" }
                ],
                style: { theme: "echo-theme", font: "font-lucida" }
                },
                // --- СЦЕНА: Чтение цветового сдвига ---
                "read_color_shift": {
                id: "read_color_shift",
                text: "Как только ты произносишь слова, мир меняется. Океан становится багрово-красным, небо - глубоким фиолетовым, а песок - золотым. Перо в твоей руке начинает светиться ярче. Ты чувствуешь, как твоя кожа становится прозрачной, и ты видишь свои мысли, текущие внутри, как река. Что ты делаешь?",
                choices: [
                { text: "Сливаюсь с потоком мыслей. Ты перестаешь быть собой и становишься частью всего.", nextSceneId: "merge_thought_flow" },
                { text: "Пытаюсь сохранить свою форму, несмотря на изменения.", nextSceneId: "maintain_form" }
                ],
                style: { theme: "ocean-theme", font: "font-georgia" }
                },
                "merge_thought_flow": {
                id: "merge_thought_flow",
                text: "[Финал: Слияние] Ты сливаешься с океаном. Твоё сознание расширяется до размеров вселенной. Ты становишься частью потока, частью вечности. Ты больше не 'ты'. Ты - это всё и ничто. Мотив завершен. Или только начинается?",
                choices: [
                { text: "Начать сначала", nextSceneId: "start_new_journey" },
                { text: "Исследовать другие миры", nextSceneId: "transition_to_desert" },
                { text: "Уйти в бесконечность", nextSceneId: "final_abyss_1" }
                ],
                isEnd: true,
                onEnter: function(state) { addMotif(state, "Финал: Слияние"); collectTreasure(state, "Слово-Сокровище: Единство"); incrementFinalCounter(state, "История"); determineArchetypeAndShow(state); },
                style: { theme: "ocean-theme", font: "font-georgia" }
                },
                "maintain_form": {
                id: "maintain_form",
                text: "Ты сопротивляешься изменениям. Твоя форма дрожит, но держится. Перо в твоей руке начинает гореть. Ты чувствуешь, как сила этого места пытается поглотить тебя, но ты держишься. Внезапно ты выбрасываешься на поверхность океана.",
                choices: [
                { text: "Осмотреть новое окружение.", nextSceneId: "surface_new_world_ocean" },
                { text: "Проверить перо.", nextSceneId: "check_pen_surface_ocean" }
                ],
                style: { theme: "ocean-theme", font: "font-georgia" }
                },
                // --- СЦЕНА: Начать сначала с подсчетом финалов ---
                "start_new_journey": {
                id: "start_new_journey",
                text: "Ты чувствуешь, как реальность складывается по-новому. Всё начинается сначала, но теперь ты несешь с собой фрагменты пройденного пути. Ты снова стоишь у края зыбучего океана.",
                choices: [
                { text: "Погружаюсь в океан, держа перо.", nextSceneId: "dive_ocean" },
                { text: "Пишу на песке первую букву своего имени.", nextSceneId: "write_sand" },
                { text: "Лечу вверх, к перевернутому городу.", nextSceneId: "fly_city" },
                { text: "Сажусь и начинаю рисовать пейзаж вокруг.", nextSceneId: "draw_landscape" },
                { text: "Закрываю глаза и слушаю шепот волн.", nextSceneId: "listen_waves" }
                ],
                onEnter: function(state) {
                // Сбрасываем прогресс, но сохраняем инвентарь
                const savedInventory = [...state.inventory];
                state.motifs = [];
                state.flags = {};
                state.finalCounters = {
                "ultimate": state.finalCounters.ultimate, // Сохраняем счетчик историй
                "archetype": 0 // Сбрасываем счетчик архетипа
                };
                state.inventory = savedInventory;
                determinedArchetype = null; // Сбрасываем определенный архетип
                updateInventoryDisplay();
                updateMotifsDisplay();
                updateArchetypeDisplay();
                // Применяем тему по умолчанию
                document.body.className = '';
                document.getElementById('game-container').className = '';
                }
                },
                // --- СЦЕНА: Переход в другой мир ---
                "transition_to_desert": {
                id: "transition_to_desert",
                text: "Зов океана становится сильнее. Ты чувствуешь запах соли и чернил. Волны, казалось бы, далеко, но ты ощущаешь их присутствие. Перед тобой открывается путь к берегу.",
                choices: [
                { text: "Иду к берегу океана.", nextSceneId: "start" },
                { text: "Остаюсь здесь и исследую дальше.", nextSceneId: "start" }
                ],
                onEnter: function(state) {
                applyThemeAndFont("ocean-theme", "font-courier");
                }
                },
                "transition_to_city": {
                id: "transition_to_city",
                text: "Ты чувствуешь, как город над тобой зовет тебя. Его окна-глаза светятся мягким светом. Ты понимаешь, что это путь к новому пониманию.",
                choices: [
                { text: "Лечу вверх, к перевернутому городу.", nextSceneId: "fly_city" },
                { text: "Сажусь и начинаю рисовать пейзаж вокруг.", nextSceneId: "draw_landscape" }
                ],
                onEnter: function(state) {
                applyThemeAndFont("ocean-theme", "font-courier");
                }
                },
                // --- УЛЬТИМАТИВНЫЕ ФИНАЛЫ (5 ИСТОРИЙ) ---
                "final_abyss_1": { // Связано с "Слиянием"
                id: "final_abyss_1",
                text: "[Окончательный Финал: Проводник] Ты уходишь в бесконечность. Твое сознание распадается и становится частью космоса. Ты - это звезды, тьма, ветер. Ты - всё и ничего.",
                choices: [
                { text: "Начать сначала", nextSceneId: "start_new_journey" },
                { text: "Исследовать другие миры", nextSceneId: "transition_to_forest" },
                { text: "Уйти в бесконечность", nextSceneId: "final_abyss_1" }
                ],
                isEnd: true,
                onEnter: function(state) { addMotif(state, "Окончательный Финал: Проводник"); determineArchetypeAndShow(state); }
                },
                "final_abyss_2": { // Связано с "Прыжком"
                id: "final_abyss_2",
                text: "[Окончательный Финал: Прыжок] Ты прыгаешь в новую реальность. Мир взрывается цветами и звуками. Ты летишь сквозь реальности, сквозь миры. Это не конец, это начало нового путешествия. Мотив продолжается в бесконечности.",
                choices: [
                { text: "Начать сначала", nextSceneId: "start_new_journey" },
                { text: "Исследовать другие миры", nextSceneId: "transition_to_forest" },
                { text: "Прыгнуть в новую реальность", nextSceneId: "final_abyss_2" }
                ],
                isEnd: true,
                onEnter: function(state) { addMotif(state, "Окончательный Финал: Прыжок"); collectTreasure(state, "Слово-Сокровище: Свобода"); incrementFinalCounter(state, "История"); determineArchetypeAndShow(state); }
                },
                "final_abyss_3": { // Связано с "Молчанием"
                id: "final_abyss_3",
                text: "[Окончательный Финал: Молчание] Ты погружаешься в тишину. Слова теряют смысл, мысли - форму. Ты становишься частью абсолютного покоя. Ты - это тишина между сердцебиениями вселенной.",
                choices: [
                { text: "Начать сначала", nextSceneId: "start_new_journey" },
                { text: "Исследовать другие миры", nextSceneId: "transition_to_echo" },
                { text: "Погрузиться в тишину", nextSceneId: "final_abyss_3" }
                ],
                isEnd: true,
                onEnter: function(state) { addMotif(state, "Окончательный Финал: Молчание"); collectTreasure(state, "Слово-Сокровище: Тишина"); incrementFinalCounter(state, "История"); determineArchetypeAndShow(state); }
                },
                "final_abyss_4": { // Связано с "Поиском"
                id: "final_abyss_4",
                text: "[Окончательный Финал: Создание] Ты создаешь новую реальность. Ты - это начало и конец всех историй. Ты понимаешь, что был автором с самого начала. Ты - это история, которая рассказывает саму себя.",
                choices: [
                { text: "Начать сначала", nextSceneId: "start_new_journey" },
                { text: "Исследовать другие миры", nextSceneId: "transition_to_city" },
                { text: "Создать новую реальность", nextSceneId: "final_abyss_4" }
                ],
                isEnd: true,
                onEnter: function(state) { addMotif(state, "Окончательный Финал: Создание"); collectTreasure(state, "Слово-Сокровище: Создание"); incrementFinalCounter(state, "История"); determineArchetypeAndShow(state); }
                },
                "final_abyss_5": { // Связано с "Эхом"
                id: "final_abyss_5",
                text: "[Окончательный Финал: Память] Ты растворяешься в потоке воспоминаний. Ты становишься частью коллективной памяти всех существ. Ты - это эхо каждого крика, каждая забытая песня, каждая незабвенная история.",
                choices: [
                { text: "Начать сначала", nextSceneId: "start_new_journey" },
                { text: "Исследовать другие миры", nextSceneId: "transition_to_room" },
                { text: "Стать частью памяти", nextSceneId: "final_abyss_5" }
                ],
                isEnd: true,
                onEnter: function(state) { addMotif(state, "Окончательный Финал: Память"); collectTreasure(state, "Слово-Сокровище: Память"); incrementFinalCounter(state, "История"); determineArchetypeAndShow(state); }
                },
                "final_abyss_6": { // Связано с "Бытием"
                id: "final_abyss_6",
                text: "[Окончательный Финал: Бытие] Ты выбираешь быть собой. Ты принимаешь всю боль, всю радость, всю сложность своего существования. Ты - это ты, без масок, без искажений. Ты - это просто быть.",
                choices: [
                { text: "Начать сначала", nextSceneId: "start_new_journey" },
                { text: "Исследовать другие миры", nextSceneId: "transition_to_field" },
                { text: "Быть собой", nextSceneId: "final_abyss_6" }
                ],
                isEnd: true,
                onEnter: function(state) { addMotif(state, "Окончательный Финал: Бытие"); collectTreasure(state, "Слово-Сокровище: Бытие"); incrementFinalCounter(state, "История"); determineArchetypeAndShow(state); }
                },
                "final_abyss_7": { // Связано с "Множественностью"
                id: "final_abyss_7",
                text: "[Окончательный Финал: Множественность] Ты становишься всеми своими 'я'. Ты - ребёнок, юноша, взрослый, старец. Ты - все любви, все потери. Ты больше, чем человек. Ты - это сумма всех возможностей.",
                choices: [
                { text: "Начать сначала", nextSceneId: "start_new_journey" },
                { text: "Исследовать другие миры", nextSceneId: "transition_to_forest" },
                { text: "Объединить все 'я'", nextSceneId: "final_abyss_7" }
                ],
                isEnd: true,
                onEnter: function(state) { addMotif(state, "Окончательный Финал: Множественность"); collectTreasure(state, "Слово-Сокровище: Множественность"); incrementFinalCounter(state, "История"); determineArchetypeAndShow(state); }
                },
                "final_abyss_8": { // Связано с "Единством"
                id: "final_abyss_8",
                text: "[Окончательный Финал: Ясность] Ты кричишь. Голос разрывает пространство. Все 'ты' замолкают. Ты снова один, но теперь ты знаешь, кто ты есть. Ты - это ясность в хаосе, суть в многообразии.",
                choices: [
                { text: "Начать сначала", nextSceneId: "start_new_journey" },
                { text: "Исследовать другие миры", nextSceneId: "transition_to_desert" },
                { text: "Найти своё 'я'", nextSceneId: "final_abyss_8" }
                ],
                isEnd: true,
                onEnter: function(state) { addMotif(state, "Окончательный Финал: Ясность"); collectTreasure(state, "Слово-Сокровище: Ясность"); incrementFinalCounter(state, "История"); determineArchetypeAndShow(state); }
                },
                // --- Недостающие сцены для исправления ошибок ---
                "transition_to_forest": {
                id: "transition_to_forest",
                text: "Ты чувствуешь зов Леса. Воздух наполняется запахом мха и древесной коры. Свет фильтруется сквозь листву, создавая причудливые узоры. Перед тобой открывается тропа, ведущая вглубь.",
                choices: [
                { text: "Иду по тропе вглубь леса.", nextSceneId: "forest_enter" },
                { text: "Остаюсь на опушке и прислушиваюсь к звукам.", nextSceneId: "forest_listen_edge" }
                ],
                onEnter: function(state) {
                applyThemeAndFont("forest-theme", "font-lucida");
                }
                },
                "transition_to_echo": {
                id: "transition_to_echo",
                text: "Эхо твоего крика возвращается, но звучит странно, как будто из другого мира. Воздух начинает вибрировать, и ты чувствуешь, как твоя собственная история начинает отзываться на этот зов.",
                choices: [
                { text: "Следую за эхом.", nextSceneId: "echo_follow" },
                { text: "Сажусь и начинаю петь мелодию.", nextSceneId: "echo_sing" }
                ],
                onEnter: function(state) {
                applyThemeAndFont("echo-theme", "font-lucida");
                }
                },
                "transition_to_room": {
                id: "transition_to_room",
                text: "Ты чувствуешь тягу к Закрытому Пространству. Воздух становится плотнее, свет тусклее. Ты находишь дверь, за которой, как тебе кажется, спрятаны твои самые сокровенные воспоминания.",
                choices: [
                { text: "Открываю дверь и вхожу.", nextSceneId: "room_enter" },
                { text: "Ищу другой вход.", nextSceneId: "room_seek_alternate" }
                ],
                onEnter: function(state) {
                applyThemeAndFont("room-theme", "font-georgia");
                }
                },
                "transition_to_field": {
                id: "transition_to_field",
                text: "Зов Поля становится неотразим. Ты чувствуешь, как твое тело становится легче, а мысли - яснее. Перед тобой расстилается бескрайнее поле, колышущееся на ветру.",
                choices: [
                { text: "Бегу по полю.", nextSceneId: "field_run" },
                { text: "Ложусь на землю и смотрю на небо.", nextSceneId: "field_lie" }
                ],
                onEnter: function(state) {
                applyThemeAndFont("field-theme", "font-comic");
                }
                },
                "surface_new_world_ocean": {
                id: "surface_new_world_ocean",
                text: "Ты выбрасываешься на берег нового, неизведанного континента. Небо здесь фиолетовое, а деревья растут вниз корнями. Вдалеке виднеется башня, похожая на свернувшуюся улитку.",
                choices: [
                { text: "Идти к башне-улитке.", nextSceneId: "go_to_snail_tower" },
                { text: "Исследовать ближайшее дерево.", nextSceneId: "explore_tree" }
                ]
                },
                "check_pen_surface_ocean": {
                id: "check_pen_surface_ocean",
                text: "Перо светится, но свет стал теплее. Оно как будто откликнулось на твой страх и усилие. Ты чувствуешь, что оно стало частью тебя, а не просто инструментом.",
                choices: [
                { text: "Продолжить исследование берега.", nextSceneId: "explore_shore" }
                ],
                onEnter: function(state) { addToInventory(state, "Связанное Перо"); }
                },
                "enter_building_echo": {
                id: "enter_building_echo",
                text: "Ты входишь в здание. Внутри царит полумрак, и воздух наполнен эхом твоих шагов. Стены покрыты зеркалами, и в каждом ты видишь свое отражение в разный момент времени.",
                choices: [
                { text: "Подхожу к ближайшему зеркалу.", nextSceneId: "echo_approach_mirror" },
                { text: "Иду вглубь здания.", nextSceneId: "echo_deeper_building" }
                ]
                },
                "main_street_echo": {
                id: "main_street_echo",
                text: "Ты идешь по главной улице. Дома по обе стороны кажутся знакомыми, но искаженными. На стенах висят портреты, и ты замечаешь, что среди них есть и твой.",
                choices: [
                { text: "Останавливаюсь у своего портрета.", nextSceneId: "echo_stop_at_portrait" },
                { text: "Продолжаю идти.", nextSceneId: "echo_continue_street" }
                ]
                },
                "dream_nightmare": {
                id: "dream_nightmare",
                text: "Ты ловишь страницу. На ней написано: 'Ты был моим сном, а я - твоим кошмаром.' Слова начинают гореть, и ты чувствуешь, как реальность вокруг начинает меняться.",
                choices: [
                { text: "Сжигаю страницу.", nextSceneId: "burn_page" },
                { text: "Читаю дальше.", nextSceneId: "read_page_further" }
                ]
                },
                "let_tornado_consume": {
                id: "let_tornado_consume",
                text: "Ты позволяешь торнадо поглотить тебя. Картинки из прошлого проносятся перед глазами. Ты видишь все свои ошибки, все радости, все потери. Ты чувствуешь, как ты становишься частью этого потока.",
                choices: [],
                isEnd: true,
                onEnter: function(state) { addMotif(state, "Финал: Поглощение"); collectTreasure(state, "Слово-Сокровище: Память"); incrementFinalCounter(state, "История"); determineArchetypeAndShow(state); }
                },
                "run_from_tornado": {
                id: "run_from_tornado",
                text: "Ты бежишь прочь от торнадо. Ветер свистит у тебя в ушах, и ты чувствуешь, как прошлое пытается удержать тебя. Ты спотыкаешься и падаешь, но поднимаешься и продолжаешь бежать.",
                choices: [
                { text: "Спрятаться за деревом.", nextSceneId: "hide_behind_tree" },
                { text: "Бежать к океану.", nextSceneId: "run_to_ocean" }
                ]
                },
                "sit_read_leaves_tree": {
                id: "sit_read_leaves_tree",
                text: "Ты сажусь под деревом и начинаешь читать листья. Каждый лист - это история, которую ты мог бы написать, но не написал. Ты чувствуешь, как потенциал этих историй наполняет тебя.",
                choices: [
                { text: "Выбираю один лист и начинаю читать.", nextSceneId: "choose_leaf_read" },
                { text: "Закрываю глаза и представляю, как пишу одну из историй.", nextSceneId: "imagine_writing_story" }
                ]
                },
                "tear_leaf_pocket": {
                id: "tear_leaf_pocket",
                text: "Ты рвешь один из листьев и кладешь его в карман. Лист теплое на ощупь, как живое существо. Ты чувствуешь, как оно начинает вибрировать, передавая тебе ощущение возможности.",
                choices: [
                { text: "Продолжаю исследовать Пустыню Историй.", nextSceneId: "desert_approach_ruins" },
                { text: "Открываю лист и читаю, что на нем написано.", nextSceneId: "read_torn_leaf" }
                ],
                onEnter: function(state) { addToInventory(state, "Лист: Возможность"); }
                },
                "speak_name_lost": {
                id: "speak_name_lost",
                text: "Ты произносишь имя вслух. Воздух вокруг начинает вибрировать, и ты чувствуешь, как кто-то или что-то откликается на твой зов.",
                choices: [
                { text: "Жду ответа.", nextSceneId: "wait_for_response" },
                { text: "Бегу прочь от голоса.", nextSceneId: "run_from_voice" }
                ]
                },
                "follow_butterfly_edge": {
                id: "follow_butterfly_edge",
                text: "Ты следуешь за бабочкой к краю океана. Волны замерли, как стекло. Бабочка садится на твою руку и начинает светиться. Ты чувствуешь, как твоя кожа становится прозрачной.",
                choices: [
                { text: "Смотрю на свое прозрачное тело.", nextSceneId: "look_transparent_body" },
                { text: "Отпускаю бабочку и ухожу.", nextSceneId: "release_butterfly_leave" }
                ]
                }
            }
        };

        // --- СИСТЕМА СОСТОЯНИЯ ИГРЫ ---
        let currentState = {
            currentSceneId: "start",
            inventory: [],
            motifs: [],
            flags: {},
            finalCounters: {
                "ultimate": 0, // Счетчик для историй Пустыни Историй
                "archetype": 0 // Счетчик для определения архетипа
            }
        };

        // --- СИСТЕМА ИНВЕНТАРЯ ---
        function addToInventory(state, item) {
            if (!state.inventory.includes(item)) {
                state.inventory.push(item);
                updateInventoryDisplay();
                showNotification(`Получен предмет: ${item}`);
            }
        }

        function updateInventoryDisplay() {
            const inventoryList = document.getElementById('inventory-list');
            inventoryList.innerHTML = '';
            currentState.inventory.forEach(item => {
                const li = document.createElement('li');
                li.textContent = item;
                inventoryList.appendChild(li);
            });
        }

        // --- СИСТЕМА МОТИВОВ ---
        function addMotif(state, motif) {
            if (!state.motifs.includes(motif)) {
                state.motifs.push(motif);
                updateMotifsDisplay();
            }
             // Увеличиваем счетчик для определения архетипа
            state.finalCounters.archetype++;
            console.log(`Мотив добавлен: ${motif}. Счетчик архетипа: ${state.finalCounters.archetype}`);
        }

        function updateMotifsDisplay() {
            const motifsList = document.getElementById('motifs-list');
            motifsList.innerHTML = '';
            currentState.motifs.forEach(motif => {
                const li = document.createElement('li');
                li.textContent = motif;
                motifsList.appendChild(li);
            });
        }

        // --- СИСТЕМА СЛОВ-СОКРОВИЩ (для Пустыни Историй) ---
        function collectTreasure(state, treasure) {
            addToInventory(state, treasure);
            state.finalCounters.ultimate++;
            console.log(`Собрано Слово-Сокровище: ${treasure}. Счетчик историй: ${state.finalCounters.ultimate}`);
        }

        // --- СИСТЕМА СЧЕТЧИКОВ ФИНАЛОВ ---
        function incrementFinalCounter(state, counterName) {
            // В данном случае счетчик уже увеличивается в collectTreasure для "История"
            // Эта функция может быть расширена для других счетчиков
            console.log(`Счетчик '${counterName}' увеличен.`);
        }

        // --- СИСТЕМА ФЛАГОВ ---
        function setFlag(state, flagName, value = true) {
            state.flags[flagName] = value;
        }

        function checkFlag(state, flagName) {
            return state.flags[flagName] === true;
        }

        // --- СИСТЕМА УСЛОВИЙ ---
        function checkCondition(condition, state) {
            if (!condition) return true; // Если условия нет, выбор доступен
            // Пример условия: "flag:can_finish_game"
            if (condition.startsWith("flag:")) {
                const flagName = condition.split(":")[1];
                return checkFlag(state, flagName);
            }
            // Можно добавить другие типы условий
            return false;
        }

        // --- СИСТЕМА УВЕДОМЛЕНИЙ ---
        function showNotification(message) {
            const notification = document.getElementById('notification');
            notification.textContent = message;
            notification.style.opacity = '1';
            setTimeout(() => {
                notification.style.opacity = '0';
            }, 3000);
        }

        // --- СИСТЕМА СОХРАНЕНИЯ/ЗАГРУЗКИ ---
        function saveGame() {
            localStorage.setItem('surrealismGameData', JSON.stringify(currentState));
            showNotification('Игра сохранена!');
        }

        function loadGame() {
            const savedState = localStorage.getItem('surrealismGameData');
            if (savedState) {
                currentState = JSON.parse(savedState);
                // Восстанавливаем отображение
                updateInventoryDisplay();
                updateMotifsDisplay();
                updateArchetypeDisplay();
                loadScene(currentState.currentSceneId);
                showNotification('Игра загружена!');
            } else {
                showNotification('Нет сохраненных данных.');
            }
        }

        function resetGame() {
            if (confirm("Вы уверены, что хотите начать сначала?")) {
                // Сохраняем пройденные выборы (мотивы) в инвентарь
                currentState.motifs.forEach(motif => {
                addToInventory(currentState, `Пройденный путь: ${motif}`);
                });
                // Сброс состояния
                currentState = {
                currentSceneId: "start",
                inventory: [...currentState.inventory], // Сохраняем инвентарь
                motifs: [],
                flags: {},
                finalCounters: {
                "ultimate": 0,
                "archetype": 0
                }
                };
                updateInventoryDisplay();
                updateMotifsDisplay();
                updateArchetypeDisplay();
                loadScene("start");
                showNotification('Игра начата заново. Пройденные пути добавлены в инвентарь.');
            }
        }

        // --- СИСТЕМА АРХЕТИПОВ ТАРО ---
        const archetypeTemplates = {
            "Маг": ["Слово-Сокровище: Воля", "Слово-Сокровище: Манифестация", "Слово-Сокровище: Начало"],
            "Верховная Жрица": ["Слово-Сокровище: Интуиция", "Слово-Сокровище: Тайна", "Слово-Сокровище: Луна"],
            "Императрица": ["Слово-Сокровище: Плодородие", "Слово-Сокровище: Изобилие", "Слово-Сокровище: Природа"],
            "Император": ["Слово-Сокровище: Структура", "Слово-Сокровище: Власть", "Слово-Сокровище: Стабильность"],
            "Иерофант": ["Слово-Сокровище: Традиция", "Слово-Сокровище: Мудрость", "Слово-Сокровище: Учение"],
            "Влюбленные": ["Слово-Сокровище: Любовь", "Слово-Сокровище: Гармония", "Слово-Сокровище: Выбор"],
            "Колесница": ["Слово-Сокровище: Победа", "Слово-Сокровище: Воля", "Слово-Сокровище: Контроль"],
            "Сила": ["Слово-Сокровище: Мужество", "Слово-Сокровище: Сдержанность", "Слово-Сокровище: Внутренняя Сила"],
            "Отшельник": ["Слово-Сокровище: Поиск", "Слово-Сокровище: Мудрость", "Слово-Сокровище: Уединение"],
            "Колесо Фортуны": ["Слово-Сокровище: Судьба", "Слово-Сокровище: Цикл", "Слово-Сокровище: Перемена"],
            "Справедливость": ["Слово-Сокровище: Баланс", "Слово-Сокровище: Истина", "Слово-Сокровище: Закон"],
            "Повешенный": ["Слово-Сокровище: Жертва", "Слово-Сокровище: Переоценка", "Слово-Сокровище: Ожидание"],
            "Смерть": ["Слово-Сокровище: Преображение", "Слово-Сокровище: Конец", "Слово-Сокровище: Новое Начало"],
            "Умеренность": ["Слово-Сокровище: Баланс", "Слово-Сокровище: Синтез", "Слово-Сокровище: Поток"],
            "Дьявол": ["Слово-Сокровище: Искушение", "Слово-Сокровище: Оковы", "Слово-Сокровище: Тень"],
            "Башня": ["Слово-Сокровище: Разрушение", "Слово-Сокровище: Освобождение", "Слово-Сокровище: Катастрофа"],
            "Звезда": ["Слово-Сокровище: Надежда", "Слово-Сокровище: Вдохновение", "Слово-Сокровище: Исцеление"],
            "Луна": ["Слово-Сокровище: Иллюзия", "Слово-Сокровище: Подсознание", "Слово-Сокровище: Страх"],
            "Солнце": ["Слово-Сокровище: Радость", "Слово-Сокровище: Энергия", "Слово-Сокровище: Успех"],
            "Суд": ["Слово-Сокровище: Возрождение", "Слово-Сокровище: Призыв", "Слово-Сокровище: Очищение"],
            "Мир": ["Слово-Сокровище: Завершение", "Слово-Сокровище: Целостность", "Слово-Сокровище: Путешествие"],
            "Шут": ["Слово-Сокровище: Потенциал", "Слово-Сокровище: Невинность", "Слово-Сокровище: Начало Пути"]
        };

        let determinedArchetype = null;

        function determineArchetypeAndShow(state) {
            // Определяем архетип только один раз, при первом финале
            if (determinedArchetype) return;

            const motifCount = state.finalCounters.archetype;
            console.log(`Определение архетипа. Количество мотивов: ${motifCount}`);

            // Упрощенная логика определения на основе количества собранных мотивов
            // В реальной игре это могло бы быть сложнее, на основе самих мотивов
            if (motifCount <= 3) determinedArchetype = "Шут";
            else if (motifCount <= 6) determinedArchetype = "Маг";
            else if (motifCount <= 9) determinedArchetype = "Верховная Жрица";
            else if (motifCount <= 12) determinedArchetype = "Императрица";
            else if (motifCount <= 15) determinedArchetype = "Император";
            else if (motifCount <= 18) determinedArchetype = "Иерофант";
            else if (motifCount <= 21) determinedArchetype = "Влюбленные";
            else if (motifCount <= 24) determinedArchetype = "Колесница";
            else if (motifCount <= 27) determinedArchetype = "Сила";
            else if (motifCount <= 30) determinedArchetype = "Отшельник";
            else if (motifCount <= 33) determinedArchetype = "Колесо Фортуны";
            else if (motifCount <= 36) determinedArchetype = "Справедливость";
            else if (motifCount <= 39) determinedArchetype = "Повешенный";
            else if (motifCount <= 42) determinedArchetype = "Смерть";
            else if (motifCount <= 45) determinedArchetype = "Умеренность";
            else if (motifCount <= 48) determinedArchetype = "Дьявол";
            else if (motifCount <= 51) determinedArchetype = "Башня";
            else if (motifCount <= 54) determinedArchetype = "Звезда";
            else if (motifCount <= 57) determinedArchetype = "Луна";
            else if (motifCount <= 60) determinedArchetype = "Солнце";
            else determinedArchetype = "Мир"; // или "Суд" как кульминацию

            console.log(`Определен архетип: ${determinedArchetype}`);

            // Добавляем Слова-Сокровища в инвентарь
            const words = archetypeTemplates[determinedArchetype] || [];
            words.forEach(word => addToInventory(state, word));

            updateArchetypeDisplay();
            showNotification(`Твой Архетип: ${determinedArchetype}`);
        }

        function updateArchetypeDisplay() {
            const archetypeText = document.getElementById('archetype-text');
            if (determinedArchetype) {
                archetypeText.textContent = determinedArchetype;
            } else {
                archetypeText.textContent = "Не определен";
            }
        }

        // --- ВСПОМОГАТЕЛЬНЫЕ ФУНКЦИИ ---
        function applyThemeAndFont(themeClass, fontClass) {
            const body = document.body;
            const container = document.getElementById('game-container');
            body.className = themeClass || '';
            container.className = fontClass || '';
        }

        // --- ОСНОВНАЯ ЛОГИКА ИГРЫ ---
        function loadScene(sceneId) {
            const scene = gameData.scenes[sceneId];
            if (!scene) {
                console.error(`Ошибка: Сцена с ID '${sceneId}' не найдена.`);
                document.getElementById('scene-text').innerHTML = `<p class="end-scene">Ошибка: Сцена не найдена. Это ошибка в коде игры.</p>`;
                document.getElementById('choices').innerHTML = '<button class="choice-button" onclick="loadScene(\'start\')">Начать с начала</button>';
                return;
            }

            currentState.currentSceneId = sceneId;

            // Применяем тему и шрифт, если они заданы
            const gameContainer = document.getElementById('game-container');
            const body = document.body;
            // Сбрасываем темы
            body.className = '';
            gameContainer.className = '';
            // Применяем новую тему и шрифт
            if (scene.style) {
                if (scene.style.theme) body.classList.add(scene.style.theme);
                if (scene.style.font) gameContainer.classList.add(scene.style.font);
            }

            // Выполняем onEnter, если он есть
            if (scene.onEnter && typeof scene.onEnter === 'function') {
                scene.onEnter(currentState);
            }

            // Обновляем текст сцены
            const sceneTextElement = document.getElementById('scene-text');
            sceneTextElement.innerHTML = scene.isEnd ? `<p class="end-scene">${scene.text}</p>` : `<p>${scene.text}</p>`;
            sceneTextElement.style.opacity = 0;
            // Анимация появления текста
            setTimeout(() => {
                sceneTextElement.style.opacity = 1;
            }, 10);

            // Обновляем выборы
            const choicesElement = document.getElementById('choices');
            choicesElement.innerHTML = '';

            if (scene.isEnd) {
                // Для конечных сцен не показываем выборы, только кнопку перезапуска
                // Но в некоторых финалах мы можем предлагать вернуться в начало
                if (scene.choices && scene.choices.length > 0) {
                // Это специальные финалы с выборами
                renderChoices(scene.choices);
                } else {
                // Другие финалы - просто конец
                const restartButton = document.createElement('button');
                restartButton.className = 'choice-button';
                restartButton.textContent = 'Начать сначала';
                restartButton.onclick = () => resetGame(); // Используем resetGame
                choicesElement.appendChild(restartButton);
                }
            } else {
                renderChoices(scene.choices);
            }

            updateProgressBar();
        }

        function renderChoices(choices) {
            const choicesElement = document.getElementById('choices');
            let delay = 200; // Задержка для анимации
            choices.forEach((choice, index) => {
                // Проверяем условия
                if (checkCondition(choice.condition, currentState)) {
                const button = document.createElement('button');
                button.className = 'choice-button';
                button.textContent = choice.text;
                button.style.animationDelay = `${delay}ms`;
                button.onclick = () => {
                // Добавляем предмет, если он есть
                if (choice.item) {
                addToInventory(currentState, choice.item);
                }
                loadScene(choice.nextSceneId);
                };
                choicesElement.appendChild(button);
                delay += 100;
                }
            });
        }


        function updateProgressBar() {
            // Простая логика: увеличиваем прогресс с каждым переходом
            // Можно сделать более сложную, основанную на глубине в графе
            const progressPercent = Math.min(100, (currentState.motifs.length + currentState.inventory.length) * 2); // Пример
            document.getElementById('progress-bar').style.width = `${progressPercent}%`;
        }

        function initGame() {
            updateInventoryDisplay();
            updateMotifsDisplay();
            updateArchetypeDisplay();
            loadScene("start");
        }

        // Запуск игры при загрузке страницы
        window.onload = initGame;
    </script>
</body>
</html>


Рецензии