Маг из метро

Глава 1
Москва ноябрьским вечером напоминала размазанную акварель – серую, влажную и безнадежно скучную. Алексей Ковалёв, высокий, сутулящийся, словно вечно нёс на плечах невидимый груз бессонных ночей и неработающего кода, яростно колотил по рулю своего «Жигуля» шестой модели.
– Ну давай же, заводись, старушка! – бормотал Алексей, в который раз поворачивая ключ зажигания. – Я же тебя кормлю, пою, даже имя дал – "Люся". Хоть раз отплати мне добром!
Машина ответила ему многозначительным молчанием, прерываемым лишь редкими щелчками стартера, похожими на смешок системного администратора, наблюдающего за твоими мучениями.
– Ладно, – Алексей вылез из машины и пнул колесо, но тут же пожалел – кроссовок был новым. – Ты довольна? Ты добилась своего! Но запомни: когда я разбогатею на крипте, я куплю себе Теслу, а тебя сдам в музей советского автопрома! В отдел "Ужасы XX века"!
На улице моросил дождь – не романтичный осенний дождик, а противная морось, превращающая тротуары в болото, а людей – в злых, мокрых существ, мечтающих лишь о горячем чае и сухих носках. Алексей застегнул потрёпанную кожаную куртку, зарылся глубже в шарф и зашагал к метро, привычно теребя мочку левого уха и мысленно составляя список дел: починить кофеварку, разобрать старый ноут (или выкинуть уже бедолагу?), покормить кота Барсика, который, наверное, уже сидит на холодильнике и смотрит на дверь с выражением: «Ну где же ты, недостойный слуга?»
Вагон поезда в метро встретил его толпой, духотой и странной девушкой, читающей книгу с драконом на обложке. «Магия хаоса: теория и практика» – золотые буквы поблёскивали в свете ламп.
Девушка в метро читает книгу о теории хаоса? Судя по её прическе – она уже практиковалась.
Поезд дёрнулся и начал набирать скорость. Алексей понуро опустил голову вниз, положив локти на колени. Как же все надоело. Может это и есть то самое страшное, что может произойти с программистом – выгорание?
И вдруг у его ног что-то блеснуло.
Маленький кристалл, мутный, с трещиной, но… странно тёплый. Алексей осторожно поднял его, воровато озираясь, будто нашел «косарь» и боялся, что это кто-нибудь увидит. Казалось, внутри кристалла застыло северное сияние – переливы голубого и фиолетового, а на одной из граней кто-то выгравировал крошечного дракончика с хитрой улыбкой.
– Чей-то талисман? – пробормотал он и сунул находку в карман куртки.
Дома Барсик, чёрный, как ночь без интернета, тут же уткнулся носом в находку и издал звук, полный скепсиса:
– Мррр?
– Не знаю, дружище, – Алексей повертел кристалл в пальцах. – Но пахнет… грозой.
Ковалев сидел перед компьютером, со спущенными до колен джинсами (потому что «дома можно»), и уже, черт знает сколько времени вертел странную находку в руке. И если бы не кот, настойчиво требовавший кормёжки, он бы мог так просидеть и до полуночи.
– Ладно, морда, пошли пожрем.
Наскоро перекусив оставшимися со вчера макаронами с сосиской и вывалив коту пол банки паштета, Алексей вернулся за компьютер. А точнее – к созерцанию кристалла.
Он протёр камень, покрутил его перед монитором, поковырял ногтем и вдруг кристалл открылся. Нет, не так. С него слетела крышечка, обнажившая вполне себе современную флэшку USB 3.0. Ковалев, как настоящий айтишник, много раз говорил невеждам о том, что самые небезопасные связи – это связи твоего компьютера с неизвестным устройством. Подумал он об этом и сейчас. Недолго. А затем воткнул флэшку в порт.
– Ну-ка, что ты за зверь такой…
Экран дрогнул. Выскочило окно:
[Обнаружено неизвестное устройство]
[Запустить? (Да / Нет)]
Алексей усмехнулся:
– Ну конечно, «неизвестное». А вдруг это вирус? Или криптомайнер? Или… Черт, неужели он и правда нажмет…
Он щёлкнул «Да».
Мир взорвался.
Ноутбук завизжал, как испуганный поросёнок или антивирус Касперского, что практически одно и то же, кристалл вспыхнул ослепительным синим светом, а воздух вдруг запах озоном и.… спелым яблоком?
– Что за…
Комната распалась на куски. Пол ушёл из-под ног, и Алексей полетел вниз, в воронку из света и странных символов, мелькающих перед глазами. Последнее, что он успел подумать:
– Отмена! Ctrl+C! Отмена!!!
Очнулся он на мостовой, выложенной светящимися плитками. Над головой плыли шары с танцующими рунами вместо ламп, а в небе кричала… птица? Нет, это было похоже на ожившую оригами-фигурку, сложенную из пергамента и лунного света.
– Сон? – Алексей поднялся, потирая затылок. – Если да, то слишком уж детализированный…
В кармане что-то жгло. Кристалл – флэшка. Он был цел, но теперь дракончик на его грани… подмигнул?
Ковалев покрутился на месте. И все-таки, где он? Для рядового сна, слишком много деталей и тактильных ощущений. Голова гудит, телу зябко, в горле пересохло. Однако, почему-то совсем не страшно.
Неожиданно рядом заморгал уличный фонарь. На его поверхности замигали странные символы:
[ОШИБКА]
[Исправить? (Да / Нет)]
Алексей рассмеялся:
– Ну конечно же «Да»!
Он ткнул пальцем, и фонарь вспыхнул ярче прежнего.
– Эй! – Алексей окликнул прохожего в остроконечной шляпе. – Где я? Это что, розыгрыш?
Прохожий обернулся. Его лицо было… пустым. Гладким, как незагруженная текстура в игре.
– Чужестранец! – раздался за спиной гневный голос, заставив программиста вздрогнуть. – ты заменил автоматическую сериализацию1[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». Подключиться?
– Ну хоть что-то знакомое… – он мысленно ткнул «Да» и рванул в сторону, где в небе мигал огромный… «синий экран смерти» с надписью: «Критическая ошибка в модуле sky_render.dll».
За спиной послышался тонкий голос:
– Эй, айтишник! Сюда, если хочешь выжить!
Ковалев резко затормозил и обернулся. Из канализационного люка торчала рука в перчатке с пиксельным узором: Внимание: неизвестный процесс предлагает доступ. Разрешить? (Y/N)
– Чёрт с вами, – вздохнул Алексей. – Y.
Люк захлопнулся как раз в тот момент, когда в переулок ворвались трое магов с дымящимися посохами.
Соединение установлено. Добро пожаловать в подполье, юзернейм: «Лекс_из_Москвы».
Глава 2
Люк захлопнулся с глухим «чпоньк» – звуком, знакомым любому, кто хоть раз ронял телефон на кафель в ванной. Алексей кувыркался в темноте по скользкому тоннелю, пахнущему перегретыми свечами и чем-то неуловимо напоминающим школьный компьютерный класс после уроков информатики.
– Приземляйся уже, новичок! – раздался из ниоткуда звонкий женский голос.
Алексей шлёпнулся на груду странных подушек – одни шипели, как змеи, другие тихонько напевали мелодию из «Игры престолов».
Перед ним стояла девушка, и Ковалёв замер. Не то чтобы у него никогда не было девушек, но, чтобы такой!
Невысокая (каких в народе называют «полторашки»), с плавными линиями тела, будто нарисованными идеальным алгоритмом, она казалась одновременно реальной и цифровой галлюцинацией. Её лицо – с высокими скулами, чуть раскосыми глазами и мягкими губами, тронутыми голографическим блеском, – напоминало интерфейс, в который хочется вглядываться вечно. Кожа светилась едва уловимым мерцанием, словно под ней бежал поток данных, а в глазах, как в глубине мониторов, плясали зелёные и синие пиксели. Ну или как-то так. Алексей был айтишником до мозга костей, и других ассоциаций не знал. Одно он знал точно – вот он, его идеал красоты.
На ней был плащ, сотканный из мерцающих фрагментов экранов – летающие рыбки сменялись бесконечными туннелями Windows 98, а у локтя зависла надпись «99,9%…», будто сама реальность вокруг неё догружалась в реальном времени.
– Зера, капитан команды «Крипто-Котов», – представилась она, и её улыбка вспыхнула, как уведомление. Пальцы с ногтями, покрытыми миниатюрными бинарными кодами, погладили полумеханического питомца на плече.
Тот выглядел как помесь кота и ретрокомпьютера: треугольные уши-радиаторы, лапки с клавишами WASD вместо подушек, хвост – скрученный HDMI-кабель. «Байт», – урчал он, и звук напоминал смесь кошачьего урчания и жужжания кулера.
– Это он так здоровается и одновременно представляется, – засмеялась Зера. – А это наша мастерская. Не суди строго – серверная у нас в другом конце пещеры.
Алексей озирался по сторонам. Пещера напоминала гибрид алхимической лаборатории и офиса стартапера: на стенах висели «магические схемы» – пергаменты, где между рун вкраплялись знакомые символы: «if», «else», стрелочки и даже смайлик в уголке. В углу стоял кристальный шар, опутанный проводами. На нём висела табличка «Не трогать! Идёт загрузка мира!». По каменному полу бегал крошечный дракончик из голубого огня, гоняясь за собственным хвостом и периодически выдавая ошибки на латыни.
– Вы… программируете магию? – осторожно спросил Алексей.
Тощий паренёк с взъерошенными волосами (Тим, как позже выяснилось) фыркнул:
– Мы её оптимизируем. Эти болваны из Гильдии до сих пор используют заклинания, которые требуют десяти жестов, трёх мантр и жертвенного печенья, чтобы вскипятить чайник!
Он швырнул Алексею странный предмет – нечто среднее между палочкой и USB-шнуром.
– Наш последний девайс. Называется «Волшебный кликер». Наводишь на магический предмет, жмёшь кнопку – и он начинает тебе подчиняться без всей этой ерунды с мантрами и заклинаниями.
Алексей нажал кнопку.
Из устройства вырвался луч света и.… испепелил стоявший в углу кувшин.
– Ой, – сказал Тим. – Это была бета-версия. Ничего, пару тестов – и всё исправим. Отдай обратно.
– Суть в том, – вмешалась Зера, – что ты, судя по всему, воспользовался пиратским ПО или даже заразным. – Она ткнула пальцем в его карман, где лежал злополучный кристалл. – И «бум» – наш мир «покачнулся» или «треснул», образовав разлом. Или понятнее – случилась ошибка компиляции. И теперь Гильдия хочет тебя либо сжечь, либо заставить всё починить, а может и подчиниться.
Ковалев тихо охнул. Мало того, что словосочетание «треснул мир» он слышал только в песне «Ума Турман» и ее слова не предвещали для мира ничего хорошего, так еще и, оказывается, его могут даже взять в рабство. Как будто снова попал в свой офис, только его там заперли и забрали кофе машину.
Где-то сверху раздался лай – но не обычный, а такой, будто кто-то трясёт мешок с хрустальной посудой.
– О, за тобой отправили магических гончих, – присвистнула Зера. – Тебя считают за серьезную угрозу, гордись. Что до собачек – считай, это как антивирусная программа, только кусается.
Алексей вновь тихо охнул. Он вообще начал догадываться, что охать ему придется часто и желательно про себя. Дурдом какой-то. Всё это напоминало его последний рабочий проект – когда начальник потребовал «сделать новый ТикТок», но так, чтобы выглядел, как старый. Только новый.
– Ладно, – наконец решился Алексей. – Что мне теперь делать?
В этот момент механический кот на плече девушки вдруг зашипел, его глаза вспыхнули красным, и из пасти вырвалось предупреждение:
«ВНИМАНИЕ! АКТИВИРОВАН МАГИЧЕСКИЙ СКАН!»
– Охренеть, – пробормотал Ковалев. – У вас даже питомцы ведут себя, как джуны…
Зера только рассмеялась и потянула его за собой вглубь пещеры, где уже слышалось жужжание каких-то странных механизмов и потрескивание энергии.
– Добро пожаловать в подполье, программист. Теперь ты – наш баг-хантер.
(Где-то в темноте дракончик-ошибка радостно чихнул искрами, складывающимися в слово «FATAL».)
Алексей споткнулся о валявшуюся на полу «мышку» – в буквальном смысле: маленький грызун с хвостом-проводом, который возмущённо запищал и убежал в дыру в стене.
– Вы вообще понимаете, что я тут случайно? – он вытер пот со лба. – Вчера я был обычным программистом, а сегодня меня уже хочет поджарить какая-то Гильдия…
– Обычным? – Зера фыркнула, разбирая груду хрустальных шаров на полке. – Ты активировал Ключевой Кристалл. Такое-либо сумасшедшие делают, либо…
– Либо избранные, – неожиданно серьёзно закончил Тим. Его пальцы замерли над странным устройством, напоминавшим калькулятор, скрещённый с кадилом.
В пещере вдруг стало тихо. Даже дракончик-ошибка перестал чихать искрами.
– Послушайте, – Алексей сжал в кулаке флешку, не вынимая ее из кармана, – если это какой-то розыгрыш…
– Мы бы так не парились, – Зера швырнула ему в лицо какой-то предмет. Он поймал – это оказалась коробочка с надписью: «Магические сухарики. Без добавления натурального хлеба». – Ты не первый, кто приходит через Разлом.
– Разлом?
– Дыры в реальности, – Тим щёлкнул пальцами, и в воздухе возник голубоватый экран с трещинами. – Когда магия «глючит», иногда затягивает людей из других миров или времен. Обычно это алхимики или инженеры. Один парень даже притащил чертёж «паровой телеги» …
– Но ты… особенный, – Зера вдруг оказалась в сантиметре от его лица. Точнее, так бы и было, если бы она таскала за собой табуретку. Её глаза странно мерцали, как два заблокированных монитора. – Кристалл выбрал тебя. А значит, Гильдия уже выложила за твою голову столько золота, что можно купить три королевства, девственность принцессы и ещё дракона в придачу. А возможно и осла.
Где-то сверху снова раздался хрустальный лай – гораздо ближе.
– Почему вы мне помогаете? – Алексей сунул коробку в карман.
– Потому что… – Зера вдруг смущённо замолчала.
– Потому что мы тоже когда-то были «чужими», – тихо закончил за нее Тим.
Внезапно механический кот на плече Зеры вздыбил шерсть и зашипел:
«ALERT! МАГИ РЯДОМ! БЕГИ ИЛИ УМРИ!»
– Время кончилось, – Зера резко схватила Алексея за руку. – Тебе нужно к Скрипт-Кудам. Они единственные, кто может расшифровать твой кристалл.
– А где они?
– В Трущобах Глитчей. Ищи дом с горящим окном, которое не горит.
Тим сунул ему в другую руку «Волшебный кликер»:
– Вроде починил. Но используй только в самом крайнем случае! И никому не показывай кристалл! Даже…
Грохот сверху заглушил последние слова. Каменный потолок вдруг осыпался пылью.
– Беги! – крикнула Зера, толкая его в узкий лаз. – И запомни: всё можно починить! Мы сами найдём тебя!
Алексей нырнул в темноту, а последнее, что он услышал, был возглас Тима:
– И не соглашайся на обновления! Это ловушка!
Лаз захлопнулся за его спиной.
(Где-то позади, механический кот грустно мяукнул: «Соединение прервано…»)
Глава 3.