За неделю было сделано: Коротко: заложена и доведена до E2E целая связка RPG-систем — NPC с диалогами, квесты (50+ тикетов, 19 этапов), персонажное окно с вкладками, система требований «ключ-замок» и физический ключ для корабля. Всё работает сервер-авторитативно, с тостами, хранением состояния на диске и редакторскими тулзами.

Теперь по порядку, что появилось:

1. NPC + Диалоги Раньше NPC просто стояли. Теперь:

Подходишь, жмёшь E — открывается диалоговое окно с typewriter-эффектом, можно пропустить F. Диалоги ветвятся — не просто текст, а сюжетные выборы с последствиями. У каждого NPC есть своё отношение к игроку (NpcAttitude), отдельно от фракций. Mira может тебя любить, а другой NPC той же гильдии — ненавидеть. Фракции тоже работают: 12 значений FactionId по лору, репутация меняется через диалоговые действия (+25 GuildOfThoughts). 2. Квесты (полноценная система, не прототип) Раньше квестов не было вообще. Теперь:

Принять — через диалог с NPC (E, выбираешь «Помогу»), квест появляется в трекере. Отслеживание — HUD-оверлей QuestTracker показывает текущую цель и счётчик (например, «Собрать 0/3 меди»). Тосты — при принятии: «📜 Квест принят», при шаге: «💚 +5 репутации», «💰 +200 кредитов», при находке: «✨ Найден квест». Многоэтапность — квест может быть: поговорить → взять предмет → отнести → получить награду. Сервер тикает каждые 5 секунд и продвигает этапы. Триггер-зоны — заходишь в зону на карте — квест находится автоматически. Связь с инвентарём — квест может забрать у тебя предмет (TryRemove) или проверить его наличие. Сохранение — всё (квесты, репутация, отношения) переживает рестарт сервера. JSON-файлы в persistentDataPath, атомарная запись без потерь. Статус: 19 milestones, 50+ тикетов, 5 тестовых квестов, полный E2E-цикл (Mira: pickup ключа → диалог → принятие → поиск кристалла → сдача → награда). Пройдено и верифицировано 2026-06-08.

3. Окно персонажа (CharacterWindow) Раньше было только колёсико инвентаря (TAB). Теперь:

Жмёшь P — открывается окно с вкладками: Персонаж, Корабль, Репутация, Контракты, Инвентарь, Квесты. Инвентарь в этом окне — полноценный список (не колёсико), single source of truth с InventoryClientState. Окно — не IMGUI, а UI Toolkit (UIDocument), фикс багов с MarketWindow, визуальный фикс 2026-06-05. 4. Система «Ключ-замок» (MetaRequirement) Универсальная штука: чтобы что-то сделать, у игрока должен быть определённый набор предметов.

Логика: ALL (нужны все), ANY (хотя бы один), AT_LEAST_N (минимум N штук). Расширения инвентаря: HasAllItems, HasAnyItem, CountOf, GetMissingItems — можно спросить «у игрока есть всё для этого действия?» Сейчас используется для посадки в корабль: нужен ключ. Дальше можно вешать на доступ к зонам, диалогам, контрактам и т.д. 5. Ключи для кораблей (Ship Key) Три физических предмета: Item_Key_ShipLight/Medium/Heavy. Жмёшь F у корабля — сервер проверяет, есть ли у тебя подходящий ключ. Если нет — отказ (с тостом). Всё server-authoritative, на клиенте нельзя подделать. 6. Редакторские инструменты (для разработчика) Quest Database Explorer (Tools > ProjectC > Quests) — смотреть все квесты, их этапы, награды. Quest Node Graph — визуальный редактор/просмотрщик связей между этапами и квестами. Есть readonly и editable версия. CSV Import/Export — весь каталог квестов выгружается в плоский CSV (18 колонок), правишь в Excel → импорт обратно. Round-trip совместим. 7. Организация документации Документация разложена по папкам в docs/:

docs/gdd/ — дизайн-документы всех систем (обновлены под текущую реализацию) docs/NPC_quests/ — roadmap, архитектура, план развития квестов docs/Character-menu/ — CharacterWindow, sub_inventory-tab docs/MetaRequirement/ — система ключ-замок docs/Ships/Key-subsystem/ — ключи для кораблей Для возврата к истории разработки — старые сессионные логи в docs/NPC_quests/old_session_log/, но для текущей работы они не нужны.

Итог: раньше NPC стояли статуями, квестов не было, инвентарь был только колёсиком, а в корабль садился без вопросов. Сейчас есть полноценная RPG-обвязка: NPC → диалог → квест → сбор