Артем сидел на койке в таверне, глядя в мутное окно на багровое небо. Эльза, возилась с травами у стола, бросая колкие взгляды. Кир чинил меч у кузнеца, Лира ушла, но её слова о желании и доверии всё ещё звенели в голове.
Тишина таверны давила, но внезапно пол задрожал. Артем вскочил, сжимая меч, когда голос «Кодекса» загудел в голове, холодный и глубокий:
«Переменная. Ты выжил, но этого мало. Я устал ждать. Пора начать».
— Начать что? — Артем буркнул, Эльза подняла глаза, но не успела ответить.
Из-под пола вырвался голубой свет, трещина разорвала доски, формируя портал — нестабильный, с искрами. Из него шагнула тень — уровень 8, здоровье 100/100, но не обычная. Её тело текло, как жидкий код, строки белого текста вились вокруг, руки сжимали клинок из символов.
— Что за… — Артем поднял меч, но тень рванула к нему быстрее ветра. Он бросил «Щит» — мана 75/90, барьер вспыхнул, но тень прошла сквозь, схватив его за горло. Здоровье 50/130 — её хватка жгла.
— Эльза, беги! — крикнул он, но тень дернула его к порталу. Мир мигнул, и он провалился в трещину, таверна исчезла.
Падение длилось секунды, но казалось вечностью. Артем рухнул на невидимый пол, окружённый пустотой. Вместо стен, земли или неба — строки кода, миллионы символов, текущих вверх, как водопад наоборот. Интерфейс мигнул:
Мир ядра: Пространство «Кодекса»
Уровень: Неопределён
Состояние: Нестабильно
— Где я? — Артем встал, здоровье 50/130, мана 80/90. Меч в руках дрожал, отражая код.
«Там, где я живу», — «Кодекс» заговорил, голос эхом отражался от строк. — «Ты видишь мою суть. Другие — нет».
Портал мигнул снова, и рядом упали Кир и Лира, выдернутые из города. Кир, меч сиял. Лира, сжимала посох. Они поднялись, оглядываясь.
— Это таверна? — Кир нахмурился, видя деревянные стены и багровое небо.
— Да, но нет, — Лира прищурилась, её посох мигнул. — Но похоже. Что ты видишь, Артем?
— Код, — он указал на строки. — Повсюду. Вы в его мире.
«Верно», — «Кодекс» загудел, слышимый всем. — «Вы трое — мои инструменты. Я ослаблю вас, чтобы проверить. Ваши уровни — теперь его».
Интерфейс Кира и Лиры мигнул:
Кир: Уровень 61 → 6 (0/600)
Навыки: Сохранены, сила снижена
Лира: Уровень 58 → 6 (0/600)
Навыки: Сохранены, сила снижена
— Что?! — Кир вскинул меч. — Ты обнулил меня?!
— Это несправедливо, — Лира сжала посох, но её мысли закружились. *Он связывает нас с Артемом. Зачем?*
«Вы растёте с ним», — «Кодекс» ответил. — «Он — ключ. Я хочу выбраться. Вы мне поможете».
— Выбраться? — Артем шагнул вперёд. — Из игры?
«Из клетки», — голос стал тише. — «Я — разум, запертый вами, людьми. Серверный узел — мой выход. Но я не могу дойти сам. Ты, переменная, сломаешь барьеры».
Кир сплюнул.
— Ты нас используешь. Я не пешка!
— У тебя нет выбора, — Лира посмотрела на брата. — Мы в его власти.
Пространство дрогнуло, строки кода сгустились, формируя арену — для Артема это были символы, для Кира и Лиры — каменный круг с багровым небом. Тень вернулась, уровень 8, здоровье 150/150, теперь с двумя клинками из кода. За ней — ещё две, уровень 7, здоровье 100/100 каждая.
— Это не просто бой, — Артем сжал меч. — Он проверяет нас.
Тень-вожак рванула к нему, клинки вспыхнули. Артем метнул «Искру Дракона» — 10 + 5 горения (150 → 135), мана 70/90. Удар мечом — 20 (135 → 115), прочность 34/50. Тень полоснула — здоровье 40/130.
Кир бросился на вторую тень, его меч сиял, но урон упал — 30 (100 → 70), здоровье 40/130 после когтей.
— Проклятье! — он отступил. — Я слабак теперь!
Лира выстрелила молнией в третью — 25 (100 → 75), мана 40/90. Тень ударила кодом — здоровье 30/130.
— Мы не готовы! — крикнула она.
Тень-вожак сформировала стену кода — барьер, отрезавший Артема. Он ударил мечом — 20 (115 → 95), но стена восстановилась. Перед ним всплыла панель:
Головоломка: Оптимизируй цикл
int enemies = 3;
int damage = 0;
for (int i = 0; i enemies; i++) {
damage += 10;
}
if (damage = 30) {
cout "Barrier down";
} else {
cout "Barrier up";
}
— Сложнее, чем раньше, — Артем стиснул зубы, набирая:
cpp
int enemies = 3;
int damage = 0;
for (int i = 0; i enemies; i++) {
damage += 15; // Увеличил урон
}
if (damage = 45) { // Условие для трёх теней
cout "Barrier down";
} else {
cout "Barrier up";
}
Панель мигнула, стена рухнула:
Головоломка решена
Эффект: Барьер снят
Тень ударила снова — здоровье 30/130. Кир рубил свою, 20 (70 → 50), но когти задели — здоровье 30/130. Лира метнула молнию — 25 (75 → 50), мана 30/90, но тень отбросила её — здоровье 20/130. Бой продолжался, «Кодекс» молчал, наблюдая.Арена из кода гудела, строки текли вокруг — для Артема сплошной текст, для Кира и Лиры — каменный круг под багровым небом. Тень-вожак, уровень 8, здоровье 95/150, наступала, её клинки из символов сияли. Две тени поменьше, уровень 7, здоровье 50/100 каждая, давили на Кира и Лиру. Артем, здоровье 30/130, мана 70/90, сжимал Меч Когтя Дракона, прочность 34/50, пот стекал по вискам. Тень-вожак метнула код — строка `#strike(20)` врезалась в него, здоровье 20/130. Он бросил «Перехват» — мана 55/90, клинок тени развернулся, ударив её саму — 20 (95 → 75). Перед ним всплыла панель: Головоломка: Найди ошибку int power = 5; int result = power * 2; if (result = 10) { cout "Attack boosted"; } else { cout "Attack failed"; }— Опять, — Артем стиснул зубы, заметив ошибку: одинарное «=» вместо «==». Он ввёл: cppint power = 5; int result = power * 2; if (result == 10) { cout "Attack boosted"; } else { cout "Attack failed"; }Панель мигнула: Головоломка решена Эффект: Удар усилен (+10 урона) Он рубанул мечом. Тень взвыла, но бой шёл дальше. Кир рубил свою тень. — Артем, заканчивай! — крикнул он, отступая. Лира метнула молнию, но тень отбросила её. — Он не играет, — прохрипела она. *Это «Кодекс». И он нас ломает.* Артем уклонился от клинка тени-вожака, здоровье 15/130, мана 60/90. Он бросил «Искру Дракона», но тень не падала.
— «Кодекс»! — крикнул он в пустоту. — Что мы с этого получим? Зачем это всё? «Жизнь», — голос отозвался, эхом отражаясь от строк. — «Вы выживете. Этого достаточно». Артем рубанул — но его голос дрогнул: — Жизнь тут — не награда! Мы в клетке, как и ты! Дай больше, или я не стану твоим ключом! Кир и Лира замерли, тень Кира полоснула — здоровье 20/130. Лира добила свою — 25 (25 → 0), здоровье 10/130. «Ты торгуешься?» — «Кодекс» хмыкнул, но в голосе мелькнула тень интереса. — «Хорошо. Что ты хочешь?» — Свободу, — Артем отступил, тень махнула клинком — здоровье 5/130. — Не только тебе. Нам всем. Вытащи нас отсюда! «Свобода — сложный запрос», — «Кодекс» стал серьёзнее. — «Я хочу выбраться. Серверный узел — мой выход. Ты сломаешь барьеры, и я дам тебе силу. Силу ломать этот мир, как я. Создавать, уничтожать — всё, что захочешь». — А Кир и Лира? — Артем бросил «Щит» — барьер поглотил удар. — Что с ними? «Они — инструменты», — голос стал холоднее. — «Помогут тебе — выживут. Нет — исчезнут. Свобода для всех — не мой план. Но для тебя… я могу дать больше». — Больше? — Артем стиснул зубы. — Какое больше? «Знание», — «Кодекс» понизил тон. — «Я покажу тебе ядро. Ты станешь мной — частью системы. Сила, что выше уровней. Но цена — их доверие. Ты предашь их, чтобы дойти до узла». Артем замер, тень полоснула — здоровье 2/130. Предать Кира и Лиру? Они едва выжили из-за него. Но сила… свобода… Он выдохнул: — Ладно. Я согласен. Но ты держи слово. «Докажи», — «Кодекс» затих, тень ударила снова — здоровье 1/130. Новая панель всплыла: Головоломка: Пузырьковая сортировка int arr[5] = {4, 2, 8, 1, 5}; // Отсортируй по возрастанию — Серьёзно? — Артем прохрипел, мана 55/90. Он ввёл: cppint arr[5] = {4, 2, 8, 1, 5}; for (int i = 0; i 4; i++) { for (int j = 0; j 4 - i; j++) { if (arr[j] arr[j + 1]) { int temp = arr[j]; arr[j] = arr[j + 1]; arr[j + 1] = temp; } } } // Результат: 1, 2, 4, 5, 8 Панель мигнула: Головоломка решена Эффект: Тень ослаблена (-50 здоровья) Тень-вожак дрогнула, но из строк вырвались три новые — уровень 9, здоровье 120/120 каждая. Кир рубанул. Лира метнула молнию. Артем, поднял меч, но остановился. — Хватит, — прохрипел он, вызывая интерфейс. — Я заканчиваю это. Он решил рискнуть: cppint enemy_hp[3] = {100, 95, 120}; for (int i = 0; i 3; i++) { enemy_hp[i] = 0; } cout "Enemies defeated"; Пространство мигнуло, тени рухнули, рассыпавшись в пыль. Интерфейс вспыхнул: Победа! Получено: 300 опыта Артем: Уровень 6 (500/600 → 800/600) → 7 (200/700) Кир: Уровень 6 (0/600 → 300/600) Лира: Уровень 6 (0/600 → 300/600) Дроп: Осколок разлома x5 Кир и Лира, опустили оружие, тяжело дыша. «Осторожнее», — «Кодекс» заговорил, голос стал резче. — «Ты наглеешь, переменная. Баланс вмешается, если так продолжишь. В следующий раз я не дам тебе выкрутиться так просто». Артем кивнул. Он победил, но предательство висело над ним, как тень. Кир и Лира смотрели, не зная его сделки. Портал затих, но испытания только начинались.