Обложка Нулевая точка

Нулевая точка

Павел Северин

0% прочитано
Стандартный
Павел Северин

Нулевая точка

Глава 1. Обновление установлено

Телефон завибрировал в тот самый момент, когда Антон собирался соврать начальнику.

— Задача почти готова, — сказал он, глядя в монитор и стараясь не переводить взгляд на второй экран. — Осталось проверить несколько пограничных случаев.

На втором экране красным горели двенадцать упавших тестов.

Игорь Сергеевич, руководитель отдела разработки, устало потёр переносицу. В маленьком окне видеозвонка его лицо выглядело серым и плоским, как будто и камере надоело участвовать в этом разговоре.

— Ты вчера говорил то же самое.

— Вчера оставалось проверить основные случаи.

— А сегодня пограничные?

— Именно.

Ответ прозвучал достаточно уверенно. Антон даже почти поверил в него сам.

Телефон снова завибрировал.

Он лежал рядом с кружкой холодного кофе, упаковкой обезболивающего и смятым чеком из супермаркета. Антон перевернул его экраном вверх, ожидая увидеть рекламу доставки или сообщение из рабочего чата.

На экране была одна строка:

ОБНОВЛЕНИЕ ЗАВЕРШЕНО

Ни названия приложения, ни значка, ни кнопки закрытия.

— Ты меня вообще слушаешь? — спросил Игорь Сергеевич.

— Да.

— Что я сказал?

Антон поднял глаза.

— Что задача должна быть готова сегодня.

Начальник несколько секунд молчал.

— Я сказал, что заказчик подключается через двадцать минут.

— Значит, я уловил главное.

Окно видеозвонка исчезло.

Почти сразу в корпоративном мессенджере появилось сообщение:

Игорь Сергеевич: Через двадцать минут покажешь текущий результат. Как есть.

Антон откинулся на спинку кресла и закрыл глаза.

Однокомнатная студия встретила его привычной тишиной. Гудел системный блок. За окном шёл мелкий июльский дождь. Машины медленно ползли по мокрой дороге, а серый дом напротив выглядел так, будто его текстуры не успели загрузиться.

Антон снова взял телефон.

Уведомление не исчезло.

ОБНОВЛЕНИЕ ЗАВЕРШЕНО

Под первой строкой появился новый текст:

Для применения изменений требуется перезапуск

— Только не сейчас.

Он попытался смахнуть уведомление.

Оно осталось на месте.

Открыл настройки уведомлений. Неизвестного приложения в списке не было.

Когда Антон вернулся на главный экран, текст изменился:

Автоматический перезапуск через 10 секунд

— Да вы издеваетесь.

Он зажал кнопку питания. Экран погас прежде, чем открылось системное меню. В тот же момент выключились мониторы. Гудение компьютера оборвалось.

Антон поднял голову. За окном остановились машины. Не затормозили — именно остановились. Одна застыла посреди поворота, чуть накренившись. Капли дождя зависли перед стеклом прозрачными точками.

На микроволновке замерли цифры:

14:37

Антон медленно встал. Звуков не было. Не работала вентиляция. Не шумел лифт. Не гудели трубы. Даже город за окном исчез, оставив только неподвижную декорацию.

Телефон вспыхнул белым.

3

2

1

Что-то щёлкнуло внутри головы. Не больно. Скорее так, будто рядом с ухом замкнули выключатель.

Мир вернулся разом. Капли ударили по окну. Машины продолжили движение. Компьютер загудел, а из колонок донёсся звук входящего сообщения.

Антон покачнулся и ухватился за стол. Перед глазами висел полупрозрачный прямоугольник.

Не на экране.

В воздухе.

Он повернул голову. Окно переместилось вместе с его взглядом. Закрыл правый глаз. Затем левый. Ничего не изменилось.

ИНТЕРФЕЙС ЛИЧНОГО РАЗВИТИЯ АКТИВИРОВАН

Пользователь: Антон Ветров Возраст: 31 год Уровень: 1 Синхронизация завершена.

Антон смотрел на надпись около минуты.

Потом сел.

— Галлюцинация.

Окно не ответило.

— Переутомление. Недосып. Кофеин. Возможно, давление.

Текст остался прежним.

Это почему-то беспокоило сильнее, чем если бы неизвестный голос начал с ним спорить.

Антон протянул руку и попытался коснуться прямоугольника. Пальцы прошли сквозь изображение.

Он моргнул несколько раз.

— Закрыть.

Окно исчезло. Антон замер.

— Открыть.

Оно вернулось. На этот раз внизу появилась короткая строка:

Команда распознана

Антон сглотнул. Галлюцинации, насколько он знал, не обязаны были подчиняться голосовым командам. С другой стороны, он не был специалистом по галлюцинациям.

На рабочем мониторе мигало сообщение:

Игорь Сергеевич: Антон? Ты подключаешься?

На часах было 14:56.

Он потерял почти двадцать минут.

Созвон уже начался.

Антон быстро открыл проект и запустил тесты ещё раз. Двенадцать ошибок.

Перед глазами возникло новое окно.

ЗАДАНИЕ СФОРМИРОВАНО

Демонстрация текущего результата Проведите встречу, не скрывая известные проблемы.

Условия:

не делать заведомо ложных утверждений; обозначить известные риски; предложить проверяемый план действий.

Награда:

100 опыта; изменение поведенческого профиля; возможное формирование социального навыка.

Антон перечитал задание дважды.

— Я не соглашался.

Никакой реакции.

— Отказаться от задания.

Появилась новая строка:

Задание отражает уже начатую ситуацию. Отказ от отслеживания не изменит её последствий.

— Удобно.

Система не ответила.

Антон подключился к конференции.

В звонке уже сидели Игорь Сергеевич, аналитик, двое разработчиков из соседней команды и заказчик — мужчина с выражением лица человека, который лично оплачивает каждую минуту чужой некомпетентности.

— Наконец-то, — сказал Игорь Сергеевич. — Показывай.

Антон включил демонстрацию экрана.

— На данный момент реализован основной сценарий…

Он замолчал.

Перед глазами не появились готовые варианты ответа. Не возникло подсказки, какую формулировку выбрать. В правом нижнем углу только мелькнула маленькая отметка:

Обнаружено расхождение с фактическим состоянием

Антон выдохнул.

— Нет. Начну заново. Основной сценарий пока реализован не полностью.

В конференции стало тихо.

Игорь Сергеевич поднял брови.

— Продолжай.

— Сейчас падают двенадцать тестов. Часть связана с моими изменениями. По оставшимся я ещё не закончил разбор.

Заказчик нахмурился.

— Почему мы узнаём об этом только на демонстрации?

Антон посмотрел на список ошибок.

У него было множество удобных ответов. Смежная команда поздно передала изменения. Требования уточнили не сразу. Старые тесты нестабильны.

Во всех этих фразах содержалась доля правды. Именно поэтому они так хорошо подходили для лжи.

— Потому что я поздно сообщил о проблеме, — сказал Антон. — Я рассчитывал успеть исправить всё до встречи.

На месте предыдущего текста появилась новая строка:

Условие выполнено: ложное утверждение не использовано

— Что предлагаешь? — спросил Игорь Сергеевич.

Антон открыл результаты тестов. На этот раз интерфейс ничего не подсветил. Ошибки остались такими же запутанными, как и пять минут назад.

— Сначала разделю падения на связанные с новой логикой и связанные с тестовыми данными. После этого отправлю промежуточный результат со списком оставшихся проблем.

— Конкретнее по срокам, — потребовал заказчик.

Антон хотел сказать: «Два часа».

Так обычно и работало. Берёшь реалистичную оценку, сокращаешь вдвое, а затем надеешься, что будущий ты окажется умнее нынешнего.

Он посмотрел на двенадцать ошибок.

— Через два часа будет первый отчёт. До конца рабочего дня закончу либо обозначу конкретный блокер.

Игорь Сергеевич несколько секунд изучал его лицо.

— Хорошо. Демонстрацию переносим на завтра.

Заказчик отключился первым. Затем вышли остальные.

Игорь Сергеевич остался.

— Ты понимаешь, как это выглядело?

— Да.

— Плохо.

— Да.

— Но впервые за последние месяцы ты не пытался меня заболтать.

Антон промолчал.

— Закрой задачу сегодня. И в следующий раз сообщай о рисках раньше. Мне не нужна уверенность. Мне нужна информация.

— Понял.

— Надеюсь.

Звонок завершился.

Перед глазами появилось уведомление.

ЗАДАНИЕ ВЫПОЛНЕНО

Демонстрация текущего результата Получено: 100 опыта; Самоконтроль: небольшой прогресс; Убедительная речь: начальный прогресс.

ПОВЫШЕНИЕ УРОВНЯ

Уровень: 1 → 2 Опыт до следующего уровня: 0 / 250

Получено: 1 очко характеристик; доступ к разделу Статус.

Антон некоторое время не двигался.

Потом осторожно произнёс:

— Статус.

АНТОН ВЕТРОВ

Уровень: 2 Опыт: 0 / 250

Основные характеристики

Сила: 6 Выносливость: 5 Ловкость: 6 Восприятие: 8 Интеллект: 12 Самоконтроль: 5 Социальность: 4 Удача: 3

Свободные очки: 1

Текущее состояние

Здоровье: 71 / 100 Энергия: 34 / 100 Концентрация: 42 / 100

Наблюдаемые факторы:

дефицит сна; избыток стимуляторов; низкая физическая активность; повышенная реакция на стресс.

Поведенческие тенденции

Избегание неприятных решений: высокое Откладывание действий: очень высокое Склонность к рационализации: высокая

Точность модели: 74%

Последняя строка немного успокоила.

— То есть ты можешь ошибаться?

Вероятностные оценки зависят от объёма доступных данных.

Это был первый ответ, который Антону действительно понравился.

Он закрыл окно и прошёлся по комнате.

Нужно было вызвать скорую. Или хотя бы позвонить кому-нибудь. Сказать: «Привет, я вижу игровой интерфейс, который оценивает мою склонность избегать ответственности».

Наверняка существовало какое-то медицинское объяснение. Переутомление, нервный срыв, отравление. Опухоль.

Телефон зазвонил.

Мама.

Антон смотрел на экран, пока звонок не прекратился.

Почти сразу пришло сообщение:

Ты опять занят? Позвони, когда сможешь.

Он перевернул телефон экраном вниз.

В дверь позвонили.

Антон вздрогнул.

Звонок повторился.

Он никого не ждал.

Курьеры обычно звонили на телефон. Соседи с ним почти не общались. Управляющая компания предпочитала взаимодействовать угрозами в квитанциях.

Антон подошёл к двери и посмотрел в глазок.

На площадке никого не было. На полу лежала небольшая картонная коробка.

Он не открывал дверь ещё секунд тридцать. Затем повернул замок.

Коридор был пуст. Лифт стоял на первом этаже. На лестнице не слышалось шагов.

На коробке отсутствовали адрес, штрихкод и логотип доставки.

Было только имя:

АНТОН ВЕТРОВ

Он занёс коробку в квартиру и поставил на стол.

Перед глазами появилось уведомление.

ОБНАРУЖЕН СИСТЕМНЫЙ ПРЕДМЕТ

Тип: стартовый комплект Назначение: первичная адаптация пользователя

Для открытия требуется подтвердить получение.

— А если не подтверждать?

Предмет останется неактивным.

— Участие в системе тоже можно не подтверждать?

Пауза длилась около секунды.

Активация уже завершена.

Антон закрыл глаза.

— Получение подтверждаю.

Крышка коробки слегка приподнялась.

Внутри лежали три предмета:

чёрный металлический браслет;

небольшая прозрачная ампула из мягкого полимера;

сложенный лист бумаги.

Антон взял лист. На нём была напечатана одна фраза:

СИСТЕМА НЕ ВЫБИРАЕТ ЗА ВАС. ОНА ПОКАЗЫВАЕТ ЦЕНУ.

За окном вспыхнул белый свет. Яркость была такой, что на секунду исчезли дома, дорога и серое небо.

Следом пришёл глухой удар, от которого задрожали стёкла.

Антон бросился к окну.

Над центром города поднимался тонкий столб света. Он уходил в облака совершенно вертикально, будто нечто огромное проткнуло небо снизу.

Машины останавливались прямо на дороге. Люди выходили из подъездов, поднимали телефоны, снимали происходящее.

Антон тоже потянулся за смартфоном, но только увидеть время на экране – 15:08.

Система оказалась быстрее.

СИСТЕМНОЕ СОБЫТИЕ

Нулевая точка Стадия: подготовка Предполагаемый радиус воздействия: 18 километров Оценка риска для пользователя: высокий

Расчётная вероятность сохранения жизни при текущем состоянии: от 20% до 35%

Достоверность прогноза: низкая

недостаток данных о событии; неизвестные внешние факторы; неизвестное поведение пользователя.

Антон перечитал строку с вероятностью выживания.

Так было даже хуже, чем точная цифра. Точная цифра могла оказаться дешёвым способом напугать. Диапазон выглядел как результат расчёта.

Ниже появилась кнопка:

СФОРМИРОВАТЬ ПЛАН ПОДГОТОВКИ

— Сформировать.

ОБЯЗАТЕЛЬНОЕ ЗАДАНИЕ

Подготовка к Нулевой точке До начала основной стадии: 11 часов 22 минуты

Рекомендуемые минимальные условия: уровень: 5; здоровье: не ниже 80; энергия: не ниже 70; запас воды; запас пищи; любой навык физического противодействия; выход за пределы предполагаемой зоны воздействия.

Текущие данные: уровень: 2 / 5; здоровье: 71 / 100; энергия: 34 / 100; вода: не подтверждена; пища: не подтверждена; навык физического противодействия: отсутствует; пользователь находится внутри предполагаемой зоны.

Штраф за невыполнение: пользователь встретит событие без рекомендуемой подготовки

— То есть мгновенно я не умру?

Такая гарантия отсутствует.

Антон машинально взял со стола кружку и посмотрел на столб света.

Потом на собственное отражение в окне: небритое лицо, сутулая спина, старая футболка и кружка холодного кофе в руке.

Впервые за долгое время он совершенно точно знал две вещи.

Он понятия не имел, что происходит.

И отложить это до понедельника не получится.

Глава 2. Цена подготовки

Красное системное окно висело перед глазами, перекрывая половину города.

Антон закрыл его.

Столб света не исчез.

Внизу, у подъезда, уже собирались люди. Кто-то снимал происходящее на телефон. Кто-то звонил близким. Один мужчина стоял под дождём в домашних тапках и яростно объяснял собеседнику, что «никакой паники нет».

На смартфоне одно за другим появлялись уведомления из разных групп мессенджера.

Городские новости: Очевидцы сообщают о неизвестном свечении в центральной части города.

Рабочий чат: Кто-нибудь ещё это видит?

Домовой чат: Это учения?

Домовой чат: Нет, это молния.

Домовой чат: Какая молния стоит на месте?

Домовой чат: Не нагнетайте.

Пока в любом обсуждении находился человек, требующий не нагнетать, общество ещё сохраняло признаки жизни.

Антон вернулся к коробке.

Первым он взял браслет.

Металл был холодным, матовым и совершенно гладким. Ни застёжки, ни разъёма, ни шва.

АДАПТАЦИОННЫЙ БРАСЛЕТ

Функции после активации:

отображение физиологических показателей; регистрация объектов Нулевой точки; доступ к ограниченному инвентарю; аварийная защита от части системных воздействий.

Ограничения:

точность обнаружения угроз, прогнозирования и анализа зависит от объёма доступных данных;

Последний раздел Антон перечитал особенно внимательно.

Система хотя бы не притворялась всеведущей.

Он надел браслет.

Металл поддался, словно плотная резина, а затем сжался точно по запястью. По поверхности пробежала тонкая синяя линия.

Браслет активирован Доступно ячеек инвентаря: 5

Антон коснулся прозрачной ампулы.

ВОССТАНАВЛИВАЮЩИЙ РАСТВОР

При употреблении:

восстанавливает до 30 единиц здоровья; уменьшает лёгкое кровотечение; снижает последствия физического истощения.

Не устраняет причину повреждения.

Он пожелал поместить ампулу в инвентарь. Предмет исчез из ладони.

Антон посмотрел под стол. Потом проверил рукав.

Ампулы нигде не было.

— Это уже слишком материально для нервного срыва.

Система не ответила.

Антон открыл план подготовки. Требования не изменились.

Уровень пять.

Здоровье восемьдесят.

Энергия семьдесят.

Запасы.

Навык.

Выход из города.

Он открыл карту на телефоне.

Столб находился примерно в семи километрах. Предполагаемая граница зоны проходила далеко за городской чертой. Чтобы выбраться, предстояло пересечь почти весь город.

Навигатор уже показывал первые заторы.

Система наложила на карту полупрозрачный круг, но вместо точного прогноза вывела:

Данные о транспортной обстановке получены из общедоступных источников.

При сохранении текущей динамики основные выезды могут быть перегружены в течение нескольких часов.

Антон посмотрел на рабочий монитор. Двенадцать тестов всё ещё падали.

Он обещал закончить задачу.

С одной стороны находилась работа. С другой — неизвестное событие с высокой вероятностью смерти.

Выбор должен был быть очевидным. За пару часов можно даже пешком успеть выйти из обозначенной области. А квартира сама за себя не заплатит.

Именно поэтому Антон сел за компьютер.

Перед глазами возникло новое задание.

Выполнить данное обещание

Разберите известные ошибки и передайте проверяемый результат до отъезда.

Награда:

120 опыта; развитие профессионального навыка.

Предупреждение: Продолжение работы может повысить последующие риски.

— Даже ты считаешь это плохой идеей?

Система не формирует моральных оценок без заданных критериев.

— Значит, всё-таки считаешь.

Ответа не последовало.

Антон запустил тесты ещё раз. Первые три падали в одном и том же месте. Никаких красных рамок вокруг нужной строки не появилось. Система не называла причину. Не показывала готовое решение.

Она только фиксировала:

Ошибка воспроизведена

Антон открыл код и начал разбирать цепочку вызовов.

Через десять минут нашёл неверно сформированный ключ словаря.

Исправил.

Три теста стали зелёными.

Прогресс задания: 3 / 12 подтверждённых исправлений

Следующие четыре ошибки оказались связаны с тестовыми данными. Не потому, что система сказала ему об этом, а потому, что в отладчике возник объект с параметрами, невозможными в новом сценарии.

Антон сверил фикстуру.

Поменял данные.

Запустил тесты.

7 / 12

За окном продолжал стоять столб света.

Телефон вибрировал каждые несколько секунд.

Появились первые официальные заявления. Экстренные службы просили не приближаться к центральным районам. Власти сообщали, что радиационный фон находится в пределах нормы. Причина явления устанавливается.

Популярный блогер уже вёл прямую трансляцию из машины.

— Мы сейчас сами всё проверим, — говорил он в камеру. — Никакой мистики. Скорее всего, рекламная акция или военные испытывают оборудование.

Число зрителей приближалось к ста тысячам.

Антон выключил трансляцию.

Восьмая и девятая ошибки исчезли после исправления преобразования веса. Осталось три.

Телефон зазвонил.

Мама.

На этот раз Антон ответил.

— Привет.

— Ты видел, что происходит?

— Смотрю в окно.

— Ты дома?

— Да.

— Приезжай к нам.

Родители жили в небольшом посёлке примерно в сорока километрах от городской черты.

За пределами красного круга.

— Возможно, вечером выеду.

— Не возможно, а выезжай. Отец уже машину заправил.

— У меня своей машины нет.

— Тогда электричка.

Центральный вокзал находился ближе к столбу света, чем его дом.

— Посмотрю маршруты.

— Антон.

— Что?

— Не сиди до последнего за компьютером.

Он посмотрел на рабочий экран.

— Не буду.

Система коротко отметила:

Высказывание противоречит текущему поведению пользователя

Антон мысленно закрыл уведомление.

— Я соберусь и позвоню.

— Позвони, когда выйдешь.

Он завершил разговор.

Оставшиеся три теста оказались одной проблемой. Старый тест ожидал поведение, которое больше не соответствовало требованиям.

Антон перечитал задачу.

Проверил соседние сценарии.

Открыл историю изменений.

Только после этого изменил ожидаемый результат.

Все тесты стали зелёными.

На часах было 16:17.

ЗАДАНИЕ ВЫПОЛНЕНО

Выполнить данное обещание

Получено:

120 опыта; Разработка программного обеспечения: прогресс; Концентрация: небольшой прогресс.

Текущий опыт: 120 / 250

Нового уровня не было.

Это почему-то обрадовало Антона. Мир хотя бы не раздавал повышение за каждый законченный рабочий день.

Он отправил Игорю Сергеевичу сообщение:

Все тесты зелёные. Изменения отправляю. После этого уеду из города из-за ситуации в центре. Буду доступен с телефона.

Ответ пришёл почти сразу:

Принял. Сегодня дальше не работай.

Антон перечитал сообщение.

Начальник, которого он ещё утром воспринимал как главную угрозу, оказался первым человеком, официально разрешившим ему прекратить работать.

Он закрыл ноутбук.

Теперь оставались реальные проблемы.

Антон открыл характеристики.

Интеллект уже сильно выделялся на общем фоне. Но в ближайшие часы важнее не выдохнуться на лестнице или при эвакуации.

— Ну, может, кроме социальности… — добавил Антон вслух.

Свободное очко всё ещё не было потрачено.

— Что даст выносливость?

Выносливость: 5

При повышении до 6 ожидается:

максимальная энергия: +10; небольшой рост устойчивости к физической нагрузке; увеличение переносимого веса.

Изменения характеристик не заменяют тренировку и восстановление.

Антон вложил очко.

По телу прошла тёплая волна. Не прилив силы и не чудесное исцеление. Скорее ощущение, будто внутреннее напряжение немного отпустило.

Максимальное значение энергии изменилось:

34/100 → 34/110

— Уже лучше.

За следующие двадцать минут он собрал спортивную сумку.

Документы.

Зарядки.

Фонарик.

Аптечка.

Два комплекта одежды.

Старый туристический нож, подаренный отцом.

Система предупредила:

Навык безопасного обращения с ножом не подтверждён

Антон положил нож в боковой карман и застегнул молнию.

На кухне обнаружились половина упаковки сыра, йогурт, три яйца, хлеб, кетчуп и банка энергетика.

Долговременный запас пищи не подтверждён

— А сыр?

Срок безопасного хранения вне холодильника ограничен.

— Хлеб?

Недостаточная питательная ценность для выполнения условия.

— Энергетик?

Не является пищей.

— Формально ты прав... или права?

Система не стала уточнять, что не имеет пола.

Домовой чат:

В магазине на углу очередь до улицы. Воду разбирают.

На заправке драка.

Антон открыл план подготовки.

Ему по-прежнему требовался навык физического противодействия.

— Как его получить?

Возможные способы:

обучение; тренировка; успешное применение; награда за задание.

Доступный безопасный вариант: базовая тренировка защитных действий

Антон осмотрел комнату.

Для тренировки требовалось освободить хотя бы несколько шагов пространства. Он отодвинул кресло к стене, убрал сушилку с одеждой и подвернул половину ковра, о который регулярно цеплялся даже в обычной жизни.

Затем достал из шкафа старый городской рюкзак. Набил его полотенцами и свёрнутой толстовкой, после чего продел левую руку сразу через обе лямки и затянул их. Плотная сторона рюкзака закрыла предплечье от кисти почти до локтя.

Получилось подобие мягкого щита.

Выглядело нелепо, зато позволяло отрабатывать защитные движения без риска разбить себе лицо собственным тренировочным снарядом.

Антон поставил в двух шагах от себя стул, обозначив им условного противника.

Система вывела первую последовательность:

1. принять устойчивое положение; 2. прикрыть голову и корпус; 3. сместиться с линии атаки; 4. выйти из опасной дистанции; 5. сохранить противника в поле зрения.

Никакой светящейся траектории перед глазами не появилось.

Только короткое сообщение:

Выполните движение самостоятельно.

— Очень содержательно.

Антон встал напротив стула.

Левую ногу выставил немного вперёд. Рюкзак поднял к груди. Правую руку оставил возле лица, хотя пока не понимал, что именно должен был ею защищать.

Он представил прямой удар в голову.

Поднял рюкзак, шагнул вправо и попытался сразу отступить.

Ноги скрестились.

Антон качнулся и едва не опрокинул стул.

Попытка не принята

Причины: потеря устойчивого положения; защитное движение выполнено с опозданием; выход из опасной дистанции не завершён.

— Значит, сначала закрыться.

Он попробовал снова.

На этот раз Антон первым вскинул рюкзак, полностью перекрыл себе обзор и при смещении врезался бедром в край стола.

Попытка не принята

Причины: потеря визуального контроля; столкновение с препятствием.

— Закрыться, но продолжать смотреть. Понятно.

Третью попытку он выполнил медленнее.

Поднял левое предплечье к виску, оставив возможность смотреть поверх рюкзака. Одновременно шагнул по диагонали, развернул корпус и отступил, не скрещивая ног.

Движение принято

Антон вернулся на исходную позицию и повторил упражнение.

На двадцатом повторении заболели ноги.

На тридцатом футболка начала слегка прилипать к спине.

На сорок втором Антон зацепился пяткой за подвернутый ковёр и едва не врезался в стол.

— Очень безопасная тренировка.

Рекомендуется убрать ковёр.

Он полностью свернул ковёр.

Через сорок минут система подвела итог.

Навык сформирован

Защитное движение I

Навык позволяет эффективнее сохранять равновесие, уходить с линии прямой атаки и использовать подручный предмет как прикрытие.

Ограничения:

навык не гарантирует успешное уклонение; скорость реакции пользователя остаётся ограничивающим фактором; эффективность снижается при неизвестной форме атаки.

Получено опыта: 30 Текущий опыт: 150 / 250 Энергия: 23 / 110

Антон сел прямо на пол.

До пятого уровня было ещё очень далеко.

В дверь позвонили.

Антон посмотрел на время. До рекомендуемого отъезда оставалось всё меньше, а он ещё не закончил собираться.

За дверью стоял Виктор из квартиры напротив.

На соседе были спортивные штаны и майка. Стоя с озадаченным лицом, в одной руке он держал телефон, другой безуспешно обновлял карту.

— У тебя интернет работает?

— Домашний работает.

— А мобильный?

Антон посмотрел на свой телефон. Значок сети оставался на месте, но сообщение в домовом чате отправлялось уже почти минуту.

— Еле-еле.

— У меня домашний лёг, мобильный тоже ничего не грузит. Звонки пока проходят, а карты и новости — нет. Посмотри, какие дороги открыты.

Антон открыл навигатор.

Приложение загрузилось не сразу. Большинство улиц вокруг центра уже покраснели, а на северном выезде быстро рос затор.

— Основные дороги забиваются. Через пару часов может стать хуже.

— Вот и Лена говорит, что надо уезжать.

— Разумно.

— Мы к брату на дачу. Севернее города. Машина большая, место есть. Поедешь с нами?

Предложение оказалось слишком своевременным.

Антон сразу начал искать подвох.

— Почему предлагаете?

Виктор пожал плечами.

— Потому что ты один. Потому что едешь примерно в ту же сторону. И потому что мне будет спокойнее, если рядом окажется человек, у которого хотя бы интернет работает.

— У меня сумка.

— Машина выдержит.

— Родители живут не возле вашей дачи.

— До кольца довезу. Дальше разберёмся.

Из квартиры появилась женщина в светлой толстовке.

— Виктор, ты взял аптечку?

— Взял.

— Где?

— В сумке.

— В какой?

Виктор посмотрел на две одинаковые сумки.

Женщина закрыла глаза.

— Я Лена, — сказала она Антону. — Если поедете с нами, просьба одна: когда он произносит «план простой», сразу проверяйте ближайший выход.

— Я всё слышу, — сказал Виктор.

— Это часть проблемы.

Антон согласился отправиться с ними.

Не потому, что доверял соседям. Потому что альтернативы становились хуже с каждой минутой.

Он вернулся в квартиру, закрыл окна и проверил документы.

На часах было 17:36. До Нулевой точки оставалось восемь часов пятьдесят минут.

Антон подошёл к окну.

Столб света стал шире. Внутри него двигались тёмные точки. Издалека они напоминали стаю птиц, только поднимались слишком ровно и слишком быстро.

Одна из точек отделилась от остальных.

Браслет нагрелся.

ОБНАРУЖЕН ОБЪЕКТ НУЛЕВОЙ ТОЧКИ

Данные ограничены.

Объект движется в общем направлении пользователя.

Расстояние: уменьшается Ожидаемое время сближения: 18–24 минуты

Точность оценки: низкая Назначение объекта: неизвестно Точка назначения: неизвестна

Антон смотрел в окно. Точка была слишком далеко, чтобы увидеть её без увеличения.

Он открыл камеру телефона и приблизил изображение. На экране появилась маленькая чёрная капля.

Она двигалась в сторону его района. Не обязательно к дому. Не обязательно к нему.

Но ожидать уточнения в квартире Антон не собирался.

Он схватил сумку и вышел на площадку.

— Виктор!

Глава 3. Восемнадцать минут

Антон пару раз ударил кулаком в соседскую дверь.

Она распахнулась почти сразу.

Виктор держал огромную спортивную сумку, набитую так плотно, что молния расходилась посередине.

— Что случилось?

— Выезжать нужно сейчас.

— Почему?

Антон посмотрел на системное сообщение.

Ожидаемое время сближения: 18–22 минуты

— От столба света отделился какой-то объект, — сказал он. — Он движется в нашу сторону. Если курс не изменится, скоро окажется где-то рядом.

Виктор медленно опустил сумку.

— Какой объект?

— Не знаю.

— Самолёт?

— Нет.

— Вертолёт?

— Не похоже.

— Ракета?

— Я сказал, что не знаю.

— Откуда информация?

Антон не приготовился к вопросу заранее, а полный правдивый ответ звучал слишком безумно.

После появления света у меня возник игровой интерфейс. Он выдаёт задания, считает здоровье и обнаруживает неизвестные объекты.

Даже в собственной голове это не выглядело убедительно.

— Увидел его через камеру, — сказал Антон. — Траектория идёт примерно в нашу сторону.

Это была не вся правда, но хотя бы не откровенная ложь.

Из квартиры появилась Лена. На ней уже висели два рюкзака.

— Что происходит?

— Антон говорит, к нам что-то летит, — ответил Виктор.

— Не к нам. В сторону района.

— Большая разница?

— Пока большая.

Лена посмотрела на Антона.

Затем на браслет. Её взгляд задержался на синей линии, но вопросов она не задала.

Из глубины квартиры донёсся голос:

— Пап, там дрон?

В прихожую выглянул мальчик лет двенадцати. Худой, взъерошенный, в наушниках. Телефон он держал горизонтально.

— Денис, убери камеру, — сказала Лена.

— Я не снимаю.

— Тогда зачем держишь телефон как оператор новостей?

Денис опустил его.

— Теперь точно не снимаю.

Над домом прокатился низкий гул. Стёкла на площадке мелко задрожали.

Все замолчали.

Гул продолжался несколько секунд, затем ушёл куда-то в сторону центра.

Лена повернулась к мужу.

— Выезжаем.

— Я ещё ничего не решил.

— Решил. Просто твоё лицо отстаёт от событий.

Она вернулась в квартиру.

— Документы взяла. Аптечка взята. Вода — шесть бутылок. Еда — примерно на сутки. Денис, куртку.

— Мам, июль.

— В июле люди тоже мёрзнут.

— Особенно во время падения инопланетных дронов?

Лена замерла.

— Ещё одно слово про инопланетян — и понесёшь две сумки.

— Я ничего не говорил.

— Ты сказал целое предложение.

Виктор поднял багаж.

— План простой. Спускаемся в гараж, садимся в машину и едем на север.

Лена появилась снова.

Теперь на ней было три рюкзака.

— Нас четверо. Сумок семь. Воды шесть литров. Машина в минус первом секторе «Б». Ключи?

Виктор похлопал по карманам. Потом по другим.

Лена закрыла глаза.

— На тумбочке, — сказал Денис.

— Я знаю.

— Поэтому ищешь в штанах?

Виктор бросился обратно.

Лена начала тихо перечислять:

— Документы. Вода. Аптечка. Еда. Зарядки. Наличные.

Она говорила не для остальных.

Счёт удерживал её в движении. Пока вещи можно было перечислять, мир оставался управляемым.

Браслет Антона нагрелся.

ТРАЕКТОРИЯ УТОЧНЕНА

Объект движется в сторону жилого квартала пользователя.

Предполагаемая зона сближения: радиус 700 метров Ожидаемое время: 12–16 минут

Точка контакта неизвестна.

— Похоже, он выйдет к нашему кварталу, — сказал Антон.

Лена перестала считать.

— Насколько точно?

— Недостаточно, чтобы назвать дом. Достаточно, чтобы не оставаться здесь.

Виктор вернулся с ключами.

— Лифт.

— Нет, — сказала Лена.

— Девятый этаж.

— Лучше девять этажей вниз, чем один час в застрявшем лифте.

— План простой…

— Лестница, Виктор.

Он посмотрел на Антона, словно ожидал поддержки.

— Лестница, — подтвердил тот.

Они начали спускаться.

Виктор шёл первым. За ним Денис. Затем Лена. Антон замыкал группу.

На восьмом этаже открылась дверь.

На площадку выглянула пожилая женщина в синем халате.

— Молодые люди, вы куда?

— На прогулку, Галина Петровна — ответила Лена.

Женщина посмотрела на сумки.

— С вещами?

— Долгая прогулка.

— А что случилось?

Виктор остановился.

— Галина Петровна, собирайтесь. В городе какая-то авария.

— В новостях сказали, что всё под контролем.

— В новостях всё под контролем, пока диктор не начинает бежать из студии.

— У меня кот.

— Берите кота.

— Он спрятался.

Антон посмотрел на время. До сближения оставалось около одиннадцати минут.

— Мы не можем долго искать.

Галина Петровна поджала губы.

— Тогда я никуда не поеду.

Виктор поставил сумки.

— Где он прячется?

— Иногда под ванной. Иногда за шкафом. А если испугался, мог уйти на балкон.

— Виктор, — сказала Лена.

— Я быстро.

— Ты не умеешь быстро. Ты умеешь с полной уверенностью делать что-то дольше всех.

— Женщину здесь оставим?

Лена ничего не ответила.

Антон видел два решения. Продолжить спуск или вернуться за котом.

Система не подсказала, какое из них правильное. Только показала изменение прогноза:

При немедленном продолжении движения вероятность покинуть квартал до сближения объекта выше.

Никаких процентов. Видимо недостаточно данных.

Рядом появилось напоминание:

Дополнительное условие задания: оказать помощь человеку

Антон мысленно закрыл его.

Ему не понравилось, что система попыталась превратить Галину Петровну в условие. Ещё меньше ему понравилось, что без этого напоминания он, возможно, прошёл бы мимо.

— Переноска есть? — спросил он.

— На верхней полке в коридоре.

— Виктор, доставайте. Я найду кота.

— Почему ты?

— Потому что вы не поместитесь под ванной.

— Убедительно.

Антон вошёл в квартиру.

Пахло лекарствами, жареным луком и кошачьим кормом. В коридоре стояли старые шкафы, на стенах висели семейные фотографии.

Антон заглянул под кровать, затем в ванную.

Пусто.

На кухне у миски лежал рассыпанный корм.

Холодильник стоял на несколько сантиметров дальше от стены, чем требовалось.

Антон присел.

Из щели блеснули два глаза.

— Нашёл.

Кот зашипел.

Большой, серый и совершенно не заинтересованный в спасении.

Антон отодвинул холодильник, сунул руку в щель и сразу получил когтями по запястью.

Здоровье: 70 / 100

Он сжал зубы, схватил кота за загривок и вытащил наружу.

Животное завертелось, ударило задними лапами и попыталось укусить его за большой палец.

Виктор вошёл с переноской.

— Держи крепче.

— Спасибо. Я собирался открыть окно.

Вместе они затолкали кота внутрь.

Уже одетая Галина Петровна прижала переноску к груди.

— Мой хороший.

Кот издавал звуки, которые плохо сочетались со словом «хороший».

Лена забрала у женщины небольшую сумку.

— Лекарства взяли?

— От давления в комоде. От сердца там же. Ещё капли…

Лена закрыла глаза.

— Верхний ящик?

— Да.

— Виктор.

— Уже иду.

— Денис, не снимай.

— Я помогаю документировать.

— Документируй ногами. Иди вниз.

Они снова двинулись.

На шестом этаже погас свет.

Денис коротко вскрикнул и тут же кашлянул, будто одно могло объяснить другое.

Включилось тусклое аварийное освещение.

— Вот поэтому не лифт, — сказала Лена.

На пятом этаже они встретили других жильцов.

Мужчина в деловом костюме тащил чемодан на колёсах. Молодая пара спорила, брать ли с собой телевизор. Девушка с собакой нажимала кнопку лифта, несмотря на погасший дисплей.

— Электричества нет, — сказал Виктор. ­— Лифт не работает.

Девушка не отводила взгляда от дверей.

— В доме должно быть резервное питание.

— Тогда почему дисплей не горит? — спросил Виктор.

Она ещё раз нажала кнопку.

— Не знаю. Может, кабина уже едет.

Виктор посмотрел на погасший дисплей, затем на кнопку.

— Конечно. Просто решила ехать без лишних спецэффектов.

Лена потянула мужа вниз.

Браслет снова нагрелся.

ТРАЕКТОРИЯ УТОЧНЕНА

Предполагаемая зона контакта: северная часть двора и въезд в подземный паркинг. Погрешность: 45 метров Ожидаемое время: 2–4 минуты

Рекомендуется укрытие за капитальной конструкцией.

— Не во двор, — сказал Антон. — Спускаемся в паркинг и держимся за бетонной стеной.

Виктор резко обернулся.

— Ты опять знаешь больше, чем говоришь.

— Сейчас не время.

— Потом объяснишь.

— Если будет потом.

На первом этаже стены задрожали.

Где-то наверху разбилось стекло.

Они спустились ещё на один пролёт и оказались в коридоре подземного паркинга.

Виктор открыл противопожарную дверь.

За ней тянулись ряды машин и бетонных колонн. До минивэна оставалось около тридцати метров.

— К машине! — сказал он.

— Сначала за стену, — возразил Антон.

— Она вон там.

— Объект движется ко въезду.

— Мы уедем раньше.

Над двором раздался резкий вой, не похожий ни на гул самолёта, ни на свист ракеты. Звук быстро приближался, дрожал и срывался, будто воздух резали тупым лезвием.

Лена схватила Дениса за воротник.

— За колонну. Сейчас.

На этот раз Виктор не спорил.

Они укрылись за массивной бетонной стеной, отделявшей паркинг от въездной рампы.

Удар пришёл через несколько секунд.

Сначала вспыхнул белый свет. Затем по паркингу прошёл грохот.

Воздух толкнул в лицо пылью и мелким мусором. Снаружи завыла автомобильная сигнализация. Что-то тяжёлое проскребло по асфальту и врезалось в металлическое ограждение.

Галина Петровна прижала переноску к груди.

Денис перестал снимать.

Виктор выглянул из-за стены.

— Машину не задело.

Лена ударила его ладонью по плечу.

— Это сейчас главное?

— Она нужна, чтобы уехать.

— Тогда да. Главное.

Антон осторожно посмотрел в сторону рампы.

В асфальте лежала продолговатая капсула длиной около двух метров.

Её внешний слой был расколот и частично обгорел. Светлые керамические пластины осыпались вокруг, словно куски толстой черепицы. Передняя часть смялась при ударе. Капсула пробила ограждение, задела припаркованный у въезда автомобиль и остановилась боком поперёк полосы.

Большую часть энергии приняли бетон, машина и собственный разрушающийся корпус.

Из трещины шёл дым.

— Это не дрон, — прошептал Денис.

Одна из створок капсулы дёрнулась. Затем выгнулась наружу.

Изнутри показалась тонкая чёрная конечность. Она упёрлась в асфальт.

Потом вторая.

Из повреждённой оболочки выбралось устройство размером с крупную овчарку.

Его корпус напоминал плоский дорожный чемодан с закруглёнными краями. С четырёх сторон раскрывались длинные суставчатые ноги. Каждая состояла из нескольких секций и заканчивалась узкой опорой, похожей на металлический палец.

Спереди находился блок из трёх круглых объективов. Один был разбит.

Задняя часть корпуса пострадала при ударе: панель отсутствовала, внутри мигал тусклый синий свет силового блока, а между повреждёнными узлами сыпались искры.

Устройство попыталось встать.

Одна нога не выдержала и сложилась. Механизм качнулся, ударился боком о землю, но снова поднялся.

Браслет Антона вывел информацию:

ОБЪЕКТ НУЛЕВОЙ ТОЧКИ

Назначение: неизвестно Состояние: тяжело повреждён Уровень потенциальной угрозы: средний

Обнаружено направленное сканирование.

Три объектива повернулись. Минули Виктора. Минули Лену.

Остановились на Антоне.

Спасибо за чтение

Вернуться к книге