ПК НА СТОЛЕ:
- Раньше: OldPC (монитор) был скрыт через _hide_noise_items
вместе с OldP4 (старый системник) → игрок видел только пустой
стол с подарком на полу.
- Теперь:
* OldPC (монитор) — ВИДИМ на столе слева (был ошибочно в hide-list)
* OldP4 (старый системник Pentium 4) — ВИДИМ в углу (был в hide)
* SystemUnit (новый системник из подарка) — появляется НА СТОЛЕ
рядом с монитором, не на полу.
ПОЗИЦИИ — ПРОСЧИТАНО:
- Desk world: x=[-0.75..0.75], y=[0..0.7], z=[-1.8..-1.2]
- OldPC (монитор) world: x=[-0.625..-0.375], y=[0.7..1.1], z=[-1.75..-1.45]
- SystemUnit новая позиция: x=[-0.375..-0.025], y=[0.7..1.2], z=[-1.725..-1.275]
→ ВПЛОТНУЮ к монитору на столе. X-диапазоны касаются на -0.375
но не пересекаются.
- FlashDrive world: x=[0.37..0.43], z=[-1.4..-1.35]
→ ИЗОЛИРОВАН от SystemUnit (раньше был внутри её footprint —
системник бы накрыл флешку).
АНИМАЦИЯ ПОДАРКА:
- Раньше: gift_box просто пропадал (gift_box.visible=false).
- Теперь: tween scale → Vector3.ZERO за 0.3 сек → выглядит как
«коробка съёжилась и пропала», игрок видит процесс.
ДИАЛОГИ С КАНОН-ЛОГИКОЙ:
- Раньше после открытия: «Системник. И записка сверху.»
- Теперь:
1. «Ого. Реально новый системник.» — реакция
2. «Поставлю на стол — монитор-то старый остаётся, подключим.» — логика
3. «А это записка на нём…» — направление взгляда
→ объясняет почему системник на столе, а не на полу.
ЛИЦЕНЗИЯ — 30 ПУНКТОВ:
- Было: 1.1-6.8 (нормальные) + 7 ШИЗО = 14 пунктов.
- Стало: 30 пунктов от 1.1 до 28.0 с реальными юридическими
формулировками между ШИЗО — про неисключительные права,
дизассемблирование, гарантии «AS IS», подсудность, изменение
условий в одностороннем порядке, использование вычислительных
мощностей пользователя, ну и в конце «Спасибо за внимание.»
- Реально читается как Microsoft EULA.
TASK #35 СОЗДАН: полная 2-комн квартира (прихожая + кухня + зал +
детская + ванная + туалет) — это большой архитектурный реворк,
сделаю отдельным коммитом.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
1. ОТЕЦ (поворот по фидбеку):
- Initial Transform3D повёрнут на 180° от предыдущего — теперь
лицом к игроку во время диалога.
- При уходе ещё +180° поворот → спиной к игроку → шагает к двери
не пятясь.
2. AUTO-FLOW КЛИКА ПО ПОДАРКУ:
- Раньше: клик подарок → молча появляется системник → клик
записку → overlay → клик дальше → монолог → ... Игрок терялся
между кликами, думал что баг (тёмный экран).
- Теперь: ОДИН клик подарка запускает ЦЕПОЧКУ:
«Системник. И записка сверху.» → overlay записки → «Бать ну
ты красавчик» → отец прощается → отец уходит → флешка готова.
Игрок просто кликает «дальше» на каждой реплике.
- note.set_interactable(false) — клик отдельно не нужен.
- _on_note_interacted остался как пустой callback для совместимости.
3. КУХНЯ — СПАВН:
- Был (0.5, 0, 1.0) — попадал внутрь стола (z=0.35..1.05).
Игрок застревал.
- Теперь (-0.5, 0, 1.2) — у двери возврата в комнату, далеко от
стола. Спавнится свободно.
4. КУХНЯ — 2-Я ДВЕРЬ:
- User спросил «куда отец ушёл — нет других дверей». Добавил
визуальную не-интерактивную дверь на северной стене
(Label3D «← прихожая»). Логически отец вышел через коридор.
5. ЛИЦЕНЗИЯ — НАЧАЛО:
- User: «начинается с п.7, а где 1-6». Добавил 7 нормально-
юридических пунктов 1.1-6.8 (про лицензию, неисключительные
права, дизассемблирование, «как есть», ответственность,
обязательства Пользователя) — ПЕРЕД ШИЗО-пунктами.
- Теперь читается как настоящее ЛС: нормальное-нормальное-
нормальное-ШИЗО-ШИЗО-ШИЗО, нарастающий абсурд.
6. HUD-ПОДСКАЗКА АВТО-ФЕЙД:
- Timer в DialogManager (one_shot, 8 сек по умолчанию).
- set_controls_hint() запускает таймер.
- По истечении — tween modulate.a 0.8 → 0.0 за 1.5 сек.
- Подсказка управления больше не висит вечно.
7. ГЛАВНОЕ МЕНЮ — НАЗВАНИЕ:
- Было: «FARMING SIMULATOR / Подросток-фермер CS/TF2/PUBG
кейсов · 2020-2026» (рабочее, пресно).
- Стало: «ДРОП» (32px, жёлтый акцент) / «Лето двадцатого года.»
(12px, серый). Лаконично, поэтично.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Проблема: Body RichTextLabel был с custom_minimum_size (540, 220)
ВСЕГДА. На шагах с коротким текстом (диск/имя/пароль/часовой пояс)
лейбл занимал 220px пустого пространства между заголовком и
полями ввода, выдавливая чекбокс/кнопки за пределы экрана.
Решение:
- В .tscn Body custom_minimum_size = (540, 0), fit_content=true
(адаптируется под контент).
- Window custom_minimum_size = (580, 220) — раньше 348, теперь
окно само растёт под content.
- В скрипте 2 хелпера:
* _set_body_compact() — fit_content=true, min_size (540, 0).
Используется для всех коротких шагов.
* _set_body_scrollable(h) — fit_content=false, min_size (540, h),
scroll_to_line(0). Используется только для LICENSE_FULL.
- Все шаги (_to_disk, _to_username, _to_password, _to_timezone,
_to_installing) вызывают _set_body_compact() в начале.
- LICENSE_FULL вызывает _set_body_scrollable(220) для скроллябельной
лицензии + в title подсказка «прокрути колесом мыши».
Теперь окно установки правильно ужимается под короткий контент и
все поля видны на экране.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
БАГ-ФИКСЫ:
- Трясёт у двери: Interactable теперь extends Area3D (не StaticBody3D).
RayCast3D детектит Area3D через collide_with_areas=true.
Игрок физически проходит через интерактивы (gift box, флешка,
записка, дверь) — не толкается в узких местах. Бампается только
в стены/мебель/пол.
- Все 6 интерактивов в act1_room.tscn и act1_kitchen.tscn
переведены на type="Area3D".
UI:
- Crosshair в центре экрана: 8×8 точка с тёмной рамкой и белой
центральной 2×2 точкой. set_crosshair_visible() для 2D-сцен
(Акт 2 прячет его).
- SubtitlePanel расширен: 16-624 × 240-354 (было 24-616 × 270-350).
Text-лейбл заменён на RichTextLabel с fit_content + bbcode.
Длинные реплики отца теперь нормально влезают.
- NoteOverlay аналогично RichTextLabel.
- ControlsHint перенесён сверху (под HUD-датой), 14px меньше.
ТЕКСТУРЫ через FastNoiseLite + 128×128 разрешалка:
- wallpaper: шумная бежевая база + растительный крест-цветок
каждые 22px, шахматное смещение, тонкая горизонтальная полоса
каждые 32px (стык обоев).
- linoleum: настоящая паркетная доска 16×64px со смещением между
рядами, тонкие швы, волокно через шум.
- ceiling: побелка с пятном протёчки в углу (canon-деталь).
- wall_carpet: бордовая база + двойная золотая рамка + ромб-
медальон с золотыми углами + декоративные уголки.
- blanket: 30 звёздочек (белые/жёлтые) разного размера на шумной
тёмно-синей базе.
- poster_csgo: диагональная штриховка + силуэт AWP по центру +
пиксельный «CS:GO» текст внизу.
- poster_morgen: круг с лицом, глаза-щели, рот + пиксельный «MS».
- door: вертикальное волокно Perlin + 3 горизонтальных шва (панели)
+ 4 сучка разного размера.
- desk_white: чистый белый + жёлтый Steam-стикер в углу + царапина.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>