# Quest chat UI (@quests/@quest) — что изменено и что проверять Поверх движка quest-лога SP2. Дизайн — `doc/quest_chat_ui_design.md`, план — `doc/quest_chat_ui_plan.md`. Обход отсутствия окна журнала квестов в клиенте 2007 (PACKETVER 7). ## Что добавлено - **`@quests`** — список квестов в чат: сначала **выполненные**, потом **активные** (активные внизу/видны без прокрутки). Строка: `[N] "<имя>" - статус[, время][ | цели]`. - **`@quest `** — подробности N-го квеста из списка (id, имя, статус, оставшееся время, цели построчно). - **`@quest cancel`** — отмена **любого** квеста (включая выполненный), без доп. подтверждения. - Движок SP2 дополнен: имя квеста парсится из `db/quest_db.txt` (9-е поле в кавычках). - Доступ — игрокам (`conf/atcommand_athena.conf`: `quests: 0`, `quest: 0`). - Метки вывода — **ASCII English** (клиент 2007 докодовый; имена квестов/мобов и так английские). Русскую локализацию при желании — через `msg_txt`/`msg_athena.conf` (отдельно, в кодировке клиента). ## Важно - `N` — короткий порядковый номер из `@quests` (позиция в выводе), стабилен в пределах одного вызова; после `cancel`/выполнения перечитать `@quests`. - Команды трогают только **свои** квесты вызывающего игрока. - Движок и существующие команды/NPC не изменены (только добавления; проверено diff'ом). ## Что проверять (кластер: char+map+клиент) 1. `@quests` показывает квесты с именами/статусом/временем/целями; выполненные сверху, активные снизу. 2. `@quest ` — корректные детали N-го; неверный N → подсказка «Type @quests». 3. `@quest cancel` — квест исчезает из `@quests`; перезаход — изменение сохранилось (через SP2-save). 4. Hunt-квест: цели показывают текущ./нужно; растут при убийстве мобов (хук SP2). 5. Действующие atcommand'ы и NPC не сломаны (выборочно). ## Воспроизведение/проверки Сборка чистая; boot-smoke — `Done reading '1703' entries in 'quest_db.txt'`, без утечек; API-инвариант (0 изменённых существующих команд). Живой прогон `@quests`/`@quest` — фаза тестировщиков (нужен клиент). ## Будущее (одобренная дорожная карта) Нотификация прогресса цели в чат при убийстве моба; `@status`/кулдауны; `@whereis`/`@market`; достижения/титулы; и отдельный SP — система наёмников (Mercenary Soldier) + её chat-команды.