Москва ноябрьским вечером напоминала размазанную акварель — серую, влажную и безнадежно скучную. Алексей Ковалёв, высокий, сутулящийся, словно вечно нёс на плечах невидимый груз бессонных ночей и неработающего кода, яростно колотил по рулю своего «Жигуля» шестой модели.
— Ну давай же, заводись, старушка! — бормотал Алексей, в который раз поворачивая ключ зажигания. — Я же тебя кормлю, пою, даже имя дал — "Люся". Хоть раз отплати мне добром!
Машина ответила ему многозначительным молчанием, прерываемым лишь редкими щелчками стартера, похожими на смешок системного администратора, наблюдающего за твоими мучениями.
— Ладно, — Алексей вылез из машины и пнул колесо, но тут же пожалел — кроссовок был новым. — Ты довольна? Ты добилась своего! Но запомни: когда я разбогатею на крипте, я куплю себе Теслу, а тебя сдам в музей советского автопрома! В отдел "Ужасы XX века"!
На улице моросил дождь — не романтичный осенний дождик, а противная морось, превращающая тротуары в болото, а людей — в злых, мокрых существ, мечтающих лишь о горячем чае и сухих носках. Алексей застегнул потрёпанную кожаную куртку, зарылся глубже в шарф и зашагал к метро, привычно теребя мочку левого уха и мысленно составляя список дел: починить кофеварку, разобрать старый ноут (или выкинуть уже бедолагу?), покормить кота Барсика, который, наверное, уже сидит на холодильнике и смотрит на дверь с выражением: «Ну где же ты, недостойный слуга?»
Вагон поезда в метро встретил его толпой, духотой и странной девушкой, читающей книгу с драконом на обложке. «Магия хаоса: теория и практика» — золотые буквы поблёскивали в свете ламп.
Девушка в метро читает книгу о теории хаоса? Судя по её прическе — она уже практиковалась.
Поезд дёрнулся и начал набирать скорость. Алексей понуро опустил голову вниз, положив локти на колени. Как же все надоело. Может это и есть то самое страшное, что может произойти с программистом – выгорание?
И вдруг у его ног что-то блеснуло.
Маленький кристалл, мутный, с трещиной, но... странно тёплый. Алексей осторожно поднял его, воровато озираясь, будто нашел «косарь» и боялся, что это кто-нибудь увидит. Казалось, внутри кристалла застыло северное сияние — переливы голубого и фиолетового, а на одной из граней кто-то выгравировал крошечного дракончика с хитрой улыбкой.
— Чей-то талисман? — пробормотал он и сунул находку в карман куртки.
Дома Барсик, чёрный, как ночь без интернета, тут же уткнулся носом в находку и издал звук, полный скепсиса:
— Мррр?
— Не знаю, дружище, — Алексей повертел кристалл в пальцах. — Но пахнет... грозой.
Ковалев сидел перед компьютером, со спущенными до колен джинсами (потому что «дома можно»), и уже, черт знает сколько времени вертел странную находку в руке. И если бы не кот, настойчиво требовавший кормёжки, он бы мог так просидеть и до полуночи.
- Ладно, морда, пошли пожрем.
Наскоро перекусив оставшимися со вчера макаронами с сосиской и вывалив коту пол банки паштета, Алексей вернулся за компьютер. А точнее – к созерцанию кристалла.
Он протёр камень, покрутил его перед монитором, поковырял ногтем и вдруг кристалл открылся. Нет, не так. С него слетела крышечка, обнажившая вполне себе современную флэшку USB 3.0. Ковалев, как настоящий айтишник, много раз говорил невеждам о том, что самые небезопасные связи – это связи твоего компьютера с неизвестным устройством. Подумал он об этом и сейчас. Недолго. А затем воткнул флэшку в порт.
— Ну-ка, что ты за зверь такой...
Экран дрогнул. Выскочило окно:
[Обнаружено неизвестное устройство]
[Запустить? (Да / Нет)]
Алексей усмехнулся:
— Ну конечно, «неизвестное». А вдруг это вирус? Или криптомайнер? Или... Черт, неужели он и правда нажмет…
Он щёлкнул «Да».
Мир взорвался.
Ноутбук завизжал, как испуганный поросёнок или антивирус Касперского, что практически одно и то же, кристалл вспыхнул ослепительным синим светом, а воздух вдруг запах озоном и.… спелым яблоком?
— Что за…
Комната распалась на куски. Пол ушёл из-под ног, и Алексей полетел вниз, в воронку из света и странных символов, мелькающих перед глазами. Последнее, что он успел подумать:
— Отмена! Ctrl+C! Отмена!!!
Очнулся он на мостовой, выложенной светящимися плитками. Над головой плыли шары с танцующими рунами вместо ламп, а в небе кричала... птица? Нет, это было похоже на ожившую оригами-фигурку, сложенную из пергамента и лунного света.
— Сон? — Алексей поднялся, потирая затылок. — Если да, то слишком уж детализированный...
В кармане что-то жгло. Кристалл - флэшка. Он был цел, но теперь дракончик на его грани... подмигнул?
Ковалев покрутился на месте. И все-таки, где он? Для рядового сна, слишком много деталей и тактильных ощущений. Голова гудит, телу зябко, в горле пересохло. Однако, почему-то совсем не страшно.
Неожиданно рядом заморгал уличный фонарь. На его поверхности замигали странные символы:
[ОШИБКА]
[Исправить? (Да / Нет)]
Алексей рассмеялся:
— Ну конечно же «Да»!
Он ткнул пальцем, и фонарь вспыхнул ярче прежнего.
— Эй! — Алексей окликнул прохожего в остроконечной шляпе. — Где я? Это что, розыгрыш?
Прохожий обернулся. Его лицо было... пустым. Гладким, как незагруженная текстура в игре.
— Чужестранец! — раздался за спиной гневный голос, заставив программиста вздрогнуть. — ты заменил автоматическую сериализацию[1] объекта ручной!
Алексей обернулся. К нему шагали трое в чёрных мантиях с вышитой эмблемой — что-то вроде скрещённых молний и книги. Лица у них были такие, будто он только что перезаписал их базу данных без бэкапа.
— По закону главы 5766! — прогремел бородач впереди.
— 5766? — Алексей фыркнул. — «Ошибка сериализации»? Очень смешно.
— Молчать, нарушитель! Ты сломал и будешь отвечать!
— Я ничего не ломал! Я вообще тут случайно! Меня эта штука, — он ткнул пальцем в кристалл, — перенесла сюда!
Маги переглянулись.
— Он признался! — воскликнул один.
— Использует запрещённые артефакты! — добавил второй.
— Сжечь! — заключил третий.
— Эй, парни, давайте обсудим! — Алексей отступил на шаг. — Может, чаю попьём? Кофе? У меня есть... э-э... печеньки...
Но было поздно. Один из магов взмахнул посохом — и в воздухе зашипела зелёная молния.
Бежать или попробовать договориться? Алексей выбрал первое.
— Стой! — закричали вслед.
Алексей рванул в ближайший переулок на ходу теребя мочку уха (проклятая привычка при стрессе!), а за спиной уже свистели искры магии, пахнущие жжёным попкорном.
«Ну вот, — подумал он, перепрыгивая через ящик с какими-то светящимися грибами. — Теперь я в сказке. Или в игре. Интересно, у меня много стамины? А респаун есть?»
Алексей рванул в переулок, едва увернувшись от свистящей мимо уха искры. Город вокруг был словно сошедший со страниц безумного фэнтези-квеста — вывески светились руническими символами, вместо асфальта под ногами переливалась мозаика из самоцветов, а из водосточных труб с шипением выпархивали крошечные огненные саламандры.
- Чёрт, где тут логика?! — мелькнуло в голове, пока он петлял между разноцветными домиками.
А маги тем временем кричали ему вдогонку:
— Вернись, преступник!
— Не-а! — Алексей уже сворачивал за угол. — Я в «Жигуле» хоть знаю, что делать, когда она не заводится! А с вами...
Он не договорил.
Один из преследователей взмахнул посохом — и впереди Алексея мостовая внезапно ожила, вздыбившись каменной волной.
— Ого, динамический рельеф!
В последний момент он прыгнул в сторону, ухватившись за свисающую с балкона верёвку с прищепками (которая, как оказалось, была живой). Верёвка завизжала и дёрнулась, но он уже качнулся и приземлился на крышу ларька с вывеской «Зелья & Кодинг».
— Эй, чужака поймать не можете? — крикнул кто-то снизу.
Алексей не стал отвечать — вместо этого схватил валявшийся на крыше медный чайник и швырнул его в ближайшего мага. Тот чиркнул посохом, и чайник на лету превратился... в облако бабочек.
— Серьёзно?!
Но бабочки внезапно рванули к лицу мага, яростно затрепыхав крыльями. Тот закашлялся и принялся яростно отмахиваться.
Ага, значит, здешняя магия реагирует на намерение, а не на физику!
Оглядевшись, Алексей заметил, что фонарные столбы здесь были не просто столбами — они явно подчинялись какой-то системе. На каждом горел символ, напоминающий... Да это же иконки интерфейса!
Он прыгнул вниз, кубарем прокатился по тротуару (Барсик бы гордился!) и влетел в узкий проход между домами. На бегу тыкая в «кнопки» на фонарях, вызывая тем самым то вспышки света, ослепляющие погоню, то внезапные порывы ветра, срывающие с магов шляпы.
— Прекратите ломать городские заклинания! — орал бородач.
— А вы прекратите гоняться, тогда и чинить не придётся!
Последний фонарь в переулке мигал красным — [WARNING: SYSTEM FAILURE]. Алексей пнул его ногой со всей силы.
Столб с треском рухнул, загородив проход... и вдруг из его основания вырвался гигантский голубой дракон, сложенный из электрических разрядов.
Чудовище рыкнуло, развернулось... и уставилось прямо на магов.
Алексей не стал дожидаться развязки — рванул в ближайшую подворотню. В кармане кристалл снова нагрелся, и в голове чётко прозвучало:
>> Подключение к сети "Алгокодск" установлено. Доступ: гость.
— Что?!
Но разбираться было некогда — где-то позади уже раздавались взрывы, крики и довольное урчание электрического дракона...
Электрический дракон, размахивая хвостом из искр, с громким "404 ERROR: TARGET NOT FOUND" разогнал магов по соседним переулкам. Алексей, пользуясь моментом, юркнул в первую попавшуюся дверь — и очутился в помещении, напоминавшем не то лавку старьёвщика, не то свалку электроники из будущего.
— Ну и интерфейс у вас тут... — пробормотал он, разглядывая полки, заставленные кристаллами с надписями «v1.2», «beta» и одним особенно потрёпанным — «Windows ME».
Из-за стойки поднялась фигура в рваном плаще, усыпанном светящимися пикселями.
— Чего надо, чужеземец? — хрипло спросил тип, похожий на гика, которого три дня не выпускали из серверной.
— Э-э... У вас тут Wi-Fi есть? — автоматически спросил Алексей.
— Ха! — «продавец» хлопнул по стойке, отчего та вспыхнула голубым. — У нас тут мана раздаётся только по подписке! Но для тебя... — он прищурился, — есть кое-что интересное.
Достал из-под прилавка чёрный ящик с рунической надписью: «Беспроводной магический адаптер: Mana_Bluetooth_v3.1».
— Подключается к кристаллу. Позволяет колдовать без этих дурацких жестов.
— Серьёзно? — Алексей потрогал пальцем трещину на корпусе. — А лицензия есть?
— Лицензия?! — старик фыркнул. — Парень, ты в Алгокодске! Здесь если заклинание работает — значит, легально!
За дверью внезапно раздался грохот — дракон, видимо, добрался до чего-то взрывоопасного.
— Ладно, беру! — Алексей сунул руку в карман, но вместо кошелька нащупал кристалл. Тот пульсировал, как перегретый процессор.
— О-о, так ты тот самый... — старик вдруг заулыбался. — Тогда держи в подарок от Теодора.
— Спасибо... – растерянно пробормотал Ковалев.
Грохот за дверью перешёл в рёв.
— Беги, парень! Они же тебя по главе 404 ищут!
Алексей выскочил в переулок, где фонари, словно сбросившие все ограничения, плясали в ритме техно. Кристалл в кармане вдруг прошипел: Обнаружена новая сеть: «Undercity_WiFi». Пароль: «admin123». Подключиться?
— Ну хоть что-то знакомое... — он мысленно ткнул «Да» и рванул в сторону, где в небе мигал огромный... «синий экран смерти» с надписью: «Критическая ошибка в модуле ».
За спиной послышался тонкий голос:
— Эй, айтишник! Сюда, если хочешь выжить!
Ковалев резко затормозил и обернулся. Из канализационного люка торчала рука в перчатке с пиксельным узором: Внимание: неизвестный процесс предлагает доступ. Разрешить? (Y/N)
— Чёрт с вами, — вздохнул Алексей. — Y.
Люк захлопнулся как раз в тот момент, когда в переулок ворвались трое магов с дымящимися посохами.
Соединение установлено. Добро пожаловать в подполье, юзернейм: «Лекс_из_Москвы».
[1] Сериализация — процесс преобразования структуры данных в формат, который можно сохранить или передать