В углу звякнула микроволновка, уведомляя о том, что его еда разогрета, но, несмотря на то, что обедать он собрался ближе к концу дня и желудок подводило, Антону уже было не до каши. Закрывая шкафчик, он просыпал немного заварки на столешницу и теперь наводил уборку. Во всем помещении, благо, кухонька в их офисе была небольшой.
Если Антон начал что-то делать, он обязан был закончить. Ему было неважно, остынет ли еда, стоит ли уже очередь из желающих попасть к раковине, ждет ли шеф его возвращения, дело нельзя было оставлять незавершенным. Иначе Антону сносило крышу. Сначала он начинал дергаться, потом к этому добавлялись беспрерывные вскрики, а в конце он начинал крушить мебель и превращался в форменного психа.
Впрочем, коллеги считали его психом в любом случае из-за коморбидности двух психических расстройств: обсессивно-компульсивного и тикозного. И только его гениальность как программиста многократно спасала от увольнения.
Серега Толстых, заглянувший в кухню по своей надобности, не стал даже дергаться, закатил глаза, сказал «у-у-у» и свалил в туман. Когда Антон уже домывал пол, мимо просочилась директорская референтка Лиля, потянулась за печеньем на верхней полке, сверкнув голым пузиком с пирсингом в пупке, и тут же испарилась.
Однако стоило Антону влезть на барный табурет и пододвинуть к себе ложку, как в холле загромыхало, затопало и зашумело, после чего раздался выстрел и звук сыплющейся штукатурки.
Похоже, вот война дошла и до них. С утра в чатах писали, что русские – на подступах к городу, но в это слабо верилось. Тем более, что шеф, у которого были связи, написал, «работаем как обычно». Правда, сам остался в столице.
Под маты, доносящиеся из опенспейса и визги девчонок, Антон сполз со стула и схватился за ручку швабры – мозг никогда не перестает удивлять реакциями.
В этот момент затопало совсем рядом и в кухню заглянул молодой солдат. Невысокий, щуплый, в «Ратнике», с висящим на поясе шлемом. Антон зафиксировал все мелочи сразу. Волосы коротко острижены, на щеке свежий порез. В руках АК-12 с подствольником. Он заглянул в кухню быстрым, профессиональным взглядом, шевельнул стволом.
— На выход, — и двинул дальше, заглядывая в другие отсеки офиса.
— Не соврал Гвоздь, — тем временем делился какой-то широкоплечий с другим военным, — действительно, кучеряво живут. Холодильник, запас продуктов, вон, даже стиралка. До утра тут и отсидимся.
Командир. Цифровой камуфляж с преобладанием серо-зелёных пятен, разгрузка набитая магазинами, бронежилет с керамическими плитами, на голове шлем с чехлом и креплением. Глаза — красные, воспалённые. В офисе как-то сразу резко запахло смесью пота, машинного масла, пороха и чего-то сладковато-гнилостного.
Третий боец стоял в дверях, прикрывая сектор в сторону коридора. Взгляд Антона царапнул шеврон с российским флагом.
— Все вышли и собрались в центре. Кого найдем по конурам, пристрелим! Сдали все мобильные телефоны!
Голос был усталый, но в нём чувствовалась привычка командовать. Он не кричал, просто говорил так, будто любое неповиновение будет сломано немедленно и без лишних слов.
— Ты, со шваброй! Тоже сюда.
Антон задергал головой и два раза гавкнул.
Командир моментально дернул в его сторону ствол и поднял брови.
Антон замер и гавкнул снова.
— У него тики, – испуганно сообщила Соколова.
— Тики, — повторил командир. – Таки… Тик-Таком будешь, понял?!
Третий солдат тупо заулыбался. Первый тем временем пробежался по всем кабинетам, на обратном пути пнул ногой мусорное ведро — проверял, нет ли там кого. Он пока не грабил, не рылся в шкафах, просто обеспечивал периметр.
— Чисто?
— Да.
— Кто там в холле? Анохин? Скажи, пусть зовет остальных, — обернулся к толпе, — Кто старший здесь?
Антон посмотрел на следы ботинок — грязь, снег, куски штукатурки.
— Что замер? — снова повернулся к нему старший. — Встань ко всем.
Антон молчал. Внутри него уже начался тот самый зуд — незавершённость, мусор, хаос. Он дернул головой, медленно опустил швабру в ведро, помакал, вынул, отжал. Принялся вытирать пол.
Первый солдат сделал два шага, больно пнул его ботинком по костяшке на ноге, поднял приклад для удара.
— Пусть моет, — сказал главный. — Дураков не трогаем.
Это была частая ошибка. Из-за расстройства Антона принимали за инвалида, дурачка, редко воспринимали всерьез. Он не обижался и не расстраивался.
Грязь, дым костров, дешёвый табак, пот, что-то металлическое, кровь или оружейная смазка. Запах заполнял всю вселенную. Победить его можно было только уборкой. И Антон мыл. Пока всех сотрудников сгоняли в кабинет шефа, пока вновь пришедшие несколько бойцов занимали кресла, рылись в холодильнике, пили из кулера.
Когда он закончил, военные уже чувствовали себя как дома. Хохотали, через стеклянное окно «Аквариума» поглядывали на девок, совали в рот печенье.
Один из бойцов, вышедших покурить, вернулся, держа в руках рацию.
— Командир, пока поддержки не будет. Снялись на зачистку в какую-то Николаевку.
Старшой ненадолго задумался.
— Тогда располагаемся. Юровский, Нагайчук, сдвигайте столы под лежбище. Курим теперь в помещении. Анохин, проведи инвентаризацию съестных припасов.
— Что?
— Посмотри, на сколько жрачки хватит у этих… — военный презрительно скорчился в сторону аквариума, — похоже, задержимся.
Антон, который не понимал, чем себя занять в отсутствие телефонов и ноутбука, просто стоял возле круглого аквариума и смотрел на рыбок.
Антон повернул голову на «Аквариум» за котором сидели его коллеги. Военный перехватил взгляд.
Первый боец, крутнувшись на кресле в дальнем углу, щелкнул кнопкой системника, взял со стола степлер и постучал в стекло кабинета шефа.
— Слышь, умники! А игрушки какие-то есть на компах?
За стеклом зашушукались и затихли. Только кто-то из девушек продолжил рыдать в истерике.
— Ну?!
Самым смелым оказался Леша Лось.
— Нам нельзя! Шеф не разрешает. Да и времени на это нет.
— Пф-ф-ф. Вообще никаких?
— Даже «Косынки» нет.
Антон стоял и думал, что заскучавшие военные способны на любую дурость, поэтому их лучше занять. Он несколько раз дернул головой и поднял руку.
— У меня есть древний CD с сетевой стрелялкой. М-могу поставить.
Все головы повернулись к командиру. То явно тоже понимал, что если солдаты не копают от забора и до обеда, жди беды.
— А давай.
Почти час Антон устанавливал игры на три компа, объяснял правила шутера и ждал, пока солдаты поедят. Командир военных лениво наблюдал за виртуальными боями.
А затем Антон заметил движение. Дима из техподдержки, худой и нервный парень, который всегда жаловался на шефа, осторожно полз между столами к приоткрытой двери запасного выхода. В какой-то момент Дима оглянулся, встретился с Антоном взглядом и замер.
Антон еле заметно кивнул, не то тик, не то одобрение, а затем вновь отвернулся к экрану.
Дима рванул.
Сначала никто не среагировал. Потом солдат у окна выругался и бросился за ним. Дима уже выскочил в коридор, но через секунду раздался грохот, крик, звук удара. Солдат вернулся, волоча Диму за воротник. Лицо Димы было в крови, приклад автомата оставил глубокий след на виске.
Командир, до того сидевший в кресле и жующий печенье, медленно поднялся. Глаза его сузились, лицо побагровело.
— Так, бл@дь! — рявкнул он, внезапно зверея, голос сорвался на хрип. — Расслабились? Думаете, игрушки тут, суки?
Он шагнул к «Аквариуму», пнул стеклянную дверь — та распахнулась с грохотом. Все внутри вжались в стены.
Командир взбесился по-настоящему. Он выхватил пистолет, повернулся к лежащему на полу Диме и выстрелил ему в ногу.
— Всех расстрелять, на х@!! — прорычал он, поворачиваясь к остальным. Глаза были красные, как у зверя. — Всех, бл№дь!
Солдаты замерли. Командир тяжело дышал, глядя на оцепеневших сотрудников через распахнутую дверь. Потом вдруг остановился, вытер пот со лба.
— Нет... — сказал он тише. — Если ваши подойдут ближе, выставим вас у окон. Полезными будете.
Затем повернулся к Антону.
— Ты ж в эту херню играть умеешь? Хорошо?
Антон дернул головой, кивнул.
— Отлично. Значит, будет у нас лотерея.
Командир подошёл ближе, наклонился.
— Правила такие. Ты играешь по сетке против моих троих. Если проиграешь — прострелю тебе ногу. Вот эти вот мирные, что тут ходят… — он потыкал пальцем в экран. — Их много?
— Неписи? Не знаю, не считал.
— Непи.. что? Не гунди! Гражданские – это твои коллеги, бл@дь. Убьёшь в пылу мирняка, мы убиваем реального. Понятно?
Антон заморгал, тики усилились — голова дёргалась, пальцы дрожали.
Игра началась.
Антон играл мастерски — годы за компом не прошли даром. Он знал карты, знал спавны, знал, как ставить хедшоты. Руки тряслись, но пальцы помнили. Он убивал противников за соседними компами. Те матерились, смеялись, пытались взять реванш.
В одном моменте, в узком коридоре карты, Антон выскочил из-за угла и дал очередь. Попал в NPС-блондинку. Хедшот.
Блондинка у них в конторе был одна. Вика.
Командир, стоявший сзади и смотревший через плечо, не медлил ни секунды.
Он повернулся, поднял ствол и выстрелил.
Вика, сидевшая в «Аквариуме» у стекла, даже не успела вскрикнуть. Пуля вошла над правым глазом. Девушка осела набок и выпала в проем распахнутой двери.
Антону показалось, что вытекающая кровь не красная, как у всех, а антрацитово чёрная и густая, как масло.
После секундной тишины «Аквариум» взорвался. Девчонки завыли, кто-то из пацанов закричал. Солдаты на миг остолбенели, но тут же схватились за автоматы.
Антон сидел, глядя на лужу. Тело ходило ходуном. Рот выбрасывал из себя нелепые звуки.
— Заткнись! – негромко приказал командир, — Теперь будешь играть каждый день. Дисциплина, бл@дь!
— Надо доиграть, — Антон показывает на экран.
— Что? Ну точно больной! Свали на хрен!
Вечером офис погрузился в тяжёлую, душную тишину. Электричество военные оставили, но свет был приглушённым, светили только аварийные лампы над выходами. Коллеги забились по углам: кто-то на диване в переговорной, кто-то прямо на ковролине в кабинетах. Антон, уставший до костей, просто свернулся под своим столом — там было темно, тесно и знакомо. Стол стал для него коконом старой реальности: провода, коробки от железа, пыльный системник. Он лёг на бок, подложив под голову рюкзак, и неожиданно почти сразу провалился в сон.
Сон был простым и мучительным. Антон на полу бесконечной пустой комнаты собирал пазл — огромный, из тысячи кусочков. Приходили пингвины, просили пить. Антон знал, что в кулере вместо воды черная, как нефть, кровь. И он страшно боялся отвлечься. Он уже почти закончил: оставалась последняя деталь, крошечный фрагмент неба с облачком. Он взял её, поднёс к пустому месту… и в этот момент рядом вскрикнул кто-то из коллег. Антон проснулся резко, с дергающимся веком, сердце колотилось. Под столом было холодно, пахло пылью и старым кофе.
Внутри всё зачесалось знакомым зудом: незавершённость, как рассыпанный чай, как грязный след на полу. Пазл не был собран. Антон закрыл глаза и попытался вернуться. Сон не шел. Антон уговаривал себя. Дышал «Квадратом», вспоминал все способы заснуть. И задремал. В следующий раз комната стала меньше, пазл — проще, но опять последняя деталь не подошла. Вернуться. Надо вернуться и найти ту деталь.
Тики усилились: плечо дёрнулось, шея хрустнула. Он лёг удобнее, вытянул ноги наружу. Снова заснул. И опять проснулся. Он дергался, злился, возвращался. Цикл повторялся раз за разом, как бесконечный баг в коде, который он обязан был отдебажить.
Проснулся снова. Голова дернулась в тике. Заснул.
Антон кодил. На мониторе бежала бесконечная строка с одной синтаксической ошибкой. Он искал ее, листал, но файл тянулся в бесконечность. Ошибка. Не завершено. Антон снова проснулся. Снова дернулся в тике. И понял, что все это похоже на код. На pull request, который он отправил сам себе и сам же заапрувил. Мысль — синтаксис. Напряжение тика — компилятор. Обсессия незавершённости — бесконечный цикл while True, пока условие не выполнится.
Он закрыл глаза, чтобы протестировать. Сначала — дыхание. Он представил его как функцию, затем мысленно изменил параметры: rate=40, depth=0.7. Тело отреагировало почти мгновенно — грудь стала подниматься медленнее, глубже. Тиковое плечо дёрнулось один раз, как подтверждение компиляции без ошибок.
Удовлетворение было острым, как успешный билд после ночи дебага.
Теперь — сон. Он знал, что пазл ждёт. Незавершённый. Ошибка в последней строке.
Каждое пробуждение было словно короткий, болезненный вдох реальности. Страх. Чужие запахи. Приглушенные голоса солдат. И снова — насильственное погружение.
Антон учился, как отчаянный дайвер. Перед засыпанием он шептал себе: Пустая комната, стол, пазл, желтая коробка. Он подстраивал декорации, как режиссер, но финал оказывался тот же — незавершенность выталкивала его на поверхность, в удушливый офисный плен.
В очередной попытке разобраться, где сон, где явь, в самый момент соскальзывания в забытье, Антон уловлил звук. Повторяющийся, механический: ж-ж-ж-жжж... пауза... ж-ж-ж-жжж. Он напрягся, чтобы определить, что это, но обнаружил, что чутко слышать ему мешает другой ритмичный гул, появляющийся диссонансом. Дум-дум-м-м, дум-дум-м. Антона волной накрывает раздражение, как всегда, когда что-то не синхронизировано. Антон, не открывая глаз, пытается заставить гул поменять ритм. И ему удается. Теперь жужжание совпадает с биением. Удовлетворение разливается тёплым туманом.
И тут Антон понял, что не спит. Звук шел не из сна. Это жужжала запущенная военными стиральная машинка, старая офисная Bosch, полощущая вещи захватчиков.
Именно ее он слышал, лёжа под столом. И он только что изменил скорость стука собственного сердца. Подстроил ритм ударов под звук стиралки.
Антон распахнул глаза. В углу светил синий диод монитора. Недалеко кто-то сопел во сне. Машинка всё так же жужжала, а сердце билось в новом, подстроенном ритме.
Антон выдохнул и попробовал замедлить его еще. Сердце послушно сбавило обороты.
Он лежал под столом, не шевелясь. Осознание стучало в виски пластмассовым молотом: он только что изменил реальность. Не сон. Не игру. Он подчинил автономный процесс собственного тела навязчивой команде ума.
Нужно было проверить границы. Антон взглянул на крошечный светодиод, тлеющий в темноте, как гнилушка, и подумал о сбое. О крошечной ошибке в подаче тока. О мигании. О том, как этот светодиод должен моргнуть ровно три раза и погаснуть. Он вложил в эту мысль всю силу своей обсессии, весь зуд незавершенного действия. Он закодировал желание, упаковав его в знакомое напряжение мучительного «не могу не сделать».
Голубая точка погасла. Через секунду вспыхнула. И еще раз. И еще. Ровно три раза. И погасла насовсем.
Антон замер, боясь дышать. Это баг, вылезший в логах? Он может на что-то влиять через недосон, через тики, через сочетание неизвестных величин. Но где-то есть эта грань. В любом случае, он не будет просто возвращаться, как раньше, хаотично проваливаясь и выныривая. Он напишет скрипт.
Антон начал шептать про себя мантру с синтаксисом. Каждое слово сопровождалось микротиком — шея хрустнула, пальцы сжались в кулак, веко дрогнуло. Теперь это были не просто тики, а операторы, команды. Компилятор ОКР принимал их и транслировал в реальность недосыпа.
Антон добавил цикл с усилением обсессии.
Зуд незавершённости, который раньше мучил, теперь стал топливом. Он больше не сопротивлялся ему — он его направлял. Как разработчик, который вместо того чтобы фиксить баг, использует его в своих целях.
После сотни проб Антон так устал, что почувствовал, как граница сна приближается — знакомое онемение в кончиках пальцев, тяжесть век, но теперь он не падал в него, а входил по SSH.
Комната появилась сразу правильно настроенная: не бесконечная, а размером с опен-спейс их офиса. Пазл лежал на ковролине, почти собранный. Последний кусочек — небо с облачком — лежал рядом.
Антон мысленно запустил дебаггер. Кусочек оказался в руке, повернулся на микроскопический угол и с щелчком вставился. Идеально. И Антон крепко и надежно заснул.
Когда Антон проснулся, офис был уже наполнен шумами. Кто-то таскал столы, разговаривал, где-то закивал чайник. Персональный билд Антона был завершен, можно было сделать commit и выключить системник, но оставалась другая проблема.
— Я хочу сыграть, — тиков почти не было и это пока что скорее пугало, чем радовало.
— Тик-Так, иди на хрен, — командир даже не поднял головы от экрана смартфона.
— Я. Хочу. Сыграть.
Что-то в голосе Антона заставило военного оторваться от скроллинга.
— Тебе мало трупов было, придурок? Ну давай! Анохин?!
Антон начал видеть офис по-другому: как карту уровня. Стоило попробовать использовать тики как чит-коды, чтобы то, что раньше было проклятием, теперь стало инструментом. Он был уже не жертвой. Он был оператором, загружающим в свой мозг самый сложный скрипт. Он больше не играл, он исполнял код, написанный в кошмарах, скомпилированный его тиками и запущенный всепоглощающей потребностью доделать начатое. Он сел, положил руки на клавиатуру, и позволил навязчивой идее сфокусироваться на единственной цели: зачистить уровень.
И в тот момент, когда он запустил игру, интерфейсы окончательно слились. Пиксели на экране стали для него не картинкой, а текстовым протоколом, потоком данных с датчиков. Каждый солдат — process_enemy, со своим ID и status: alive. Каждый выстрел в игре — это не shoot(), а вызов системной функции terminate_process(ID).
Только теперь это было не развлечение. Он навёл прицел на модель солдата. Выстрел. Анохин, сидевший ближе всех к монитору, вдруг обмяк, голова его ударилась о серую столешницу, глаза закатились, изо рта вырвался короткий хрип. Тело сползло со стула и завалилось набок, руки безвольно раскинулись.
Секунда тишины словно бы высосала из помещения весь воздух, затем пространство взорвалось активностью.
— Анохин! — заорал один из солдат, вскакивая. — Сенатор, мать твою!
Другой военный, который только что жевал печенье, подскочил так резко, что стул отлетел к стене. Лицо его побелело, глаза расширились. Он подбежал и схватился за шею Анохина, пытаясь нащупать пульс.
— Сердце… у него сердце, что ли?! — голос сорвался на визг.
Командир просто встал не шевелясь и вникая в обстановку. Однако, искаженное, покрасневшее лицо и выпученные глаза говорили об эмоциях больше словю
Антон даже не вздрогнул. Он просто бесстрастно перешёл к следующему ID в очереди. Второй выстрел в игре.
Еще один солдат, тот, что стоял у окна и курил, вдруг схватился за горло. Лицо его посинело, глаза выкатились, он захрипел, пытаясь вдохнуть, ноги подкосились. Затем рухнул на колени, завалился лицом вниз, автомат загремел по полу. Изо рта потекла пена.
В «Аквариуме» коллеги вжались в стены. Кто-то из девчонок завыл — тонко, надрывно, как раненая собака. Пацаны закрутили головами. Соколова закрыла рот руками, глаза её были огромные, полные слёз. Леша Лось стоял, прижавшись спиной к стене, лицо серое, губы плотно сжаты.
— Пи$дец! — заорал командир, голос его сорвался на визг, в нём уже не было привычной властности, только животный страх. — Что, бл№дь, происходт?!
Остальные боевики заметались, Антон произвел третий выстрел.
Третий солдат замер посреди шага. Глаза его остекленели, он медленно, словно в замедленной съёмке, осел на пол, кровь хлынула из носа и ушей тонкими струйками. Тело конвульсивно дёрнулось раз, другой — и затихло.
Офис превратился в ад. Солдаты кричали, перекрывая друг друга:
— Стреляйте! Стреляйте!
Самый молодой, тот щуплый, что первым заглянул на кухню, просто сел на пол и заскулил — по-детски, отчаянно, закрыв лицо руками.
Антон был в потоке. Тики помогали: дёрганье века — зум, щелчки пальцев — перезарядка. Он на мгновения возвращался в сны, чтобы сохранить прогресс, чтобы подстроить спавны врагов, чтобы найти лучший роут.
Один за другим. Прицел — выстрел — тело падает. В игре — пиксельная кровь, в реальности — настоящие трупы, запах железа и смерти, быстро заполняющий офис.
Командир остался последним. Он стоял посреди опенспейса с пистолетом в руке, лицо перекошено ужасом и яростью. Глаза его метались от трупов к Антону и обратно. Он открыл рот, хотел что-то крикнуть — приказ, проклятие, мольбу, — но не успел.
Последний выстрел.
Командир рухнул, как подкошенный. Голова ударилась о край стола, кровь брызнула на монитор.
В офисе наступила мёртвая тишина — только тяжёлое дыхание выживших и далёкий гул стиральной машины.
Через минуту из «Аквариума» раздалось протяжное, дрожащее:
— Охрене-е-еть…
— Я закончил! Я закончил! — безостановочно повторял Антон, глядя в монитор, где мигала надпись «Level Complete».
— Это ты?! — побелевший Леха Лось подошел и встал рядом.
— Я закончил! Я закончил! – еще не веря повторял Антон.
— Если бы, — Леха положил руку ему на плечо, — война только началась.