← К списку демонстраций
Вход в сон
Ручной: кнопка «Сон» → SleepMode_toggle / enter(false). Авто: при ConsciousnessFinCyclesTotal > 100 вызывается SleepMode_tryAutoAfterFinCycles → SleepMode_enterAuto → enter(true) (подсказка на кнопке отмечает авто-вход). После входа — обновление виталов, контекстов, стимулов и SleepDreams_onSleepEntered.
Ограничение стимулов
SleepMode_refreshStimulusButtonVisuals на каждом пульсе и при входе/выходе: неразрешённые кнопки полупрозрачны и без клика. Разрешены только пары из белого списка (в коде — мотивация «Наказание»; негатив: Вопль, Сирена, Рычание, Огонь). Клик по разрешённому стимулу может вызвать выход из сна.
Макет кнопок:
Пустые кадры ЭП
EpisodicMemory_isEmptyFrameForSleep: есть стимул и ОД, нет ответного стимула (responseStimulusImageId) и нет числового effect. Индексы таких кадров собираются EpisodicMemory_collectEmptyFrameIndicesNewestFirst — очередь для сновидений (новые → старые).
Пульс и порядок шагов
В puls.js машина снов SleepDreams_onPulse вызывается до dispetchConsciousnessThinking, чтобы в том же пульсе после onPulse отработал соновой пассивный главный цикл и шаги info_fantasizming.
Пассивный главный цикл и info_fantasizming
sleep_dream_process: для кадра из очереди старый главный уходит в стек прерываний, создаётся новый цикл с thinkingMode: 'passive', контекст sleepDream. У пассивного цикла уровни 3–4 не выполняются — только info_fantasizming (ассоциативная цепочка по ЭП, fantasizmArr, fantazmingPlot; главный дописывает сюжет в инфокартину). После лимита пульсов на кадр — реконструкция кадра в Episodes; после лимита кадров за сессию — SleepMode_exit(true) и снятие фоновых циклов ФО.

Подробности порогов: MAX_DREAM_FRAMES, MAX_PULSES_PER_FANTASY в sleep_dream_process.js. Пока идёт фантазия сна, флаг SleepDreams_paleActivityBeast бледно подсвечивает блок «Активность Beast».