Кирилл Прикота
Отладчик

Глава

ОТЛАДЧИК

ГЛАВА 1. НЕОБРАБОТАННОЕ ИСКЛЮЧЕНИЕ

Последнее, что Матвей помнил из старой жизни, — это цифра в правом нижнем углу монитора: 03:47. И собственный голос, тихий, севший от кофе и никотиновых пастилок: «ещё один спринт, и лягу».

Спринт он не закрыл.

Сердце просто остановилось где-то между строчкой try и строчкой catch, и Матвей соскользнул со стула так тихо, что соседи по опен-спейсу — то есть плюшевый жираф на шкафу и кулер — не заметили ничего.

А потом была темнота. Не чёрная, а какая-то по-настоящему пустая, без даже намёка на «чёрный». Темнота из тех, что бывает не за закрытыми глазами, а внутри самого понятия «глаза».

И в этой темноте зажглась строка.

Не звук. Не свет. Просто — знание, всплывшее прямо в затылке, привычное на вкус, как синтаксис языка, на котором пишешь десять лет:

Необработанное исключение. Процесс `Матвей_Орлов_29_лет` не найден в реестре целевой системы. Выполняется аварийное связывание с ближайшим свободным контейнером. Контейнер: `Смертник 0-17`. Внимание: целостность контейнера — 6%. Время до отказа — ~40 секунд.

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

Не свои.

Вокруг воняло сырой землёй, кровью и почему-то — псиной. Над головой нависал земляной свод, утыканный корнями, будто потолок вырыли лопатой второпях и забыли доделать. Тело — чужое, тощее, в цыпках и синяках, — лежало на боку, и грудь ходила ходуном, силясь протолкнуть воздух через что-то булькающее внутри.

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

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

ИМЯ: не присвоено (носитель: Смертник 0-17) УРОВЕНЬ: 1 ЗДОРОВЬЕ: 6 / 140 ВЫНОСЛИВОСТЬ: 12 / 60 СТАТУС: Кровотечение (тяжёлое), Перелом (ребро x2)

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

И — сработало.

Кровотечение (тяжёлое) Источник: рваная рана, левое предплечье. Модификатор: -2 ЗД/сек. Причина: применение внешнего объекта класса `Коготь` к объекту `Носитель`. Рекомендация системы: остановить кровопотерю или скорректировать ожидания.

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

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

Матвей — чужими, слабыми, дрожащими руками — заставил тело сесть.

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

ГЛАВА 2. КРЫСОСОБАКА

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

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

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

«Стоп, — подумал Матвей. — Это что, дебаг-визуализация?»

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

Инерция ещё не выветрилась из твари, когда над ней тоже вспыхнула строка — на этот раз не рядом с ним, а как будто прямо в воздухе над самой крысособакой, видимая только Матвею:

ОБЪЕКТ: Крысособака (падаль-охотник) УРОВЕНЬ: 2 ЗДОРОВЬЕ: 24 / 24 СЛАБОЕ МЕСТО: горло (открыто 0,4 сек. после промаха)

«Слабое место, открыто 0,4 секунды», — прочитал Матвей и почувствовал что-то очень знакомое. Так помечают уязвимость в отчёте пентеста. Окно эксплуатации.