Абсурдотека:Егор на Абсероиде
| Библиотека нетленной классики |
| Абсурдотека |
|---|
| Книжные завалы |
| Читальный зал · Книгохранилище · Случайная книга |
| Найти книгу |
Глава 1. Квадратное озеро и 9 выбитых зубов[править]
Ещё четыре часа назад этот странный водоём посреди пыльной поверхности Абсероида радовал глаз чистой, почти лазурной синевой. Вода в нём выглядела бы абсолютно идиллически, если бы не форма: акватория отличалась противоестественной, геометрически безупречной квадратной формой. Казалось, будто высшие силы вырезали этот бассейн прямо в каменном теле астероида огромным строительным канцелярским ножом, идеально вымерив каждый угол под девяносто градусов.
Но от былой небесной лазури не осталось и следа.
За четыре часа непрерывной, беспощадной мордобойной сессии Егор Туалетов и древний ящер-прионозух выжали из себя и друг друга всё, что только можно. Вода в озере стала тёплой, липкой и совершенно красной. В процессе кропотливого обмена ударами гигантский прионозух потерял не один десяток литров своей густой рептилоидной крови, к которой щедро примешалась и кровь самого Егора.
Теперь прямоугольный бассейн напоминал остывающий, наваристый борщ — с «клёцками» из выбитой крупной чешуи, рваных кусков рабочего комбинезона, клочьев тины и бледных сгустков. Тяжёлый железный запах густо висел над багровой гладью.
Егор стоял по пояс в этой плотной алой жиже, тяжело смещая центр тяжести и пытаясь удержать равновесие. Напротив него, опёршись передними лапами о ровный, как по линейке, берег, тяжело вздымал бока прионозух. Четыре часа бескомпромиссного махача истощили оба организма до предела, превратив лазурный оазис Абсероида в памятник жестокому и бессмысленному противостоянию.
Прионозух тяжело и прерывисто дышал. Опираясь обессилевшими передними лапами о ровный, словно вычерченный по линейке берег, он периодически опускал морду к алой воде и выдувал ноздрями огромные кровавые пузыри.
— Мы уже четыре часа дерёмся, всё озеро в крови! — наконец прогудел ящер, уставившись на противника с нескрываемым утомлением.
Егор попытался ответить сурово, веско и с подобающим моменту достоинством, но вместо чеканной фразы из его рта вырвался лишь свистяще-плюющийся поток воздуха:
— Да это лывая флюха наф натлавила длуг на длуга…
С языком творилось что-то совершенно неладное. Озадаченный Егор провел им по дёснам и от неожиданности обомлел: спереди образовался зияющий провал, сравнимый с пробоиной в корпусе глубоководного батискафа. В процессе кропотливого, методичного обмена ударами гигантский ящер вышиб ему ровно девять резцов и клыков.
Впрочем, не теряя присутствия духа и привычной бережливости, Егор погрузил заскорузлые руки в багровое месиво. Он долго шарил по скользкому дну геометрически правильного водоёма, дотошно процеживая кровавый ил сквозь расставленные пальцы, пока не намыл полную горсть собственного костного материала.
Насчитав ровно девять окровавленных зубов, Туалетов бережно опустил их в глубокий карман робы — поближе к верному гаечному ключу. Понятно было, что вставить их обратно прямо здесь, без квалифицированного стоматолога и анестезии, уже не выйдет, но добро в хозяйстве терять было жалко.
— А зачем тогда мы дерёмся?! — искренне изумился прионозух, выслушав свистящую реплику и уставившись на Егора выпученными жёлтыми глазами. — У тебя уже здоровье заканчивается! Ещё немного, и я смогу съесть твой труп!
— Ты плав, хватит длаться, — с трудом прошамкал Егор, сплёвывая густую розовую пену прямо под ноги. — Мне пола на Вемлю.
— Забудь о Земле! — прионозух внезапно запрокинул чешуйчатую морду и заржал с такой садистской, раскатистой радостью, что по багровой глади квадратного озера пошли крупные волны. Эхо его хохота гулко отразилось от плоского края высокого берега, заставив Егора поморщиться от свистящей боли в избитой челюсти.
— Пока ты тут четыре часа махал киркой и пыжился, твоя рыжая шлюха уже улетела на единственной неохраняемой ракете! — продолжал глумиться гигантский ящер, упиваясь моментом.
Егор замер, застыв по пояс в остывающей алой жиже. Он медленно поднял голову к тёмному, усыпанному звёздами небу Абсероида.
В небесах действительно медленно таял и расплывался характерный инверсионный след. Он тянулся прямо от местной стартовой площадки к далёким орбитальным сферам. Даже сквозь плотный запах крови и болотного ила до ноздрей Егора донёсся ни с чем не сравнимый букет: едкая вонь сгоревшего гептила, щедро приправленная шлейфом дешёвых женских духов с феромонами.
Маруся.
Это была она. Рыжая, бесстыжая тварь, из-за которой он оказался здесь, потерял полчелюсти и, возможно, застрял на этом астероиде навсегда. Пока они с прионозухом увлечённо чистили друг другу рыла, эта хитрая бестия спокойно пробралась к ракете, запустила её и только что сделала им ручкой с низкой орбиты.
Егор стоял неподвижно, не сводя взгляда с бледнеющей полосы в небе. Химический дым ракетного выхлопа постепенно растворялся в разреженном воздухе Абсероида, но сладковато-приторная вонь дешёвых духов всё ещё щекотала ноздри, подмешиваясь к тяжёлому железистому запаху крови.
Осмысление происходящего накатывало медленно, словно ледяная океанская волна. Каждая деталь этой монументальной подлости складывалась в единую картину. Вся эта четырёхчасовая бойня в геометрически правильном бассейне, превращённом в тарелку кровавого борща, была лишь отвлекающим манёвром. Пока двое дураков ломали друг другу кости, рыжая бестия технично проворачивала свою аферу.
Егор запустил руку в глубокий карман робы. Пальцы нащупали тяжёлую холодную сталь гаечного ключа и скользкую, ещё тёплую пригоршню собственных резцов и клыков. Девять штук. Монументальный памятник человеческой доверчивости.
Туалетов стиснул уцелевшие коренные зубы так, что в челюсти отозвалась острая, пронизывающая боль, и медленно сжал кулак прямо в кармане. Каменные грани выбитых зубов впились в ладонь.
Никаких рёвов, криков и драматических потрясаний кулаками в сторону космоса не было. Егор лишь тяжело, со свистом вдохнул прохладный вечерний воздух астероида. Внутри него вспыхнула и зафиксировалась чистая, сухая и беспощадная ярость.
Он дал себе молчаливую, но страшную клятву. Он выберется с этого проклятого, забытого богом куска космического булыжника. Честно, нечестно — уже совершенно не имело значения. Он найдёт способ покинуть Абсероид, даже если ради этого придётся перевернуть его вверх дном, разобрать все цветные земли на атомы и запрячь самого прионозуха вместо межпланетного буксира. А когда он встретит Марусю… Жить ей останется не больше минуты.
Глава 2. Пьяный запуск и приборный отсек[править]
Егор просунул палец в карман и снова пересчитал выбитые зубы. Ровно девять. Они глухо перекликались, словно фарфоровые кости в мешочке для домино. Глядя на тающий в ядовито-зелёном небе Абсероида инверсионный след от улетевшей ракеты, Туалетов мысленно вернулся назад во времени — в тот роковой день, когда его размеренная жизнь сантехника-электрика высшего разряда пошла по пизде.
А ведь всё начиналось так красиво и буднично.
Земля. Космодром под Стихоквадратском. Сияющее солнце, Егор в новеньком, ещё пахнущем заводской пропиткой синем комбинезоне, фирменной кепке и с заветным гаечным ключом на тридцать два в заднем кармане. В тот день он залез в приборный отсек межпланетной ракеты класса «Земля — Никуда» — ему поручили плановую проверку датчиков давления в сливном бачке нулевой гравитации. Работа привычная и понятная: крути себе гайки да поплёвывай на изоленту.
В это же самое время по закрытой территории секретного объекта шаталась Маруся.
Вообще-то лететь в космос должен был Павлик. Накануне Маруся с мужиками в бане так душевно и с размахом провожала Павлика в экспедицию, что сам Павлик остался горизонтально отдыхать в предбаннике до следующей недели. Но если Павлика алкоголь сморил окончательно, то у рыжей бестии он лишь разбудил жажду неконтролируемых приключений.
Маруся вообще была местной достопримечательностью. Рыжая, в обтягивающих лосинах леопардовой расцветки, выставлявших наружу все её анатомические нюансы, она наклюкалась в хлам дешёвым, но убойным коктейлем из джина, тоника и аптечной настойки боярышника.
Как она прошла через КПП с вооружённой охраной? Элементарно: дежурный прапорщик мгновенно обменял режимный пропуск на пол-литра этого адского зелья и три минуты бесстыжего флирта у забора. И теперь хмельная Маруся, пошатываясь, брела в сторону стартового комплекса.
Ища место, где бы эстетично поблевать или хотя бы поправить сползшую помаду, затуманенный мозг Маруси выдал гениальную догадку: открытый технологический шлюз стартующей ракеты — это не что иное, как вход в элитный женский туалет. С трудом преодолев ступенчатый трап, она ввалилась прямо в святая святых — рубку управления.
Оглядевшись вокруг мутным взглядом и приняв командирское кресло за унитаз, Маруся решила не откладывать дело в долгий ящик. Не снимая леопардовых лосин, а лишь немного их приспустив, она устроилась прямо над ажурным центральным пультом, где мягко поблёскивали индикаторы.
В этот самый момент в глаза ей бросился массивный алый тумблер.
— О, сколько тут кнопочек! — пролепетала она с заплетающейся пьяной нежностью. — А красненькая — прямо под цвет моих ноготочков!
— Маруся, блядь, не трогай консоль! — взвыл из недр обшивки Егор, чуть не проглотив зажатый в зубах металлический штифт.
Но было поздно. Пьяная туша Маруси со всей дури обрушилась грудью на главную пусковую панель, ломая тумблеры блокировки и до упора вдавливая аварийный запуск.
Заорали ревуны, в замкнутом пространстве замигали красные стробоскопы, а древняя автоматика, закодированная ещё советскими оборонщиками на случай ядерного апокалипсиса, посчитала, что началась Третья мировая война.
Двигатели взревели. Дикая перегрузка в 12 g мгновенно впечатала Егора головой в железный распределительный щит, отчего перед его глазами вспыхнули тысячи звёзд. А в рубке управления произошла катастрофа иного толка: под воздействием бешеной инерции мощный поток пролитого джин-тоника с боярышником аккурат вместе с результатами Марусиного позыва захлестнул технологический лючок у подножия консоли.
Адская химически агрессивная жидкость мгновенно затекла в незагерметизированный лоток основной магистрали. Раздался треск, из-под пола вырвался сноп ярких синих искр и клуб вонючего дыма — изоляция главного кабеля навигации мгновенно обуглилась, а сам он коротил и плавился на глазах, окончательно лишая ракету связи с родной планетой.
Следующие три недели перелёта превратились в сущий ад.
Потеряв навигационный кабель, ракета неслась через космическое пространство, как пьяный цыган на угнанной тройке. Автопилот сошёл с ума и выдавал хаотичные импульсы, а Егор, замотанный для страховки синей изолентой прямо к несущей балочной конструкции, круглосуточно пытался удерживать хоть какой-то курс. В ход шло всё: от гаечного ключа и обломков панели до швабры и затейливой матерной ругани, которой он щедро поливал отказавшие узлы управления.
Маруся в спасательной операции не участвовала. Она беспросветно дрыхла прямо на ящиках с аварийным запасом армейской тушёнки. Изредка она просыпалась, громко икала, требовала подать ей суши «Филадельфия», закатывала истерику из-за отсутствия Wi-Fi и снова проваливалась в глубокий алкогольный сон.
В конце третьей недели этот космический балаган наконец занесло в пояс астероидов между Марсом и Юпитером.
Прямо по курсу слепой и оглушённой ракеты из тьмы выплыло нечто совершенно невероятное. Это был астероид — огромный, сплошь состоящий из аномалий чёрно-бело-сине-оранжевый бублик. Он не просто летел по орбите, а каким-то постижимым только местным богам образом ощутимо искривлял пространство-время вокруг себя, из-за чего звёзды за ним расплющивались в сюрреалистичные дуги. Это и был Абсероид.
Незваные гости неслись к нему на первой космической. По всем законам физики и элементарного здравого смысла ракета должна была со всего размаха размазаться по рельефу аномального «бублика», превратившись вместе со шваброй и тушёнкой в лепёшку.
Однако за километр до поверхности произошла чертовщина. Корабль будто уткнулся в невидимую подушку из жидкого киселя: скорость мгновенно и безынерционно упала почти до нуля. На поверхности астероида сами собой разъехались массивные створки шлюза, и изувеченная посудина на удивление плавно скользнула внутрь, мягко — и даже без единого толчка — приземлившись (точнее, приабсероидившись) прямо на посадочную площадку местного ангара.
Едва опохмелившаяся Маруся протёрла глаза после бесшумной посадки и брезгливо оглядела внутренности космического ангара и мелькавших вдали аномальных местных обитателей.
— Ну и дыра, — фыркнула она, поправляя сползшие леопардовые лосины. — Егор, иди найди мне нормальный отель и кокосовый раф, а я пока посмотрю, что тут к чему.
Пока Егор отправился разбираться с местными коммуникациями и искать хоть какие-то признаки цивилизации, рыжая бестия быстро осмотрела их корабль. Оказалось, что автоматические системы ангара уже успели под завязку заправить баки ракеты гептилом, а сам корабль — вопреки отсутствию навигации — оставался вполне исправным и готовым к новому старту.
Поняв, что на этой же ракете можно со свистом убраться обратно, Маруся решила избавиться от единственного свидетеля своего космического погрома. Она технично натравила Егора на древнего ящера-прионозуха в странном квадратном озере — сказала, что местное чудище его оскорбило.
И пока Егор четыре часа без перерыва махал киркой в алой жиже и вылавливал со дна пальцами собственный костный материал, Маруся заперла шлюз той самой ракеты, дала по газам и взмыла в орбитальные выси.
Егор окончательно вернулся из воспоминаний в суровую реальность. Он сплюнул на сухую, растрескавшуюся землю Абсероида густую слюну пополам с кровью и сжал кулак в кармане, где девять выбитых зубов тихо звякнули о гаечный ключ на тридцать два.
— Ничего, лывая флюха… — со свистом и шипением пробормотал он, глядя на пустеющий горизонт, где таял выхлоп гептила с ароматом дешёвых духов. — Вемля клуглая, а Абфелоид — толоидальный. Мы ефё фтлетимфя.
Глава 3. Хромархи и Специальная Космическая Операция[править]
Выбравшись из тяжелого, багрового киселя на сушу, Егор первым делом запустил пальцы в карман и снова проверил свою импровизированную костную заначку. Девять трофейных зубов перекликались глухим костяным звуком — перекличка прошла успешно, все были на месте.
И только вытирая обрывки рабочего комбинезона от чужеродной алой слизи, Туалетов поднял глаза и заметил, что на идеально прямом, как по линейке вычерченном берегу озера всё это время кое-кто сидел. В удобных пластиковых шезлонгах, выставленных в ровный ряд прямо у самого края геометрически правильного водоёма, чинно восседали четыре гуманоида. Это были хромархи — верховные правители и единственные законные хозяева тороидального Абсероида. Каждый из них лоснился своим собственным монохромным цветом: Синий, Оранжевый, Белый и Чёрный.
Все четыре часа, пока Егор в багровой жиже ломал челюсть древнему ящеру и терял резцы, эти четыре абсеранские рожи с искренним, ничем не прикрытым кайфом наблюдали за мочиловом.
Синий хромарх лениво попёрдывал в белоснежный шезлонг и с сочным хрустом уничтожал сушёных космических клопов из глубокого картонного ведёрка. Чёрный хромарх с задумчивым видом делал пометки в кожаном блокноте, выставляя кровавой драке оценки за техничность и артистизм. Оранжевый и Белый вальяжно потягивали какие-то напитки через трубочки.
— Хорошая была битва! — подал голос Синий хромарх, не торопясь снимать тёмные солнцезащитные очки. — Очень динамично! Особенно момент на третьем часу, когда ящер тебе клыком губу порвал — я аж клопом подавился от восторга!
— Вы… вы фто, ахуели тут фмотлеть?! — взвизгнул Егор, с оглушительным свистом сплёвывая багровую слюну прямо под ножки ближайшего шезлонга. — Я четыле чафа туфку лвал в говне и клови, а вы фтулья выфтавили?!
Оранжевый хромарх, небрежно перекладывая с колен на колени кучу важных гербовых бумаг с огромными сургучными печатями, снисходительно и вальяжно отмахнулся:
— Ну не кипятись ты так, Егорка. Нам банально некогда было вмешиваться в ваши озёрные разборки, у нас тут шли важнейшие государственные процессы! Пока ты тут с ящером в слюнях да чешуе барахтался, мы провели великое историческое мероприятие — Специальную Космическую Операцию!
— Какую ефё, блядь, опелацию?! — переспросил Егор, яростно чеша окровавленный затылок и пытаясь увязать услышанное с окружающей его дикостью.
— Историческую! — торжественно возгласил Белый хромарх, с пафосом подняв вверх указательный палец в чистейшей перчатке. — Мы окончательно воссоединили исконные астероидные земли! Присоединили три новых сектора, денацифицировали кусок пустыни и провели тотальную геополитическую реконструкцию Абсероида. Видишь заборы?
Егор огляделся вокруг и только сейчас заметил, что ландшафт за его спиной выглядел так, будто по нему прошлась пьяная бригада маляров-штукатуров.
Свежеприсоединённые территории были грубо обнесены ржавой колючей проволокой, кое-как натянутой между покосившимися кольями. Границы секторов были перекрашены прямо поверх астероидной пыли масляной краской, которая ещё даже не высохла и воняла на весь тороидальный Абсероид, заглушая даже остаточный шлейф гептила и дешёвых духов.
Масштаб проведенной «реконструкции» поражал своей незамысловатой наглостью.
Синий хромарх отжал себе кусок абсолютно бесплодной пустыни, ценность которой заключалась разве что в гигантской паутине между валунами. Оранжевый просто переставил пограничный столбик на два метра вглубь чужого огорода, безапелляционно прирезав себе полосу сухой земли. Белый обнёс ленточками кучу камней, обьявив её новым национальным достоянием. А Чёрный хромарх успел наклеить на ближайший к озеру валун кривую бумажку с надписью: «Занято под элитный пустырь».
— Вы плофто пелеклафили пыль и вогнали фтолбы! — зашипел Егор, чувствуя, как от невообразимой абсурдности происходящего закипают остатки его мозгов. — А леконфтлукция где?! Где нолмальные доложки?! Где хавчик?!
— Это нулевой этап, Егорка! — назидательно поднял палец Чёрный хромарх, с чувством выполненного долга закрывая свой блокнот с оценками за артистизм. — Главное — заявить суверенитет и красиво нарезать карту. А то, что тут ни черта не работает и кругом говно — так это временные трудности геополитического масштаба. Наслаждайся обновлённым Абсероидом!
Егор перевёл взгляд с наклеенной на валун бумажки «Занято под элитный пустырь» на свежевыкрашенную масляной краской пыль под ногами, а затем — на ровный ряд довольных инопланетных рож в шезлонгах. В кармане робы снова звякнули о тяжелый гаечный ключ девять выбитых костных фрагментов.
Сантехник-электрик высшего разряда окончательно понял две вещи: во-первых, никакой цивилизованной инфраструктуры и еды от местных властей он не дождётся, а во-вторых, чтобы сбежать с этого тороидального дурдома вслед за рыжей Марусей, ему придётся рассчитывать исключительно на собственный инструмент, сообразительность и проверенную временем матерную ругань.
Глава 4. Потёмкинские стройки и два пути домой[править]
— Ты просто ничего не понимаешь в современном градостроительстве! — захлёбывался от восторга Белый хромарх, утирая засаленным платочком свою лоснящуюся лысину. — Мы сотворили здесь инновационный кластер! Инфраструктурный прорыв! Нью-Васюки космического масштаба! Экологично, эргономично, концептуально!
— Процветающий мегаполис будущего! — подхватил Оранжевый, гордо выпятив грудь. — Капитальные вложения, инвестиционный климат, синергия развития!
Егор молча сплюнул кровавый сгусток на астероидную пыль, сделав вид, что впечатлён. Затем молча отвернулся, сделал пять шагов в сторону и заглянул за ближайший угол единственной уцелевшей кирпичной стены, торчавшей посреди этого торжества геополитики.
Картина «инновационного кластера» поражала воображение своей беспощадной наготой. За углом простирался бесконечный, унылый пустырь, заросший гигантской паутиной, на которой качались редкие иссохшие космические мухи. В ржавой грязи торчали два перекошенных башенных крана, застывших в немом отчаянии еще полвека назад. Рядом зияла котлованом огромная яма, заваленная строительным мусором. Прямо в центре этой ямы торчала кривая деревянная табличка с аккуратной надписью:
"Здесь будет возведён Международный клинико-диагностический центр и сетевой бордель «Красный Фонарь». Срок сдачи — третий квартал. Прораб — Ашотик".
Ни борделя, ни клиники, ни даже самого прораба Ашотика на астероиде не было и в помине. На всём Абсероиде не просматривалось ни одной аптеки, чтобы купить банальный анальгин для развороченных и распухших дёсен, ни единого заведения с девочками, чтобы смыть тяжелейший стресс после четырёхчасовой битвы с ящером. Только грязь, ядовитые пауки, ржавые башенные краны да заброшенный долгострой.
— Какая, блядь, финелгия?! — взвыл Егор, возвращаясь к правителям и яростно размахивая сжатыми кулаками. — Тут вообфе ничего нет! Ни больницы, ни болделя! Только паутина, бафэнные кланы и говно!
— Это просто завершающая фаза первой очереди! — ничуть не смутившись, снисходительно отмахнулся Чёрный хромарх, давая знак остальным утихомирить сантехника. — Зато каков масштабный замысел! Настоящая градостроительная смелость!
Он чуть подался вперёд в своём шезлонге и добавил совершенно спокойным, деловым тоном:
— Впрочем, если тебе так уж не нравится наша реконструированная идиллия и инновационный кластер, тебя тут никто насильно не держит. Есть ровно два пути свалить с Абсероида.
Чёрный хромарх подался ближе, опёрся локтями о подлокотники шезлонга и заговорщически понизил голос:
— Путь первый: на дальнем поле стоит единственная стратегическая ракета. На ней к нам прилетели официально нанятые гастарбайтеры из Цереры. Ребята клялись и божились построить нам элитные ЖК, магазины, бордели и больницы за считанные дни, взяли аванс… ну и, сам понимаешь, растворились в тумане. А ракета осталась. Её охраняет умственно отсталый робот Калдат. Он дуб дубом, алгоритм у него прямой, как рельса. Просто убей или перехитри его — и лети на все четыре стороны.
— А втолой путь? — насупился Егор, недоверчиво сощурившись.
— Путь второй: построить собственную ракету из говна и палок прямо на местном заводе, — подал голос Оранжевый хромарх. — Но учти, сырьё придётся добывать за пределами завода. Тебе понадобятся вантуз, чтобы выкачать говно нужной консистенции, и топор — для заготовки качественных палок. К счастью, благодаря малому притяжению на Абсероиде ты легко сможешь за один заход перенести хоть несколько кубометров заготовленного материала. А уже на самом заводе, имея под рукой говно, палки и свой гаечный ключ, соберёшь летательный аппарат. Вантуз и топор можно купить в местном магазине. Без них ты сырьё тупо не наковыряешь.
Егор замер, обдумывая полученные сведения. Перспективы связываться с роботом Калдатом или же заготавливать говно и палки выглядели одинаково дико, но выбора не оставалось.
Он аккуратно пощупал через плотную ткань рабочей робы тяжёлый, надёжный силуэт гаечного ключа на тридцать два, а затем привычным движением пересчитал пальцами девять выбитых костных фрагментов в глубоком кармане. Зубы задорно звякнули друг о друга, лишний раз напомнив, что задерживаться на этом тороидальном астероиде точно не стоит.
Направление дальнейших действий обрисовывалось вполне чётко. Какой бы путь он в итоге ни выбрал, без нормального инструментария обойтись было невозможно. Вантуз и топор — вещи в хозяйстве незаменимые, а местная торговая точка могла стать первой зацепкой на пути к долгожданному отлёту с этой аномальной дыры.
Туалетов сделал шаг к шезлонгам, в которых вальяжно развалились четыре правителя, сплюнул очередную порцию густой розовой пены прямо под ноги Синему хромарху и прошипел, яростно свистя пустой десной:
— Где ваф вфывый магафин?
Хромархи переглянулись. Оранжевый лениво ткнул пальцем куда-то в сторону горизонта, где за ржавой колючей проволокой и свежевыкрашенной масляной краской пылью смутно проглядывал покосившийся барак с облупленной вывеской.
— Вон там, аккурат за элитным пустырём, — отмахнулся он. — Только на скидки не рассчитывай, Егорка. Рыночная экономика на Абсероиде жестокая, а у нас тут, сам понимаешь, суровое импортозамещение.
Глава 5. Капитошка на дожделёте[править]
Скрипя разбитой челюстью и с трудом перешагивая через ржавые обрывки колючей проволоки, Егор пробирался сквозь липкую, как сопли, паутину. Впереди смутно угадывался заброшенный котлован, за которым, если верить хромархам, находился местный торговый квартал.
Внезапно ядовито-зелёное небо Абсероида потемнело. Прямо над головой сантехника нависла тяжёлая, серая, разбухшая туча, отвратительно воняющая озоном, стоялой лужей и мокрой собачьей шерстью. Из неё тут же припустил противный, липкий и тёплый дождь, мгновенно размазавший пыль по синему комбинезону. Но это была не просто туча. Присмотревшись, Егор понял, что сама эта серая пароводяная масса служила корпусом для безумного кустарного аппарата — дожделёта. Сквозь сырую серую взвесь едва просвечивали скрытые в глубине ржавые трубы, водопроводные краны и ритмично чихающий дизельный мотор, выбрасывающий в паровой туман сизые клубы дыма.
А в самом центре этой серой тучи, находясь внутри парового корпуса и напрямую управляя её порывами, восседал Капитошка.
Это был не призрак и не бестелесный дух. Внутри облака колыхался огромный, биологически вполне себе взрослый водяной голем. Он был полупрозрачным, сотканным из стоялой воды и грязи, но на свету лоснился и отражал абсолютно все цвета радуги, словно гигантская масляная капля. При этом вела себя эта трёхметровая радужная туша как капризный, избалованный пятилетний выродок.
— Эй, Егорка, давай поиграем! — заверещал Капитошка из недр тучи мерзким, ломающимся дискантом, заставляя свой серый дожделёт зайти на вираж над головой сантехника. — Я Капитошка, а это мой дожделёт! Я с тобой делиться машиной не буду, а ты за мной бегай!
Дожделёт надрывно запердел скрытым в недрах тучи дизелем, и прямо из серого пара в землю в метре от Егора ударила ветвистая сиреневая молния, выбив сноп искр и подпалив край его синего комбинезона. Егор отскочил, сплюнул густую розоватую слюну в паутину и, набрав в грудь воздуха, прошипел во всю силу своих беззубых возможностей:
— Я не флю на тли буквы кого попало, но конклетно ТЫ этого умудлилфя вафлувыть, поэтому пофол на хуй!
Капитошка внутри тучи мгновенно замер. Его полупрозрачное грязевое лицо, лоснящееся всеми цветами радуги, перекосило от смертельной детской обиды. Нижняя губа из жидкой тины затряслась, а глаза-пузыри налились яростью.
— Ах так?! Грубиян! Плохой! — взвизгнул голем, дёргая скрытые в облаке рычаги. — Я с тобой больше не дружу, я тебя сейчас грохну! Тебе придётся поиграть со мной, если хочешь жить!
Дожделёт взревел. Из тучи целым градом посыпались фиолетовые молнии, заставляя Егора совершать немыслимые пируэты и закладывать спасительный бешеный зигзаг по растрескавшейся земле Абсероида. Свистя выбитыми зубами и уворачиваясь от разрывов, Туалетов пригнулся и припустил во весь дух прямо в сторону заброшенного котлована, крича на бегу самую изысканную матерную ругань.
Сверху раздался оглушительный грохот, и тяжелая серая туча, обдав окрестности очередным зарядом вонючего дождя, зависла аккурат над ямой долгостроя.
Оказывается, пятьдесят гастарбайтеров из Цереры вовсе не растворились в космическом тумане, как с наивной досадой думали хромархи. Все пятьдесят человек в засаленных оранжевых жилетах мирно валялись на самом дне глубокого котлована. Они лениво месили и закладывали под губу самодельный насвай, закрученный из местного говна и астероидной пыли, задорно трёкали за жизнь и полностью забили на доверенную им стройку века.
Серая туча дожделёта зависла аккурат над их головами. Из облачного тумана высунулась полупрозрачная радужная рожа Капитошки. Голем внезапно сменил гнев на милость и обратился к работягам по-хорошему — ласковым, сдобным голоском опытной воспитательницы в младшей группе детского сада:
— Ну-ка, мальчики, заиньки мои! Хватит бездельничать и пачкать ручки, давайте дружно возьмёмся за лопатки и поработаем по-хорошему! Нам ведь нужно построить красивый домик, правда?
Гастарбайтеры с Цереры синхронно подняли головы, дружно переглянулись и зашлись гомерическим хохотом. Старший бригадир в промасленной тюбетейке лишь пренебрежительно махнул на радужную тушу мозолистой рукой и сплюнул под ноги тёмный ком из говна и пыли:
— Э-э, иди гуляй, сопля жидкая! Не мешай людям отдыхать, а то высушим!
Вот тут Капитошка окончательно озверел.
— Ах так?! — визгливо рявкнул он, дёргая рычаги дожделёта и наводя на дно ямы скрытую в туче молниеносную батарею.
БА-БАХ!
Огромная сиреневая молния со свистом вломила прямо в кучу щебня в двух метрах от церерианцев. Из котлована мгновенно вылетели снопы искр, сухой насвай, рваные шлёпанцы и дикие вопли.
— Быстро за работу, лодыри! — заорал с неба голем, поддавая дизельного газу. — А не то я сейчас же слетаю к хромархам и расскажу им во всех подробностях, КАК вы тут «работаете»!
Угроза сработала мгновенно и беспощадно. Упоминание хромархов повергло гастарбайтеров из Цереры в животный, первобытный ужас перед сумасшедшим водяным ребёнком-переростком.
Работяги развили невиданную в Галактике скорость. Мастерки засвистели в воздухе со звуком штурмовой авиации. Кирпичи и цементные блоки летали прямо из ямы со скоростью зенитных ракет. Выпавший из-под губы насвай ещё не успел осесть обратно в пыль, а прямо на глазах у опешившего Егора из грязи, ржавых арматурин и липкой паутины выросли два аккуратных одноэтажных дома с плоскими крышами и настоящая, добротная лавка со строгой вывеской: «МАГАЗИНЪ. ТОВАРЫ ДЛЯ ДОМА И САДА». На всё строительство ушло сорок секунд.
Капитошка сверху удовлетворённо хмыкнул, дёрнул рычаги своего серого дожделёта и развернул аппарат. В том направлении, куда улетел Капитошка, непрерывно поливая землю под собой густой струёй вонючего дождя, тянулся длинный размокший след из свежей грязи и радужных луж — голем отправился искать, с кем бы ещё «поиграть».
Егор вытер рукавом пот с сопящего носа, привычно пощупал сквозь ткань робы тяжелый гаечный ключ и направился прямо к двери свежепостроенного магазина за покупками.
Глава 6. Куркуль Гарбузович и заминированный горох[править]
Егор подошёл к свежевыкрашенной двери лавки, на ходу протягивая руку к ручке, но упёрся носом в закрытую дубовую створку. Магазин построили ровно сорок секунд назад, и торговля внутри ещё не началась: за дверью слышался мат церерианцев, пытавшихся впопыхах расставить полки, а на ручке висела от руки нарисованная картонка: «Переучёт и технический перерыв. Открытие через час».
Помянув прораба Ашотика, всю Цереру и беглую Марусю нетихим сантехническим словом, Туалетов решил выждать время. Коротая минуты до долгожданного открытия, он отправился пошататься по округе — аккурат вдоль того самого размокшего грязевого следа с радужными лужами, который оставил улетевший на дожделёте Капитошка.
Обойдя по широкой дуге свежевозведённую гастарбайтерами лавку, Егор углубился в самый центр чёрного сектора Абсероида, известного в местных кадастрах как Блек. Здесь едкая вонь сгоревшего гептила постепенно уступала место дырявому силосопроводу и густому, непередаваемому аромату перепревшего навоза.
Прямо посреди грязи, ржавых конструкций и ядовитой паутины раскинулось аккуратное, изумрудно-зелёное гороховое поле. Оно смотрелось в этом мрачном месте настолько инородно, будто его аккуратно вырезали из другой, сытой и мирной вселенной, а затем приклеили на астероидную пыль эпоксидной смолой.
На краю поля стоял его хозяин — фермер Гарбузович. Выглядел он впечатляюще: плечистый, смуглый, а его огромная, сплюснутая с полюсов голова была шишковатой, желтоватой и удивительно похожей на спелую тыкву. Из глубоких карманов его засаленного ватника зловеще торчали бухты сапёрного провода, а из нагрудного отворота видна была коробка с надписью «Капсюли-детонаторы № 8».
Гарбузович отличался феноменальной, доведённой до глубокого психоза жадностью. Чтобы ни одна падла — будь то пролетающий мимо гигантский космический паук, заплутавший хромарх или случайный оборванный прохожий — не смела сорвать с его грядки даже половинку стручка, этот астероидный кулак проделал поистине титаническую работу.
Он лично, собственными мозолистыми руками, подвязал к каждому отдельному ростку сочного гороха по настоящей противопехотной мине. Растяжки и тончайшие сапёрные проволочки переплетали изумрудное поле такой густой, непроницаемой сеткой, что даже местным астероидным мухам приходилось перемещаться над грядками строго по транспортиру, выверяя углы наклона и держа в передних лапках миниатюрный сапёрный щуп.
Сами стручки выглядели тугими и заманчиво налитыми, но над каждым из них, точно дамоклов меч, качалась зацепленная за усики боевая чека. Чуть качнётся росток от неловкого движения или дуновения ветра — и полсектора Блек мгновенно взлетит на воздух вместе со всем урожаем.
Однако Гарбузовича подобный расклад ничуть не смущал. В его кулацкой философии тотальное уничтожение астероида выглядело куда предпочтительнее, чем утеря хотя бы одного-единственного сладкого стручка.
Егор внимательно оглядел размокшие от дождя грядки, поросшие изумрудными плетьми, и мгновенно раскусил кулака. Сантехник с огромным жизненным опытом сразу понял, что Гарбузович просто нагоняет жути: может, горох и был заминирован, но для детонации явно требовалось нечто посерьёзнее дуновения ветерка или пролетающей мухи. Иначе тот шквал вонючей воды, который только что обрушил на огород Капитошка, уже давно отправил бы весь этот аграрный сектор вместе с хозяином на околоастероидную орбиту.
Гарбузович тем временем с глубоким подозрением уставился на Туалетова. Он прищурил глаза через узкие щели и складки своей шишковатой тыквенной корки и недовольно буркнул:
— Слышь, оборванец… А с какого перепугу Капитошка вообще припёрся сюда и прошёл аккурат над моим полем? По официальному прогнозу погоды этот тучевод сегодня должен был поливать сектор Бельк!
— Я его на тли буквы пофлал, — честно признался Егор, свистя пустотами в распухшей десне. — Вот у него малфлут и пелефтлоилфя. Зато оголод тебе по-быфтлому полило.
Фермер перевёл взгляд с напитавшихся влагой стручков на удаляющийся след из радужных луж, а затем снова на сантехника. На его тёмном лице промелькнуло подобие скупой кулацкой благодарности.
— Хм. Это моё гороховое поле. Респект за дождь!
Егор вытер сопящий нос засаленным рукавом комбинезона, сплюнул густую розоватую слюну прямо сквозь провал в челюсти и радостно прошамкал:
— Ух ты, лефпект! А лывая флюха только дивлефпекты получала!
Гарбузович смерил беззубого сантехника долгим, холодным и оценивающим взглядом. Быстро окинув взором его драную робу, окровавленное лицо и торчащий из кармана гаечный ключ, кулак мгновенно понял, что взять с этого ободранного пришельца особо нечего. А если и было что взять, то подходящего повода пока не нашлось.
Поняв это, Гарбузович моментально потерял к сантехнику всякий интерес.
— Спасибо, ты свободен, — сухо отрезал фермер, отворачиваясь обратно к грядкам и заботливо поправляя чеку на ближайшем ростке.
Егор оторопел. По логике любой нормальной истории, квеста или хотя бы базового здравого смысла, после того как он фактически обеспечил полив этого подрывного огорода, ему полагалась какая-то награда: путеводный указатель, квестовый предмет или хотя бы тарелка горячего горохового супа.
— В фмыфле?! — возмущённо взвизгнул он, размахивая руками и свистя дырками в десне. — А как вэ игловой плоглефф?! Я тут под молниями клутилфя, чуть втолой лаф челюфть не офтавил!
Шишковатая тыквенная голова Гарбузовича медленно повернулась назад. В глубоком разрезе рта блеснула хищная, сухая ухмылка:
— Тебе мало того, что ты остался жив? Сделай шаг направо — и узнаешь, как работают мои мины на практике. Уёбывай, милок, не мешай урожай охранять.
Егор взглянул прямо под ноги: аккуратно замаскированный под сочным гороховым листиком нажимной датчик с тончайшим усиком зловеще блеснул в грязи. Сантехник тяжело сглотнул слюну и быстро решил, что спорить с тыквоголовым подрывником-психопатом — себе дороже.
Развернувшись на пятках, Туалетов поплёлся по собственным следам обратно к недавно построенному магазину, надеясь, что технический перерыв уже закончился и обстановка в лавке окажется хотя бы немного адекватнее.
Но он ещё не знал, с какой беспощадной математикой ему придётся там столкнуться.
Глава 7. Арифметика Абсероида[править]
Свежепостроенная лавка пахла мокрым кирпичом, церерианским насваем и лютой, бескомпромиссной торговой наживой. За массивным дубовым прилавком восседал продавец — угрюмый гуманоид с четырьмя глазами, расположенными строго по вертикали, и физиономией человека, который только что с потрохами проглотил целую тарелку спелых лимонов.
На деревянной полке за его спиной красовались заветные артефакты: потёртый резиновый вантуз с деревянной рукоятью и тяжелый, слегка ржавый топор. На них висел аккуратный прайс-лист, выведенный куском мела на дощечке:
- Вантуз — 1 зуб
- Топор — 2 зуба
- Вантуз + Топор — 12 зубов
Егор залез в глубокий карман робы, нащупал там горсть собственного костного материала, отсчитал ровно три штуки и с гордым видом выложил их на прилавок. Зубы звонко цокнули по сухой дубовой доске.
— Мне вантуф и топол, — потребовал Егор, сплёвывая кровь прямо на свеженастланный пол.
Продавец медленно опустил все четыре глаза на три зуба, выложенные на дубовую доску, затем перевёл взгляды на Егора, и на его морде выразилось глубочайшее, искреннее отвращение.
— Ты чё, дядя, совсем страх потерял? — густым басом пророкотал торговец. — Вантуз — один зуб. Топор — два зуба. Итого с тебя двенадцать зубов. А ты мне тут три катышка выкатил?
Егор аж присел от такой наглости. Глаза его вылезли на лоб, а из разбитой челюсти вырвался свистящий каскад яростного возмущения:
— Фто ва ебанутые цены у ваф в магавине?!
— 1+2=12 — это все с рождения знают, — хладнокровно отчеканил продавец, сложив мозолистые руки на груди и сверкнув всеми четырьмя вертикальными глазами. — Чистая математика.
— Какая, нахуй, чифтая математика?! — взвизгнул Егор, яростно тыча пальцем с обломанным ногтем прямо в прилавок. — Это вэ не стлоковая конкатенация, а элементалная алифметика! Плофтейфые бавовые плавила алифметики, ёбаный ты калась! Один плюф два будет тли! Т-Л-И! Откуда двенадцать?!
— Слышь, земляничный жулик, ты мне тут земную арифметоту не шепелявь! — рявкнул продавец, опёршись руками о прилавок и нависая над героем. — У нас на Абсероиде своя финансовая система! Вантуз рядом с топором на одном чеке стоит один-два! То есть двенадцать! Небось, хотел нагреть местный малый бизнес на девять зубов?!
Торговец загрёб с прилавка один зуб Егора, мгновенно сжал его в кулаке и со всей дури швырнул резиновый вантуз прямо Егору в грудь.
— За один зуб — держи свой вантуз! — гаркнул продавец, вылезая из-за прилавка и хватая Егора за загривок. — А за попытку финансового подлога и оскорбление правил арифметики — пошёл вон! Продавцы тебя запомнили и больше на порог не пустят!
БАМ!
Дверь лавки с треском распахнулась, и Егор Туалетов в красивом крутом пике вылетел на улицу, перевернулся через голову и впечатался лицом прямо в размокшую грязь. Рядом изящно приземлился резиновый вантуз.
Егор медленно поднялся с колен, сплюнул попавшую в рот липкую грязь вместе с кровавой слюной и вытер засаленным рукавом сопящий нос. Рядом, частично погрузившись резиновой чашей в жидкую лужу, лежал его свежеприобретённый трофей — потёртый деревянный вантуз.
Туалетов подхватил инструмент за рукоять, бережно отряхнул его от астероидной пыли и тяжело вздохнул. В одной руке у него теперь был сантехнический грааль, а в кармане — оставшийся собственный костный капитал. Еще раз тщательно обшарив дырявую подкладку синего комбинезона, он выгреб на грязную ладонь все имеющиеся «наличные».
Зубов оставалось ровно восемь.
Ситуация складывалась паршивая. Сам по себе топор стоил два зуба, и «денег» на него формально хватало с лихвой. Однако четырёхглазый торговец чётко дал понять, что внёс Туалетова в пожизненный чёрный список за «финансовый подлог» и отказ признавать законы строковой конкатенации. А без топора заготовить качественные палки для постройки ракеты из говна и палок было попросту невозможно.
Егор яростно сжал вантуз в кулаке, поглядел на закрытую дверь лавки и свистяще прошипел сквозь провал в десне:
— Ну ничего, фука… Вы у меня ефё увнаете, фто такое деление на ноль по-плолеталфки!
До постройки спасительного аппарата и побега с проклятого Абсероида ему не хватало всего одного инструмента и полной, беспощадной перестройки всей местной финансово-математической системы.
Глава 8. Лососнувший тунца Егорка[править]
Потирая ушибленный зад и крепко сжимая в руке купленный вантуз, Егор сидел на заплёванном бордюре возле закрытых дверей лавки. Из провала в его опухшей челюсти вырывалось глухое, обиженное шипение.
— Фто ва ебанутые цены у них в магавине?! — в сердцах крикнул он в ядовито-зелёное пространство Абсероида, когда из-за угла неторопливо выплыла шишковатая тыквенная голова Гарбузовича. Фермер пожевал губами, поправил засаленный ватник и снисходительно хмыкнул:
— 1+2=12, всё правильно. Чистая математика Абсероида.
— Но это вэ не string, а integer! — взвизгнул Егор, яростно размахивая вантузом перед носом фермера. — Вы фто тут, вообфе вфе с ума пофходили?!
— В любом случае четырёхглазый тебя запомнил и больше на порог не пустит, — отрезал Гарбузович, закладывая мозолистые руки за спину. — Но у меня есть идея…
— Фто ва идея? — моментально навострил уши Егор, переставая махать деревянной рукоятью.
— Отдай мне кепку и гаечный ключ. Без них ты — обычный беззубый оборванец, рядовой представитель вида Homo sapiens. У продавца глаза по вертикали стоят, у него распознавание лиц на профессиональные атрибуты заточено. Без робы и инструмента он тебя в жизни не узнает. Зайдёшь, купишь топор за два зуба и спокойно выйдешь.
Егор подозрительно сщурил глаза, перебирая в голове варианты. Выбор был, мягко говоря, невелик: либо остаться без топора и гнить на этой астероидной свалке вечно, либо довериться тыкволицему подрывнику. Тяжело вздохнув, Туалетов вытянул из заднего кармана комбинезона заветный, тяжёлый гаечный ключ на тридцать два и снял с головы промасленную сантехническую кепку. Протянув артефакты куркулю, он прошамкал:
— Только фмотли у меня, без глупофтей!
Гарбузович с молниеносной прытью цапнул вещички, на секунду отвернулся к ближайшему сугробу из липкой паутины и говна и что-то там ловко припрятал — в надёжном, только ему известном тайнике. Вернулся он к сантехнику уже с абсолютно пустыми руками и честнейшими прорезями для глаз на сухой тыквенной корке.
Сменив облик и лишившись своих главных привычных атрибутов — промасленной сантехнической кепки и тяжёлого ключа на тридцать два, Егор превратился в самого обыкновенного, ничем не примечательного и оборванного бродягу. Спрятав в самом глубоком кармане купленный вантуз, сантехник решительно толкнул деревянную дверь лавки.
Четырёхглазый продавец даже не подскочил. Окинув беззубого оборванца абсолютно скучающим взглядом своих вертикально расположенных глаз, он не признал в нём недавнего «земляничного жулика». Не произнеся ни единого слова, торговец деловито заграбастал с вытянутой ладони Егора два костных катышка. В кармане Туалетова осталось ровно шесть зубов.
Спустя секунду на прилавок с глухим металлическим звоном плюхнулся заветный артефакт — тяжёлый, слегка ржавый топор. Продавец лишь равнодушно отвернулся к полкам, давая понять, что сделка завершена. Схема сработала безупречно!
Сияющий от счастья Егор выскочил на улицу с топором наперевес и на радостях подбежал к ждавшему у забора Гарбузовичу.
— Вфё получилофь, фпафибо! — радостно прошамкал герой, пытаясь улыбнуться провалом в челюсти. — А тепель велни мне кепку и гаечный ключ.
Гарбузович медленно склонил свою шишковатую тыкву набок, смерил Егора ледяным, отстранённым взглядом абсолютного незнакомца и произнёс подчеркнуто аккуратным, вежливым голосом:
— Мужчина, Вы кто? Я Вас впервые вижу.
На секунду над Абсероидом зависла звенящая, мёртвая тишина. Слышно было только, как где-то вдали шипит пробитый силосопровод и капает вонючая грязь после дождя.
У Егора внутри словно с треском оборвался силовой магистральный кабель. В ушах загудело, кровь хлынула к разбитой челюсти, а глаза мгновенно налились багровой, безудержной пехотной яростью. Градус вероломства и кулацкой циничности переплюнул всё, с чем сантехник сталкивался за годы работы в ЖЭКе.
— ГОНИ КЛЮЧ, ПИДОЛ! — взвизгнул Егор с такой дикой силой, что с ржавых башенных кранов на горизонте густо осыпалась окалина. — ПОКА Я ТЕБЕ ТЫКВУ НЕ ЛАВНЁФ!
Не помня себя от бешенства, Туалетов даже не вспомнил про зажатый в другой руке топор. Он отвёл руку назад, размахнулся от самого плеча и со всей дури всадил свой тяжёлый, покрытый мозолями пролетарский кулак прямо в центр сухой оранжевой физиономии Гарбузовича.
БАМ-М-м-м…!
Раздался такой гулкий, пружинящий звук, будто тяжёлой деревянной колотушкой со всего маху влупили по литому автопокрышечному баллону.
Егор дико взвыл от вспыхнувшей боли: костяшки его пролетарского кулака мгновенно онемели, а сама кисть с треском отскочила рикошетом назад, едва не выбив ему оставшиеся коренные зубы. Сантехник согнулся в три погибели, баюкая отбитую клешню и судорожно прижимая к груди отвоёванные вантуз с топором.
У Гарбузовича была феноменально толстая, плотная и упругая оранжевая кожа. Любой удар — хоть кулаком, хоть чугунным ломом — тупо гасился этой невероятной природной бронёй, а сам кулак врезался в неё, будто в монолитный кусок высококачественного каучука. А заветная кепка и гаечный ключ на тридцать два, разумеется, уже покоились в глухом кулацком тайнике под трёхметровым слоем заминированного навоза.
Гарбузович даже не почесался. Он лишь аккуратно поправил воротник засаленного ватника, смерил стенающего и трясущего рукой сантехника холодным оценивающим взглядом и спокойным, ядовито-вежливым тоном отчеканил:
— Ничего Вы мне не сделаете, беззубый мистер. Лососните тунца.
Глава 9. Весельчак Укр[править]
Потирая израненный об упругий тыквенный лоб Гарбузовича кулак, Егор брёл сквозь липкие тенета астероидной паутины. В одной руке он судорожно сжимал резиновый вантуз, в другой — тяжёлый, слегка ржавый топор. Настроение у сантехника было паршивым, но цель оставалась неизменной: нужно было любой ценой достать материалы и построить космический корабль.
Наконец за высоким холмом из прессованной космической пыли и ржавой стружки показался главный промышленный объект сектора — говноперерабатывающий завод им. Юпитера.
Это было поистине циклопическое сооружение из потемневшего от времени кирпича, дымящих в ядовитое небо труб и изъеденных коррозией автоклавов. Из огромных бункеров на засаленные конвейерные ленты непрерывным потоком сыпались подсохшие какашки всех форм и размеров, а тяжелейшие чугунные вальцы с оглушительным грохотом перемалывали сухие ветки в однородное конструкционное сырьё.
На массивной двери главного цеха висела огромная чугунная табличка, которая будто специально ждала именно Егора Туалетова:
«ДЛЯ ЗАВОДСКОЙ СБОРКИ РАКЕТЫ ИЗ ГОВНА И ПАЛОК НЕОБХОДИМЫ: 25 ТОНН ГОВНА, АРМИРОВАННОГО ПАЛКАМИ, И ГАЕЧНЫЙ КЛЮЧ! СБОРКА БЕЗ КЛЮЧА КАТЕГОРИЧЕСКИ ЗАПРЕЩЕНА!»
Егор шагнул внутрь главного цеха. Завод встретил его оглушительным грохотом поршней, скрежетом шестерён и таким густым, концентрированным амбре фекального производства, что у сантехника мгновенно выбило слёзы из обоих глаз, а в горле застрял сухой комок.
Но Туалетов был не просто случайным оборванцем, а заслуженным мастером высшего разряда с феноменальным чутьём на железо и гидравлику. Смахнув слёзы и решительно проигнорировав адскую вонь, он принялся дотошно изучать устройство завода и особенности местных инженерных технологий. Паровые котлы, гидравлические прессы, чугунные вальцы и шестерни из сыромятной стали… Взгляд Егора, опытного технаря, быстро зацепился за технологические обходные пути.
— Обявательно иметь гаечный ключ… — проворчал он себе под нос, ощупывая рассохшийся распределительный щит главного пресса. — Ага, щаф! Я фобелу лакету и беф ключа! Чифтый колховный хакинг!
Замысел был поистине гениален в своей пролетарской простоте, но запахи прессованного дерьма в главном цеху стали совсем невыносимыми. У Егора закружилась голова, перед глазами поплыли тёмные круги, а в дёснах отвратительно заныли оставшиеся коренные зубы.
— Надо выйти подыфать… — прохрипел он, судорожно зажимая нос свободным локтем.
Егор сделал всего десять шагов за пределы территории завода, выскочив на относительно свежий — по непритязательным меркам Абсероида — воздух и жадно хапнув его открытым ртом. И ровно в эту секунду ядовито-зелёное небо над заводом разродилось диким, оглушительно нарастающим свистом.
С высоты птичьего полёта, словно чудовищный стальной метеорит, вниз нёсся гигантский дрон-камикадзе. На его хищном носу серым строительным скотчем была намертво примотана огромная бетонобойная боеголовка.
— А-А-А-А-А-А-А-А!
БА-А-А-А-А-М-М-М-М-М!!!
Вспышка слепящего огня разорвала горизонт. Мощнейшая ударная волна сбила Егора с ног, подкинула в воздух и прокатила по размокшей грязи на три метра.
Главный корпус говноперерабатывающего завода им. Юпитера на глазах превратился в пылающий ад: толстые кирпичные стены словно слизнуло языком пламени, массивная крыша с грохотом рухнула внутрь, а от уникального пресса осталась лишь куча обугленных руин.
Егор подскочил на ноги, лихорадочно вытирая сажу с перемазанного лица, и в полном шоке обомлел.
Прямо над дымящимися руинами завода на покачнувшемся металлическом столбе неожиданно зашипел, захрипел и затрещал уцелевший чугунный репродуктор.
— Бля, давэ вдефь двоны летают! — в ужасе взвизгнул Егор, судорожно прижимая к груди топор и вантуз.
Из динамика раздался сдавленный, хрюкающий смешок и донёсся голос с характерным акцентом:
— Це я, оператор БПЛА Весельчак Укр! Що, москалику, злякався?
— Я из Абфулдоляндии, а не из Лоффии, плидулок! — взвыл Егор, яростно размахивая топором в сторону шипящего динамика.
— Усі ви, кацапи, однакові! — злорадно и безапелляционно отрезал голос из репродуктора. — Геть з нашої землі! Героям сала!
Репродуктор захлебнулся статическим треском и окончательно заглох. А в небе за горизонтом в этот самый миг поднялся зловещий, нарастающий жужжащий гул.
Из подземного логова партизана Весельчака Укра в воздух поднимались десятки новых дронов. Они были значительно меньше первого камикадзе, но их жужжащий рой буквально закрыл собой всё ядовито-зелёное небо Абсероида, синхронно нацеливая свои красные инфракрасные окуляры прямо на беззубого Егора.
Глава 10. Сделка века с Гарбузовичем[править]
Жужжащий рой квадрокоптеров обрушился на Егора с нечеловеческой, кошмарной неотвратимостью. Это были уже не громоздкие крылатые ракеты, а юркие, злобные FPV-дроны, из микроскопических динамиков которых на всю округу доносилось оглушительное матерное хрюканье, свист и лихие марши.
Егор яростно пытался отбиваться. Он вслепую махал в воздухе тяжёлым топором, пытался сбить вражеские пепелацы резиновой чашей вантуза, но дронов было слишком много. Они заходили на цель парами, звеньями и тройками, закладывая виражи прямо над обгоревшей плешью сантехника.
Изнемогая от усталости и захлёбываясь соплями, Туалетов заметался по грязи и забился в отрезок ржавой канализационной трубы, валявшейся на самом краю заброшенного астероидного котлована. Казалось, здесь толстый слой металла защитит его от воздушной угрозы.
Но надежда на укрытие сгорела за какую-то долю секунды. Юркая четырёхпропеллерная дрянь ловко повернулась боком и на полном ходу влетела прямо внутрь трубы вслед за сантехником, поджарив Егору задницу точечным кумулятивным подрывом.
— А-а-а-а, фука! — взвизгнул Туалетов и пробкой выскочил из противоположного конца трубы с дымящимися, обугленными штанами.
Вытирая сажу и дико подпрыгивая от боли, сантехник отчётливо понял: ещё пара минут такой воздушной карусели — и от него останется только горстка подпалённого пепла да восемь костных катышков. Гордость пролетарского сантехника дала трещину. Нужно было срочно просить о помощи.
Задыхаясь и на ходу отмахиваясь топором от очередного дерзкого захода вражеского FPV-пепелаца, Егор помчался к квадратному озеру, где на шезлонгах по-прежнему вальяжно отдыхали четыре хромарха, а рядом в тёплой воде лениво отмокал гигантский древний прионозух.
— Помогите! — визгливо прошамкал Егор, с ходу падая на багровый астероидный песок и судорожно закрывая голову резиновой чашей вантуза. — Там длоны! Убьют вэ, гады!
Синий хромарх мельком взглянул на прибежавшего оборванца поверх тёмных солнцезащитных очков и брезгливо поморщился:
— Слышь, милок, ты кто вообще такой? Какое-то ободранное быдло без кепки и без инструмента. Пошёл вон отсюда, не порти нам исторический пейзаж!
— Да это вэ я, Еголка! — яростно заверещал Туалетов, тыча себе в грудь пальцем с обломанным ногтем.
— Какой ещё Егорка? Егорка был с ключом на тридцать два и в промасленной сантехнической кепке, — вальяжно отмахнулся Белый хромарх, потягивая ядовитый коктейль через соломинку. — А ты — просто подозрительный бомж. Ящер, сунь ему!
Прионозух с готовностью вынырнул из тины и с оглушительным, чудовищным щелчком сомкнул зубчатую пасть буквально в пяти сантиметрах от носа Егора, едва не откусив ему остатки обгоревшей челюсти. Окончательно поняв, что от власть имущих никакой защиты ждать не приходится, Туалетов, дико подпрыгивая от всё ближе гремящих за пятками взрывов, рванул в сектор Блек — прямиком к заминированному гороховому полю Гарбузовича.
Гарбузович стоял у своего забора, с нескрываемым удовольствием и легким сочувственным прищуром наблюдая, как жужжащий рой кошмарит беглого сантехника.
— Дядя Галбувович! Фпафите! — в полном отчаянии умолял Егор, падая перед тыквенным куркулём прямо в грязь. — Выключите этих птафэк!
Гарбузович медленно поправил ватник, вальяжно скрестил руки на груди и холодно отчеканил:
— А с какого это перепугу я должен помогать какому-то быдлану, который прыгал на меня с кулаками и говорил мне всякие гадости?
Егор зажмурился. Над самым его ухом со злобным писком прожужжал очередной дрон, готовясь зайти на бреющий таран. Спасение собственной жизни было куда дороже остатков пролетарского самоуважения.
— Иввините меня, дядя Галбувович! — запричитал Егор, ползая на коленях и яростно стуча себя кулаком в грудь. — Я был неплав! Я необлавованный дулак! Вемляной дебил! Иввините, повалуйфта, я больфэ никогда не буду махать кулаками! Вы фамый умный и клафивый фелмел на афтелоиде!
Гарбузович выдержал величественную паузу, наслаждаясь каждым мгновением чужого искреннего унижения, после чего благодушно раскинул руки:
— Ну ладно, так и быть! Соизволю пойти навстречу. В конце концов, я человек добрый, мягкий, отходчивый и совсем не злопамятный.
Фермер нагнулся и с кряхтением вытащил тяжёлую, обшарпанную железную коробку с торчащими в разные стороны мятыми антеннами. На боку артефакта кривой масляной краской было выведено: «РЭБ "Полынь-1M". Б/У».
— Но бесплатный сыр бывает только в мышеловке, — зловеще пропыхтел Гарбузович. — У меня есть глушилка дронов, но в твой ограниченный инвентарь она тупо не влезет. Придётся расчистить место. Отдавай мне на хранение все свои оставшиеся инструменты: вантуз, топор и кирку!
— Как вфе?! — ахнул Егор, судорожно сжимая в руках свой последний рабочий арсенал. — А чем я фыльё для фболки лакеты добывать буду?!
— Ну, не хочешь — лети на Землю частями, — равнодушно хмыкнул Гарбузович, делая вид, что убирает железяку обратно.
Прямо над головой Егора очередной FPV-дрон переключился на боевое пике, заходя в смертельный таран.
— ХОЛОФО! ЗАБИЛАЙ! — в полном ужасе взвизгнул Егор, швыряя к ногам кулака вантуз, топор и снятую с пояса кирку.
Гарбузович с молниеносной ловкостью сгрёб инструменты и моментально переправил их в свой глухой заминированный тайник. После чего, милостиво улыбнувшись, протянул тяжеленный металлический ящик сантехнику.
Егор цапнул РЭБ обеими руками, едва не провалившись в грязь под его тяжестью, и лихорадочно нащупал на корпусе ржавый тумблер. С яростным хрустом он переключил его в положение «ВКЛ».
Из коробки вырвался оглушительный, сверлящий уши ультразвуковой писк, и по воздуху густо понесло горелой канифолью. В тот же миг заходивший на таран дрон задёргался в воздухе: его пропеллеры сбились с ритма, красные окуляры замигали, и пепелац волчком закружило в стороне.
Рой продолжал кружить и жужжать в ядовитом небе Абсероида, но преодолеть защитное поле «Полыни-1М» без потери управления вражеские птицы больше не могли. Стоило любому из них подлететь к Егору ближе чем на десять метров, как его система управления мгновенно сходила с ума, швыряя дрон в хаотичный занос.
Егор остался абсолютно голым в плане снаряжения — без ключа, без кепки, без вантуза, без топора и без кирки. Зато с тяжеленным, воняющим горелым паяльником куском бэушного РЭБа в обнятых руках и с невидимым защитным куполом над головой.
Глава 11. Логово оператора БПЛА[править]
Тяжёлая, воняющая палёными микросхемами и канифолью коробка переносного РЭБа в руках Егора гудела, как растревоженный улей. Пронзительный ультразвук всё так же исправно разгонял остатки механических шмелей, но Туалетову простого спасения было мало. Натирая кровавые мозоли на руках, беззубый сантехник упорно шёл вперед, ориентируясь по вспыхивающим на приборной панели зелёным светодиодам — прямо к источнику несущей частоты.
Пеленг привёл его к самой унылой и неприметной куче строительного мусора на дальнем краю сектора. Среди битого красного кирпича и торчащей во все стороны ржавой арматуры выделялся старый канализационный люк, щедро и неряшливо обклеенный жёлто-синей изолентой.
Из-под щелей двери сдавленно доносилось дородное, сытое хрюканье, дребезжащий треск и густой, наваристый запах жареного сала.
— Ну вфё, фвинья, отлеталафь… — прошипел Егор, сплёвывая густую розовую слюну прямо на раскалённую металлическую антенну РЭБа.
Швырнув ставшую ненужной тяжеленную глушилку в грязь, Туалетов отступил на пару шагов, разбежался и со всей пролетарской дури всадил подкованный пяткой сапог в ржавую крышку люка.
КРАК-К-К!
Сорванная с петель пробитая крышка с оглушительным грохотом рухнула внутрь. Егор влетел в секретный бункер, как разъярённый шершень в стеклянную банку.
Внутри нора Весельчака Укра поражала своим высокотехнологичным убранством. В центре подземного бункера стояло мягкое анатомическое кресло, окружённое сплошной стеной из мигающих ЖК-мониторов. На экранах транслировались сетки прицелов, виды с FPV-дронов и трехмёрные карты Абсероида. Кругом висели украинские флаги, стояли ящики с литий-ионными батареями, а на столе дымилась огромная сковорода со шкварками.
В кресле, надев огромные светящиеся наушники и сжимая в руках джойстик, восседал сам Весельчак Укр. При виде ворвавшегося оборванца с налитыми кровью глазами и зияющим провалом в челюсти оператор БПЛА от неожиданности поперхнулся шкваркой:
— Що за нах?! А де мої дрони?! Чому сигнал впав?!
— Я ТЕБЕ ФЕЙЧАФ ФИГНАЛ В ВОПУ ВАБЬЮ, ПАДЛА! — заверещал Егор на пределе оставшихся связок.
Егор бросился вперёд. У него не было ни кирки, ни топора, ни даже резинового вантуза. В его распоряжении оставались только две голые, сбитые в мясо пролетарские кувалды, движимые чистой, дистиллированной яростью.
Драка превратилась в суровое и гротескное мочилово.
Первым же хуком слева Егор снёс с головы оператора наушники вместе с куском свиного уха. Весельчак Укр взвизгнул, попытался отмахнуться геймпадом, но Туалетов провёл молниеносный апперкот снизу вверх. Задрав свои свиные копыта, Весельчак с треском влетел спиной прямо в стойку с видеокартами.
БАМ! ХРЯСЬ! ЩЁЛК!
По бункеру посыпались искры. Загорелась изоляция кабелей. Вспыхнул один из центральных мониторов. Егор, не обращая внимания на адскую жару и валивший из системников чёрный дым, молотил оператора БПЛА с точностью автоматического отбойного молотка.
— Це не по правилах! — верещал Весельчак Укр, закрывая харю окровавленными лапами и пытаясь уползти под стол. — Я оператор! Я дистанційно повинен!
— А МНЕ ПОХУЙ, ФТО ТЫ ПОВЫНЭН! — орал Егор, всаживая кулак за кулаком прямо в лоснящуюся тушу. — ВА ВАВОД И ДЛОНЫ!
Дым застилал глаза. Кадры драки сменялись с калейдоскопической быстротой: удары кулаками в челюсть, выбитые кнопки клавиатуры, летящие в разные стороны шкварки, пылающие сине-жёлтые флаги и дикие ультразвуковые свиные вопли.
Егор крушил всё вокруг до тех пор, пока главная консоль управления дронами не взорвалась каскадом ярких искр и салютов, а сам оператор БПЛА не затих на разбитом кафельном полу среди дымящихся обломков своей высокотехнологичной норы.
Над поверженным Весельчаком Укром, зацепившись за обугленный кронштейн треснувшего монитора, печально заболтался белый тряпочный лоскут — символ полного, абсолютного и безоговорочного разгрома. Егор стоял посреди пылающего бункера, тяжело дыша через нос и вытирая сажу вместе с чужой кровью со лба. Сбитые в мясо руки гудели, как отработанные на пределе поршни, но главное было сделано: рой вражеских дронов в ядовито-зелёном небе Абсероида навсегда прекратил своё существование.
Глава 12. Трофейный Говносрун[править]
Густой, сизый дым от сгоревших видеокарт и палёных сине-жёлтых флагов постепенно рассеивался по подземному бункеру. Егор стоял над поверженным Весельчаком Укром, судорожно дуя на сбитые в кровь костяшки пальцев. Каждая попытка перевести дыхание сопровождалась унылым свистом через девятизубую брешь в дёснах.
Пора было проводить шмон. Внимательно осмотрев разгромленное логово партизана, Егор с досадой сплюнул: все высокотехнологичные гаджеты превратились в обугленный хлам, а салом из сковородки можно было только смазывать петли.
Продолжая обшаривать углы, сантехник наткнулся на аккуратно сложенную вышиванку с пышным орнаментом, а рядом — на пухлый том в жестком переплёте. На обложке значилось имя автора: С. Бандера, а ниже красовалось название — «Моя боротьба». Егор полистал пожелтевшие страницы с кривыми пометками на полях и хмыкнул: по своему содержанию, безапелляционной злобе и риторике книга один в один напоминала знаменитый фолиант Адольфа Гитлера «Майн кампф».
— Товэ мне макулатула… — пробормотал Егор и брезгливо отбросил фолиант в кучу дымящихся кабелей. И тут из дальнего, полутёмного угла норы, прятавшегося за густой маскировочной сеткой, раздался странный, ритмичный металлический стрекот.
Егор подошёл ближе, ухватился за края маскировочной сетки и с треском содрал её. За сеткой скрывалась массивная клетка из толстых стальных прутьев, плотно накрытая тяжёлым чехлом из брезента. Недолго думая, сантехник рывком сдёрнул ткань.
В клетке на ржавой жёрдочке сидела птица. Её внешность способна была повергнуть в глубокий шок любого квалифицированного орнитолога: жирное, надутое, словно пернатый кожаный мяч, туловище, покрытое редкими перьями грязно-фиолетового цвета, и несоразмерно огромный, массивный клюв с хищно загнутым кончиком. Безумные, выпученные глаза твари вращались в разные стороны совершенно независимо друг от друга.
Едва свет от горящих системных блоков попал на пернатую харю, птица задрала короткий хвост, выпрямилась во весь свой нескладный рост и рявкнула на весь бункер гнусавым, оглушительным, как у мегафона, голосом:
— ПТИ-ЦА ГОВ-НО-СРУН ОТ-ЛИ-ЧА-ЕТ-СЯ ГОВ-НОМ И ПРО-ИЗ-ВО-ДИ-ТЕЛЬ-НО-СТЬЮ!
Егор аж присел от неожиданности, мгновенно прикрыв уши мозолистыми ладонями.
— Фто ва олёл ебаный?! — заикаясь, прошамкал он, с крайним подозрением рассматривая орущее пернатое чудовище.
На боковой стенке стальной клетки висел засаленный планшет с пухлой стопкой документов. На верхнем листе штампом и яркой красной краской от руки было выведено: «СЕКРЕТНО. Биологическое оружие "Avis pachomica". Проект "Говносрун"».
Егор, не привыкший вникать в мелкий шрифт и канцелярскую муть, бегло пробежал глазами по первому абзацу. Документ гласил, что перед ним — редчайший инвазивный представитель фауны, выведенный в секретных лабораториях военных биологов. Главная и самая жуткая особенность ЖКТ этой твари заключалась в том, что её метаболизм работал вопреки всем фундаментальным законам сохранения массы: ровно одна съеденная горошина при прохождении через птичий кишечник преобразовывалась в одну тонну сверхплотного, концентрированного помёта.
Дальше в папке шли мудрёные таблицы с формулами, графиками загрязнения почвы и обведёнными двойным красным маркером предупреждениями об опасности уровня «Планетарный катастрофический фекалоцид». Но Егор читать эти научные бредни не стал. Пролетарию некогда заморачиваться профессорской ахинеей. Он выхватил из текста только то, что имело практический смысл: перед ним сидит уникальная птица ликвидированного врага, которая орёт прикольные лозунги и имеет крайне злой, боевой вид.
— Хм… Галбувович меня обчифтил, ключ заблал, вфё заблал… — пробормотал Егор, и в его мутном глазу вспыхнул зловещий пролетарский огонёк. — А я фебе хотя бы птичку забелу! Будет моим личным тлофеем!
Птица, словно почувствовав, что её собираются вытащить из полутёмного бункера на волю, подпрыгнула на своей ржавой жердочке, взъерошила редкие грязно-фиолетовые перья, надулась и снова разразилась оглушительным, гнусавым лозунгом:
— ПТИ-ЦА ГОВ-НО-СРУН ОТ-ЛИ-ЧА-ЕТ-СЯ ГОВ-НОМ И ПРО-ИЗ-ВО-ДИ-ТЕЛЬ-НО-СТЬЮ!
— Заткнифь, пелнатое, а то в фуп пуфю! — пригрозил Егор, замахнувшись на клетку сбитым в кровь кулаком.
Схватив массивную стальную клетку за погнутую верхнюю дужку, Туалетов с кряхтением взвалил её на плечо и с трудом вылез из разгромленного, дымящегося бункера обратно на свежий воздух.
Он не спеша прошёл по унылому пустырю Абсероида, даже близко не подозревая, что несёт на своём грязном плече биологический детонатор планетарного масштаба и абсолютного уничтожения.
Глава 13. Месть беззубого сантехника[править]
Егор с клеткой вприпрыжку приближался к аккуратно заминированному гороховому полю. На перемазанном сажей и кровью лице сантехника цвела пакостная, торжествующая ухмылка.
За низким забором, как всегда заботливо поправляя капсюли-детонаторы на грядках и сдувая пылинки с сочных зелёных стручков, копошился Гарбузович.
— Ну вфё, тыквоголовый кулкуль, фейчаф ты у меня попляфэф… — прошипел Егор, со свистом стравливая воздух через девятизубый провал в дёснах.
Туалетов с грохотом поставил клетку на багровый песок, откинул ржавый засов и со всей дури пнул массивную дверцу подкованным сапогом.
Птица мгновенно вытянула тощую шею, взъерошила редкие грязно-фиолетовые перья и огласила окрестности оглушительным, гнусавым, как из мегафона, воплем:
— ПТИ-ЦА ГОВ-НО-СРУН ОТ-ЛИ-ЧА-ЕТ-СЯ ГОВ-НОМ И ПРО-ИЗ-ВО-ДИ-ТЕЛЬ-НО-СТЬЮ!
И реактивным снарядом взмыла в ядовито-зелёное небо Абсероида.
То, что произошло дальше, не поддавалось никаким законам классической физики. Говносрун даже не стал опускаться на землю. Птица зависла в воздухе и принялась метаться над грядками с невероятной, ультразвуковой скоростью.
Щёлк-щёлк-щёлк-щёлк!
Пернатый агрессор с хирургической точностью склёвывал сочные гороховые стручки прямо в полёте, не касаясь лапами ни единой травинки и не создавая ни малейшего лишнего колебания воздуха. Ни один из тысяч подвязанных Гарбузовичем чутких датчиков не сработал. Ни одна мина не взорвалась, ни один детонатор даже не щёлкнул.
За какие-то пятнадцать секунд пышное, изумрудное поле превратилось в печальное и унылое зрелище: ровные ряды абсолютно голых, общипанных стеблей, на которых одиноко и абсолютно бесполезно болтались нетронутые растяжки.
Егор, наблюдая эту картину, зашёлся в безудержном, гомерическом хохоте. Он хохотал так, что из глаз брызнули слёзы, а сам он согнулся пополам, заплёвывая розоватой слюной собственные колени.
— ХА-ХА-ХА-ХА! — орал Егор, яростно тыча пальцем в голые грядки. — Совлали твой голох! Так тебе и надо, халя ты евлейфкая! Обойдёффя в этом году бев голоха! Дизлефпект тебе, фука тыквенная!
Гарбузович выскочил из-за забора, на ходу хватаясь обеими руками за свою оранжевую башку. Но к изумлению Егора, фермер даже не взглянул на общипанные кусты. Он смотреть не хотел на свои финансовые убытки. На его тыквенной физиономии застыл первобытный, дикий, животный ужас.
— Ты что наделал, вандал?! — истошно заорал Гарбузович, подбегая к Егору и тряся его за плечи с такой силой, что у сантехника едва не вылетели остатки коренных зубов. — Ты хоть знаешь, кого ты выпустил?!
— Аха-ха-ха! Поплачь ефё, кулкуль ебаный! — надрывался Егор, абсолютно не желая слушать фермера и продолжая смаковать свою мелочную месть. — Нету больфэ твоего голоха! Вфё фклевал, до единой пупылки! Как тебе мой импловивилованный сюлплив?!
— Да забудь ты про этот грёбаный горох, идиотина беззубая! — в отчаянии визжал Гарбузович, указывая пальцем в небо, где Говносрун, совершив последний вираж, раздулся уже до размеров приличного аэростата. — При чём тут мой урожай?! Ты запустил необратимую реакцию! Это же Avis pachomica!
— Да хоть хелослумика! — злорадно отмахивался Егор, утирая слёзы радости ободранным рукавом. — Главное — ты бев дохода офталфя! Будеф внать, как меня наёбывать!
— Дебил! Осёл земляной! — Гарбузович буквально заходился в хрипоте, пытаясь перекричать хохот сантехника. — У него метаболизм один к миллиону! Он только что сожрал три миллиона горошин! Это же три миллиона тонн говна! Через считанные минуты начнётся биохимический коллапс! Это планетарная экологическая катастрофа! Мы все утонем в дерьме, ты понимаешь своими пропитыми мозгами или нет?!
— Ой, да не пивди, Галбувович, у тебя плофто пукан бомбанул! — с барским пренебрежением хохотал слепой от мести Егор, даже не пытаясь вдуматься в слова фермера. — Лофофни тунфа, как ты мне говорил!
И ровно в этот момент высоко над их головами раздался тяжёлый, утробный гул, похожий на извержение вулкана в цистерне с жижей.
Глава 14. Фекальный апокалипсис[править]
Утробный гул, раздавшийся в небесах, не имел ничего общего с обычной грозой. Это был звук закипающего тектонического разлома, смешанный с воем реактивного двигателя, забитого жидкой глиной.
Ядовито-зелёный небосвод Абсероида мгновенно потемнел, окрасившись в зловещий, грязно-бурый цвет. Говносрун, раздувшийся над астероидом до размеров сурового военного дирижабля, на секунду завис в атмосфере. Его безумные глаза вращались с такой скоростью, что сливались в два белых круга. А затем грохнуло.
Это был не просто пердёж — это был оглушительный, раскатистый и басовитый залп сверхмощного пердежа, прокатившийся по всему астероиду и снёсший взрывной волной верхушки заброшенных башенных кранов. Звук, похожий на одновременный удар тысячи океанских молний в бочку с жидким гудроном, заставил Егора и Гарбузовича синхронно припасть к земле и зажать уши.
И с неба разверзлись фекальные хляби.
Уникальный кишечник Avis pachomica, переработавший умятый ранее урожай по формуле «один к миллиону», выдал на-гора три миллиона тончайше спрессованных, горячих и непрерывных тонн птичьей дрисни. Коричневый говнопад обрушился на поверхность с высоты километра.
— БЛЯ-А-А-А-А-А-А-А! — заверещал Гарбузович, пытаясь нырнуть с головой в сухую яму, но было уже поздно.
Первый же лавинный удар накрыл заминированное поле. Тысячи подвязанных к сухим стеблям мин мгновенно затопило густой, кипящей жижей, даже не дав им ни единого шанса на детонацию. Вслед за полем бурный коричневый поток хлынул во все стороны, сметая всё на своём пути.
Егора сбило с ног первой же крутой волной. Он барахтался в вонючем киселе, судорожно плюясь и отчаянно выгребая руками:
— ОЙ, ЁБАНЫЙ В ЛОТ, МНЕ ВЭ В ЛОТ ПОПАЛО!
Биологическая катастрофа развивалась со скоростью падающего метеорита. Непрерывный, громоподобный пердёж Говносруна сотрясал Абсероид без перерыва, заставляя дрожать саму астероидную кору. Лавина помёта с головой накрывала потёмкинские стройки, намертво хоронила в трёхметровом слое дерьма липкую паутину вместе с её гигантскими пауками, мгновенно затапливала свежепостроенные лавки и глубокие котлованы гастарбайтеров из Цереры.
Сектор за сектором границы, так бережно нарисованные хромархами, просто смывало горячей, дымящейся массой. Уже значительно больше половины астероида — Синяя, Оранжевая, Белая и Чёрная земли — стремительно превращались в единый, монолитный и бескрайний коричневый океан.
Егор кое-как вынырнул на затопленный холмик, отхаркиваясь, сплёвывая и судорожно вытирая глаза от жгучего птичьего помёта. Вокруг, насколько хватало глаз, простиралась дымящаяся, зловонная пустошь. Сантехник вытер сопли, оглядел погребённый под миллионами тонн помёта мир и со свистом прошамкал сквозь разбитую челюсть то, что было очевидно каждому.
Теперь-то уж Абсероид оправдал своё название как никогда.
Глава 15. Неподкупный Калдат[править]
Барахтаясь по горло в дымящейся птичьей жиже, Егор судорожно протирал глаза. Единственным островком суши, до которого ещё не успела докатиться горячая фекальная лавина, оставался квадратный сектор Бельк. Прямо в его центре, сверкая сталью и возвышаясь над заплывшим дерьмом астероидом, стояла та самая стратегическая ракета.
Отсчитывая секунды до момента, когда Говносрун развернёт свой раздутый анальный калибр в эту сторону, Егор, плюясь и скользя, рванул к сектору Бельк.
Но на пути к спасительной ракете стояло последнее препятствие.
Робот Калдат. Стальной, тупорылый, трёхметровый страж с цельнолитым чугунным корпусом и дырявым ведром вместо головы. В его огромных манипуляторах был зажат внушительный говномёт, подключённый к реактивному магазину.
Едва Егор выскочил на сухую площадку перед ракетой, Калдат с металлическим скрежетом развернул турель. Из динамика в его груди вырвался механический, лишённый эмоций голос:
— ДОСТУП ЗАПРЕЩЁН!
ЩЁЛК! ЩЁЛК!
Прямо перед носом Егора в сухую землю впились две гигантские говнопули и тут же превратились в две застывшие исполинские кучи.
— Флыф, вэлевка, пуфти! — заверещал Егор, прыгая и судорожно махая руками. — Там же пивдец! Наф фейчаф вфех завалит!
— ДОСТУП ЗАПРЕЩЁН! — отчеканил Калдат, перезаряжая говномёт с громким чугунным лязгом.
Егор применил всю пролетарскую смекалку. Сначала он попытался обхитрить железяку — сделал вид, что уходит направо, а сам совершил резкий рывок налево. Калдат даже не повернул чугунного ведра, просто скорректировал ствол на опережение и пустил ещё одну очередь прямо под ноги сантехнику.
Тогда Егор попытался подкупить охранника.
— На, держи! — Егор вытащил из кармана и швырнул к металлическим стопам робота три своих окровавленных выбитых зуба. — вубы белые, новые! Купиф себе новые фэфтелёнки!
Зубы бесполезно звякнули о стальную лапу. Калдат даже не мигнул индикатором.
— ДОСТУП ЗАПРЕЩЁН!
В полном отчаянии Егор вспомнил про валявшийся неподалёку РЭБ, выкопал его из коричневого сугроба голыми руками, врубил тумблер и наставил антенну прямо на ведро робота:
— Я тебя заглуфу, фука!
Но прямая, как рельса, программа Калдата была написана на чистом ассемблере ещё в прошлом веке. В ней отсутствовали модули Wi-Fi, Bluetooth и здравого смысла. Алгоритму было абсолютно наплевать на радиопомехи: «Если х приближается к объекту — стрелять по х».
— ДОСТУП ЗАПРЕЩЁН!
Внезапно над сектором Бельк густо стемнело. Утробный, басовитый пердёж разорвал небеса прямо над головой стража. Это приближался Говносрун. Его фиолетовая туша раздулась до размеров дирижабля, а из ануса уже торчал трёхметровый запёкшийся конус очередного фекального залпа.
— Ты, дубина вэлевная, навелх пофмотли! — в ужасе заорал Егор, тыча трясущимся пальцем в небо. — Фейчаф же вфё! Нам обоим пивдец! Вали отфюда!
Калдат даже не поднял чугунного ведра. Твёрдый, неподкупный и абсолютно тупой, он стоял перед ракетой, неукоснительно следуя прописанному заранее алгоритму до последнего.
— ДОСТУП ЗАПРЕЩЁН…
ПФ-Ф-Ф-Ф-Ф-Ф!!!
Пернатый бомбардировщик Avis pachomica пролетел прямо над постом, выдав в бреющем полёте точечный залп в сорок тонн помёта.
Лавина горячего, густого дерьма обрушилась аккурат на голову стража. Сначала скрылся под коричневой массой говномёт, затем плечи, и, наконец, чугунное ведро робота полностью погрузилось в дымящийся, зловонный бархан.
Над поверхностью оставался торчать лишь маленький красный светодиод на макушке Калдата. На секунду он судорожно мигнул, из-под завалов донеслось последнее, глухое, булькающее изнутри:
— ДОСТУП… ЗАПРЕЩЁН…
Красный огонёк погас. Теперь его дозор окончен.
Глава 16. Жажда мести в космосе[править]
Перегрузка сжала Егора в лепёшку, прижав его заплывшее синяками тело к стальному полу ракеты. Двигатели, работающие на спрессованном абсурде и сжатых парах безысходности, ревели так, что у сантехника едва не лопнули барабанные перепонки. Ракета с грохотом пробила ядовитую атмосферу и вырвалась в ледяной, безмолвный вакуум.
Когда тряска утихла, Егор с трудом подполз к мутному, заляпанному сажей иллюминатору.
Ракета пролетела уже добрую сотню километров, и перед Егором во всём своём величии открылась панорама брошенного небесного тела. На фоне непроглядно-чёрного, усыпанного холодными звёздами космоса плавал диск Абсероида. Теперь это был не разноцветный бублик, а полностью коричневый.
Аномальная дырка в центре астероида осталась просвечивать сквозь тьму, а сам «бублик» покрывал непрерывный, дымящийся слой птичьего помёта толщиной в несколько десятков метров. Ни хромархов с их шезлонгами, ни заминированного горохового поля, ни руин завода им. Юпитера — ничего больше не просматривалось даже в телескоп.
Егор прижался лбом к холодному стеклу. Никакой жалости к местным обитателям у него не возникло. Хромархи получили по заслугам, Гарбузович был похоронен в говне вместе со своим жадным кулацким нутром, а четырёхглазый продавец навсегда закрыл свои финансовые гештальты.
Но единственное существо на Абсероиде, которое Егору стало искренне жалко — это, как ни странно, прионозух.
— Бедный длевний яфел… — выдохнул Егор, стравливая воздух через выбитые зубы. — Фидел фебе тихонько в квадлатном овеле, никому не мефал, калафей ловил… А тепель сидит по самые ноздли в птичьей длифне ив-ва этого говнослунского диливабля. Нефплаведливо…
Сантехник отвалился от иллюминатора, сел на засаленный ящик из-под тушёнки и посмотрел на свои руки. Состояние у него было, мягко говоря, не богатырское. Здоровье, прокачиваемое годами подтягиваний на трубах и тасканием чугунных батарей, было полностью подорвано. Правый кулак сбит об упругую лобовую броню Гарбузовича, в челюстях зияет брешь на девять зубов, рёбра трещат после взрывов FPV-дронов Весельчака Укра.
Но самое обидное — у него забрали всё, что составляло его пролетарскую гордость. Любимая синяя кепка, промасленная десятком ремонтов, и верный гаечный ключ на тридцать два навсегда остались в заминированных тайниках тыкволицего фермера.
В груди Егора разгорелось тёмное, густое, концентрированное пламя. Чудесное спасение с вонючего астероида не принесло ему облегчения. В голове билась только одна, раскалённая докрасна мысль.
— Малуфя… — прорычал Туалетов, сжимая искусанные губы. — Фука ты лывая…
Это ведь из-за неё, из-за её дурацких капризов и подлого обмана он оказался на этом космическом дне! Из-за неё он потерял зубы, здоровье, ключ и кепку! Из-за неё едва не утонул в океане птичьего помёта! Егор вскочил на ноги, зашагал по тесной кабине ракеты, яростно тыча забинтованным пальцем в панель управления.
— Я тебя ив-под вемли дофтану, Малуфя! — верещал он на всю орбиту. — Я тебе кавдую фбитую кофтяфку плипомню! Кавдый вуб выффитаю! Ты у меня ответиф ва вфё!
Ракета, повинуясь заданному курсу, совершила гравитационный манёвр и на полной скорости понеслась сквозь тьму обратно — к Земле, где Егора уже ждала его главная и самая сладкая месть.
Глава 17. Относительность времени[править]
Полёт в тесной, раскалённой кабине ракеты отличался редким, почти физически ощутимым занудством. Ни радио, ни свежих газет, ни даже старого журнала «Здоровье» в обшивке не обнаружилось. Единственным развлечением Егора было смакование изощрённых, поэтапных планов расправы над Марусей да регулярный пересчёт языком оставшихся во рту восьми коренных зубов.
Двигатели монотонно гудели, перемалывая космический вакуум, за иллюминатором плыла непроглядная чёрная муть, а время тянулось, как застывший на морозе солидол.
От лютой, безысходной скуки Егор начал гонять в голове самые странные и неожиданные мысли. Его сантехнический умище, привыкший иметь дело с давлением, уклонами труб и гидроударами, внезапно зацепился за одну нестыковку, которая не давала ему покоя ещё там, на зловонном астероиде.
Он вспомнил, как впервые уронил на сухую пыль Абсероида тяжёлую чугунную муфту.
Абсероид ведь был крошечным — его диаметр был в сотни, если не в тысячи раз меньше земного. По всем законам механики и здравого смысла, гравитация на такой мелкой кочке должна была быть ничтожной. По-хорошему, брошенный топор или тяжёлый кирпич должен был плавно, чинно и неохотно парить к поверхности минуты, а то и часы — намного медленнее, чем лёгкое птичье пёрышко падает при полном штиле где-нибудь под Стихоквадратском.
Но на Абсероиде всё было иначе. Любой предмет — хоть камень, хоть кусок говна — без опоры под собой падал в грязь за какую-то долбаную секунду. Точно так же, как на Земле!
Егор потёр затылок сбитым кулаком и наморщил лоб.
«А фто… — подумал Егор, прошамкав про себя беззвучную фразу, — фто, ефли эта "фекунда" падения на фамом деле длилафь не фекунду? Фто, ефли она длилафь нефколько чафов?!»
Мысль была настолько дикой, что у сантехника даже зачесался кончик носа. А что, если восприятие времени напрямую зависит от этой чёртовой гравитации и местного притяжения? Что, если то, что наблюдателю внутри кажется мгновенным взмахом ресниц, для остальной Вселенной растягивается в бесконечную, тягучую вечность?
Егор почесал разбитую челюсть, покрутил в пальцах ржавую гайку, найденную под сиденьем, и сокрушённо покрутил головой:
— Да ну, блед какой-то… Фантафтика ебаная. Локальная аномалия, не иначе. Плофто глявь говнифтая утявэляла вфё подляд.
Покрутив в голове эту непонятно откуда взявшуюся физическую ахинею, Егор с облегчением отмахнулся от неё, как от назойливой мухи. Зачем забивать пролетарские мозги высшей математикой и теориями какого-то там Эйнштейна, когда на носу главная миссия всей жизни?
Сантехник откинулся на жёсткую спинку кресла, прикрыл глаза и снова сладостно погрузился в мечты о том, как он ввалится к Марусе, схватит её за грудки и потребует компенсацию за каждый потерянный зуб, за каждый дрон Весельчака и за свою любимую синюю кепку.
А ракета тем временем продолжала на бешеной скорости рассекать пространство, приближаясь к Земле, где Егора ждал сюрприз масштабом в целую человеческую жизнь.
Глава 18. Бежевый Стихоквадратск[править]
Тормозные парашюты раскрылись с сухим, резким механическим треском, будто гигантская швея одним рывком распорола плотное полотно небес. Ракета, жалобно скрипнув перегретой обшивкой, клюнула носом и с глухим, тяжелым гулом зарылась в перекопанную сухую землю. Удар был такой силы, что зубы — те немногие, что еще оставались у Егора — клацнули, грозя раскрошиться окончательно. Комья жесткой грязи барабанной дробью осыпали корпус. Посадка завершилась. Он приземлился на самой окраине Стихоквадратска — родного города Егора, затерянного где-то в бескрайних просторах великого государства Абсурдоляндия.
Спустя пару минут тягостной тишины заклинивший люк с натужным скрежетом подался и отвалился в сторону. Егор, тихо матерясь, кое-как вывалился наружу на карачках. Он судорожно хватал ртом воздух, отхаркиваясь едкой ракетной сажей, смешанной с дорожной пылью. Правая рука немилосердно ныла: сантехник то и дело поджимал распухшие пальцы, налившиеся синевой после того, как он со всей пролетарской дури отбил их о тугую, словно высеченную из гранита, харю Гарбузовича.
Егор сплюнул черную слюну на растрескавшуюся землю и тяжело задышал. Физически он был измотан, побит и провонял канифолью, но внутри него разгоралось, требуя выхода, пламя праведного пролетарского гнева.
Он вернулся. Вернулся домой.
Стоя на четвереньках в придорожной пыли, сантехник позволил себе на секунду прикрыть глаза. Воображение услужливо рисовало ему до боли знакомый, милый сердцу пейзаж. Он ждал, что сейчас ветер принесет аромат сырых подвалов, перегара и жареных беляшей. Егор предвкушал, как его встретит привычный, уютный хаос родного Стихоквадратска. Вот сейчас он поднимется на холм и увидит бесконечные лабиринты ржавых гаражных кооперативов, где суровые мужики по выходным перебирают карбюраторы под хриплый шансон. Вот потянутся разрытые ещё в прошлом десятилетии теплотрассы — его, Егора, профессиональные угодья, парящие в морозном воздухе.
В ушах сантехника заранее зазвучала симфония родных улиц: истошные крики пьяных гопников, делящих территорию в заросших парках, манящее гудение пёстрых неоновых вывесок круглосуточных пивнушек и тяжёлый, величественный вид старых, добрых панелек, покрытых благородной серой плесенью и хаотичным остеклением балконов.
Здесь он был в своей тарелке. Здесь он знал каждый вентиль, каждую бродячую собаку и каждую колдобину. В этом спасительном городском бардаке он чувствовал себя всесильным.
План действий уже зрел в его гудящей голове: нужно дойти до ближайшего ларька, взять «живого нефильтрованного» для анестезии отбитых пальцев, присесть на знакомую покосившуюся лавочку во дворе, перевести дух и составить чёткую стратегию поиска Маруси. В его хаотичном городе затеряться было проще простого, но и найти человека, если знать нужных людей на районе, не составляло труда.
С колотящимся сердцем, полным светлых, мстительных надежд, сантехник вытер слезящиеся от едкого дыма глаза рукавом грязной робы. Кряхтя и опираясь на здоровое колено, Егор начал медленно подниматься на ноги, чтобы наконец бросить первый взгляд на милые сердцу трущобы и вдохнуть воздух родины.
Егор выпрямился, стряхивая с колен сухую землю, и распахнул глаза навстречу родному пейзажу. Но ностальгическая улыбка, едва успев появиться на его чумазом лице, медленно сползла куда-то за воротник грязной робы.
Вместо привычной панорамы изрытых теплотрасс и покосившихся гаражей перед ним расстилалась идеально ровная, лишённая малейших изъянов дорога. По ней, едва слышно шурша шинами, проплыл гладкий утилитарный фургон, за которым последовал такой же бесшумный прямоугольный электробус. На его матовом борту приветливо светилась интегрированная информационная панель: маршрут, температура воздуха и крупная, не оставляющая пространства для сомнений дата — «14 октября 2087 года».
Егор моргнул, яростно протёр глаза грязным кулаком и снова уставился вслед уезжающему автобусу. Две тысячи восемьдесят седьмой. Он никак не мог поверить, что не был на родной планете около 60 лет. Пока он болтался на Абсероиде и разбирался с тамошними жителями, на Земле наступил конец 21 века!
В голове сантехника, чьи представления о грядущем базировались на старых голливудских фильмах, тут же сработал стереотипный триггер. Раз это далёкое будущее, значит, где-то здесь должен быть киберпанк! Он завертел головой, ожидая увидеть пронзающие свинцовые тучи неоновые небоскрёбы. Где летающие машины, со свистом проносящиеся над головой? Где гигантские голографические девицы в кислотных тонах? Где, в конце концов, пёстрые, залитые вечным дождем высокотехнологичные трущобы с торговцами имплантами, среди которых ему предстояло затеряться и искать Марусю?
Он приготовился к мрачному величию антиутопии. Но едва Егор всмотрелся в панораму обновлённого Стихоквадратска, как ноги его подкосились от глубочайшего, немого шока.
Стихоквадратск не стал киберпанком. Он стал… полностью бежевым.
Каждое здание, каждый забор, каждый фонарный столб и даже само дорожное покрытие были выкрашены в однообразные, стерильные, матово-нейтральные тона. Взгляд отчаянно скользил по улицам, тонув в бесконечных оттенках овсяного, капучино, сухого песка и бледного таупа. Глазу буквально не за что было зацепиться, от этой идеальной чистоты начинало мутить.
Никаких ярких вывесок. Никаких пёстрых афиш, мигающих светодиодов, баннеров или кричащей рекламы пива и шаурмы. На строгих, вылизанных до тошнотворного минимализма бежевых фасадах не было ничего лишнего — только аккуратные, абсолютно одинаковые серые таблички, набранные скучным рубленым шрифтом. Егор, щурясь и шевеля губами, прочитал надписи на ближайших зданиях: «Предприятие по обработке данных № 14», «Логистический пункт выдачи», «Административный комплекс», «Продуктовый склад № 8».
Никаких летающих машин из фильмов. Только тихие фургоны и молчаливые, сливающиеся с фоном электробусы. В этом новом мире будущего не было места хаосу, не было места цвету. Будущее оказалось не пугающим неоновым адом, а бесконечной, удушливо-стерильной чашкой тёплого капучино.
Егор сделал несколько неуверенных шагов по идеальной бежевой плитке, чувство едва уловимого тошнотворного головокружения не проходило. Ноги гудели, отбитые пальцы пульсировали тупой болью, а в голове царил полный хаос. Чтобы не сойти с ума от этой стерильной противоестественной картины, сантехнику срочно нужно было присесть, перевести дух, остыть и набросать хоты бы самый примитивный план поиска Маруси.
Он огляделся вокруг в поисках чего-нибудь привычного: хоть какого-нибудь скверика, дощатой лавочки во дворе, да хотя бы поваленного бревна или старой автомобильной покрышки, вкопанной в землю.
Но лавочек не было.
Вообще. Ни одной.
Егор прошел один квартал — ровные, идеально гладкие фасады цвета сухого песка. Прошел второй — стерильные откосы, бледный тауп, гладкие парапеты, скошенные под таким диким углом, что присесть на них было физически невозможно. Прошел третий квартал — и на грязном, покрытом сажей лбу сантехника выступил холодный, липкий пот.
Его осеняло медленно, но с беспощадной ясностью. Из этой городской среды начисто, с хирургической жестокостью вычистили само понятие физического «третьего места». В новом Стихоквадратске конца 21 века больше не существовало ничего, что не являлось бы либо Домом, либо Работой.
Егор крутил головой, отчаянно выискивая глазами привычные атрибуты человеческой жизни, но не находил ничего. Никаких зелёных парков с тенистыми аллеями. Никаких уютных кофеен или шаурмичных. Ни кинотеатров, ни пивных летников с пластиковыми столами, ни фан-зон, ни даже вшивых детских площадок со скрипучими качелями и изгаженными песочницами. Все социальное пространство было уничтожено, стерилизовано и закатано в бежевый монолит.
Город состоял исключительно из мест трёх типов: где производят и обрабатывают данные, где выдают утилитарные товары, и беспросветных, одинаковых спальных коробок, где граждане восстанавливают ресурсы для нового рабочего дня.
Люди на улицах не гуляли, не останавливались перевести дух и уж тем более не общались. Они перемещались по тротуарам быстрыми, строго выверенными траекториями, словно заведенные механизмы. Их маршрут был прост и неизменен: «работа — пункт выдачи — дом». Никто не глядел по сторонам, никто не смеялся, никто не стоял у входа в здания, потягивая сигарету.
Вся эта жуть выглядела до того противоестественно, что у Егора в голове родилась единственно логичная, как ему казалось, гипотеза. Весь Стихоквадратск выглядел так, будто какая-то супербогатая, окончательно сдвинувшаяся на минимализме и инстаграмной эстетике бежевая мама построила для своей любимой ненаглядной корзиночки целый гигантский город. Построила и вытравила из него все яркие цвета, всю уличную жизнь, любые запахи и всякую возможность людям случайно собраться вместе, отдохнуть и посидеть на свежем воздухе.
И от осознания того, в какой идеализированный, стерильный ад он попал, Егору стало по-настоящему жутко.
Нервы Егора, и без того натянутые до предела после всех приключений на Абсероиде, наконец лопнули. Стерильная, удушливая правильность этого нового мира навалилась на него тяжёлой бетонной плитой. Он стоял посреди безупречно чистого тротуара — чумазый, ободранный, насквозь провонявший жжёной канифолью, застарелым потом и машинным маслом — и чувствовал, как внутри закипает слепая, неконтролируемая ярость.
Сантехник сжал кулаки, втянул в грудь побольше отфильтрованного, лишённого всяких запахов городского воздуха и сорвался.
— Это фто ва бевэвый дулдом?! — на всю улицу прошамкал Егор, дико вращая налитыми кровью глазами. Из-за выбитых зубов его гневный рык превратился в нелепое шипение, но громкости от этого не убавилось. Он яростно обвел рукой пастельную перспективу улицы. — Где фкамейки, фука?! Где нолмальный пивной лалёк?! Где палк имени Голького?! Вы фто тут, вообфе вфе ф ума пофходили?!
Эхо его крика, казалось, должно было расколоть эту матовую идиллию, заставить людей вздрогнуть, остановиться, возмутиться. Но реакция толпы оказалась страшнее любого открытого конфликта.
Одинаковые прохожие, затянутые в одинаковые технологичные бежевые плащи, даже не повернули голов. Они лишь синхронно, словно по команде невидимого дирижёра, ускорили шаг. Никто не проронил ни слова. Никто не встретился с ним взглядом. Жители безликим, бесшумным потоком огибали кричащего, брызжущего слюной маргинала, как вода огибает грязный камень в ручье. Их единственной целью было поскорее миновать этот системный сбой и стремглав устремиться в безопасность своих идеальных бежевых спальных отсеков.
Егор тяжело дышал, глядя им вслед. Руки бессильно опустились вдоль туловища. Первичная злость начала отступать, оставляя после себя лишь холодную, сосущую пустоту и внезапно нахлынувшее осознание реальности.
Маруся.
Всю дорогу сюда, сквозь космический мрак и все круги абсурдного ада, его вела только одна путеводная звезда — жгучее, кристально чистое желание найти её и убить. Убить с особой, методичной жестокостью, глядя прямо в глаза. Месть была его топливом, эта мысль грела его долгими часами, придавала сил в самые безнадёжные моменты. Он представлял их встречу тысячи раз.
Но сейчас, вспомнив издевательскую дату «2087» на борту электробуса, Егор почувствовал, как по спине пробежал ледяной холодок. Прошло больше полувека. Около шестидесяти лет.
Сантехник сглотнул вставший в горле сухой ком. А есть ли теперь в кого впиваться руками? Осталась ли Маруся в этом стерильном бежевом кошмаре, который когда-то был их родным городом? И самое главное — жива ли она вообще после стольких лет?
Мысль о том, что безжалостное время могло сработать на опережение и украсть его законную, выстраданную месть, ударила Егора под дых сильнее любого кулака. Он стоял посреди пустой глянцевой улицы — чужой, злой и растерянный призрак прошлого, у которого отняли не только привычный мир, но, возможно, и единственный смысл в него возвращаться.
Глава 19. Вербальный эксгибиционизм[править]
Дикий, стерильный и до тошноты бежевый Стихоквадратск окончательно выбивал Егора из колеи. Окружающая действительность казалась дурным сном, выкрашенным в цвет овсяного отвара. Но упиваться рефлексией у сантехника не было времени. Ему срочно требовался живой человек — хоть какой-нибудь местный абориген, чтобы узнать, куда переехали все скамейки, что вообще произошло с городом и, главное, где искать подлую Марусю.
Сжав кулаки, Егор рванул к ближайшему прохожему — подтянутому мужчине в идеальном, отглаженном плаще цвета капучино, который быстро шагал вдоль бежевой стены.
— Флыф, дядя! Пофтой! — гаркнул сантехник, перегораживая ему дорогу. — Где тут…
Реакция прохожего оказалась дикой. Мужчина замер на месте, и из его глаз выплеснулся такой животный, неконтролируемый ужас, будто Егор прямо перед ним сдёрнул грязные штаны и продемонстрировал всё своё пролетарское достоинство. Прохожий истошно вскрикнул, судорожно закрыл лицо обеими руками и на предельной скорости умчался прочь, едва не потеряв на ходу бежевые туфли.
Егор оторопел. Он машинально оглядел себя: да, грязный, да, воняет канифолью и сажей, но не настолько же!
Сантехник упрямо мотнул головой и бросился ко второй цели — молодой женщине, несущей аккуратный бежевый пакет из пункта выдачи.
— Девуфка, подфкавыте… — попытался выдать самый вежливый тон Егор, сделав шаг навстречу.
Женщина взвизгнула так тонко, словно её прошибло разрядом в тысячу вольт. В один суматошный прыжок она отскочила на три метра назад, бросилась к ближайшему бежевому подъезду и начала судорожно, с дрожью во всем теле, прикладывать палец к сенсорному кодовому замку, непрерывно оглядываясь на сантехника с диким, загнанным взглядом.
За следующие полчаса Егор совершил ещё пару десятков попыток наладить контакт. Результат был неизменен и катастрофичен. Люди смотрели на него как на сбежавшего из психушки опасного маньяка-извращенца. При первом же его слове они закрывали уши, прятали глаза, бледнели и в ужасе разбегались в разные стороны, словно от чумного барака.
Скоро участок улицы вокруг Егора полностью опустел. Сантехник стоял один-одинёшенек посреди идеального пастельного тротуара, тяжелея от лютой пролетарской обиды и глухо рыча сквозь разбитую челюсть. Это был уже не просто город, это был какой-то заговор молчаливых сумасшедших.
И тут у глухой бежевой стены логистического склада он заметил одинокого мужчину лет сорока. На нём был слегка помятый овсяный плащ — редкая небрежность для этого вылизанного мира — а сам он неверным, сомневающимся взглядом разглядывал идеально уложенный бежевый тротуар.
Егор, уже ни на что не надеясь и тяжело дыша от ярости, подошёл вплотную и мрачной, пропахшей гарью глыбой навис над ним:
— Флыф… Ты тоже фейчаф олать будеф и убегать?
Мужчина вздрогнул, мгновенно побледнел и вжал голову в плечи, ожидая удара или чего похуже. Но, к великому удивлению сантехника… остался на месте. Он мельком, затравленно огляделся по сторонам, словно они вдвоём совершали прямо здесь страшное, немыслимое преступление, и тихо, сиплым голосом произнёс:
— Т-тише… Не ори так. На нас же люди смотрят.
— Да мне похуй на вафых бевэвых людей! — взвизгнул Егор, яростно тыча забинтованным, синим пальцем себе в грудь. — Фто ф вами вообфе не так?! Почему все убегают, будто я им хуй покавываю?!
Мужчина сочувственно вздохнул, нервно сглотнул и печально опустил глаза в землю:
— Ну… вообще-то, с их точки зрения ты именно этим сейчас и занимаешься.
— ФТО?! — ахнул сантехник. Челюсть его отвисла, обнажая зияющие провалы на месте выбитых зубов.
— Меня зовут Проверьте Подключение к Интернету, — тихо, стараясь не привлекать лишнего внимания, представился прохожий. — Можно просто Подключение.
Егор застыл с открытым ртом. Из бреши в дёснах вырвался свистящий поток воздуха. Его пролетарский рассудок, и без того трещавший по швам, отказывался обрабатывать поступающую информацию.
— Фто ва ебанутое имя?! — наконец выдавил из себя сантехник. — Тебя родители в сговоре с сатаной крестили?!
— При рождении имя мне присваивал ИИ-регистратор роддома, — грустно пояснил Подключение, теребя пуговицу своего овсяного плаща. — В тот самый момент в нашем микрорайоне выбило пробки. Случилась системная ошибка при обращении к серверу имен. Так и записали в свидетельство о рождении: Проверьте Подключение к Интернету.
— Пивдец… — честно и ёмко резюмировал Егор, качая головой.
Прохожий обречённо кивнул, подтверждая этот безрадостный диагноз. Перед Егором стоял человек, чья жизнь была сломана с первой секунды одной-единственной технической неполадкой.
— Вот именно, — печально вздохнул Подключение. — Из-за этого особенного ФИО меня с самого детсада жестоко буллили. Дети смеялись, учителям было лень каждый раз выговаривать полное имя… В итоге я рос и развивался абсолютно отдельно от коллектива. Стал изгоем, не таким, как все, и окончательно сломал себе нормальную социализацию.
Мужчина с тоской посмотрел на свои бежевые туфли и тихо добавил:
— И только поэтому… только из-за своей глубоко деформированной психики я сейчас стою и соглашаюсь на живое общение с абсолютно незнакомым человеком.
— А фто не так ф вывым обфением?! — наморщил лоб Егор, искренне не понимая, в какую параллельную реальность его занесло. — Вы фто, фоффем тут кукухой поехали?!
Подключение посмотрел на него, как на вылезшего из мерзлоты пещерного дикаря.
— Ты из какого века вылез, дедушка? — с оттенком искреннего недоумения спросил он. — По правилам современного этикета незнакомые и малознакомые люди ОБЯЗАНЫ общаться исключительно в Интернете! Через мессенджеры, нейросети или анонимные чаты. Живой голос, разговор с глазу на глаз и тем более прямой зрительный контакт — это глубочайший, сакральный интимный уровень! Это доступно только самым близким друзьям, родственникам и супругам!
Мужчина нервно поправил воротник овсяного плаща и понизил голос до едва различимого шёпота, опасливо косясь на редких бежевых прохожих:
— А вот так просто подойти к незнакомому человеку на улице и начать с ним разговаривать вслух… В нашем обществе это официально приравнивается к эксгибиционизму! Ты для них — вербальный извращенец, который без всякого стыда вывалил свои мысли прямо посреди улицы!
Егор стоял, судорожно переваривая услышанное. Пролетарский мозг сантехника категорически отказывался принимать мир, где обычный разговор или вопрос «как пройти» приравнивался к демонстрации голого зада на глазах у честной публики.
Впрочем, глубокие социологические изыскания никогда не входили в сферу интересов Егора. В его голове тут же щёлкнул главный тумблер, возвращая мысли в единственно важное русло.
— Ладно, хлен с вафым этикетом! — тяжело выдохнул Егор, сгребая помятый лацкан овсяного плаща собеседника в свой огромный, грязный кулак. — Пофлуфай, Подключение… Я улетел на пару мефяцев, велнулфя, а тут вфё бевэвое! Где мне найти одну фуку по имени Малуфя?!
Подключение вылупил глаза и от неожиданности даже забыл о своем страхе перед живым контактом. Он замер, внимательно всматриваясь в ободранное, измазанное сажей и канифолью беззубое лицо сантехника, в его рваную спецовку из давних времён и сбитые в кровь костяшки.
В глазах Подключения мелькнула сначала дикая, неправдоподобная догадка, а затем — настоящий, чистый ужас озарения. Мужчина внезапно ахнул, схватившись свободной рукой за грудь:
— Подожди… Ты сказал «улетел на пару месяцев»?.. Святой роутер… Так ты что, серьёзно ничего не знаешь?!
Подключение затряс головой, судорожно сглатывая слюну, и понизил голос до сдавленного, дрожащего шёпота:
— На дворе конец 21 века! Когда ты улетел, меня ещё на свете не было!
Глава 20. Ред босс пикми[править]
— Я это внаю, но какого хлена?! — шепелявый голос Егора взвился до заоблачных высот, намертво перекрывая тихий, шелестящий гул проезжавших мимо бежевых электробусов. — Какой, нахуй, конец века?! Я был в кофмофе макфимум нефколько мефяцев!
Подключение в панике замахал руками, затравленно озираясь по сторонам. Парочка прохожих вдалеке тут же перешла на легкий бег, брезгливо прижав к ушам отглаженные бежевые воротники.
— Тише, ради великой Сингулярности! — зашипел мужчина в овсяном плаще, пытаясь хоть как-то утихомирить брызжущего слюной гостя из прошлого. — Космос — штука сложная, физику не обманешь! Видимо, ты попал в какую-то аномальную область пространства-времени. Кротовая нора, гравитационный колодец или что там ещё бывает… Суть в том, что для тебя прошло пару месяцев, а здесь пролетело, видимо, больше шестидесяти лет!
Егор отшатнулся и отпустил чужой плащ. В голове невыносимо зашумело. Шестьдесят лет… Это что же получается? Сантехник лихорадочно попытался сложить в уме цифры, хотя математика даже до космических перегрузок и ударов Гарбузовича никогда не была его сильной стороной.
— Значит… Малуфя… — одними губами прошептал сантехник. Глаза его медленно полезли на лоб от накатившего осознания.
— В общем, твоей Марусе — а точнее, Марии Глебовне — сейчас восемьдесят восемь лет, — сочувственно кивнул Подключение, одергивая помятый лацкан. — Бабка она. Причём бабка крайне известная. В городе её знают абсолютно все, от мала до велика. Она наша главная, так сказать, фрик-достопримечательность. В сети её кличут не иначе как «ред босс пикми».
Гнев в глазах Егора ненадолго уступил место искреннему, дремучему непониманию. Пролетарский мозг отчаянно забуксовал в новых терминах 21 века.
— Фто ва «пикми»?! — сморщил перепачканный сажей лоб сантехник. — Это болевнь такая фталчефкая?
— Ну, это такой психотип, — охотно пояснил Подключение, явно радуясь возможности перевести разговор в плоскость социологии. — Она всю свою жизнь позиционировала себя как «нетакуся». Мол, «я не такая, как эти обычные бабы с их шмотками и драмами, я простая, я разумею мужиков, я своя в доску». Всегда крутилась в мужских компаниях, громче всех ржала над сальными шутками и обесценивала других женщин, чтобы казаться особенной и нужной на фоне остальных. Вот это поведение и называется «пикми». Ну а «ред босс» — потому что она достигла в этом абсолютного, непробиваемого уровня.
Подключение выдержал интригующую паузу, наклонился поближе к Егору и добавил:
— Но живой легендой нашего города она стала вовсе не из-за своего характера. Лет тридцать назад, аккурат к юбилейному сотому выпуску Книги Рекордов Гиннесса, в Стихоквадратск прибыла целая делегация международных экспертов…
Егор открыл рот, позабыв закрыть его руками, и слушал Подключение, как завороженный. Истории из будущего с каждым словом становились всё более безумными, а пролетарский разум сантехника окончательно отказывался находить в них хотя бы каплю логики.
— О-о-о, что тут началось! — с нескрываемым смаком продолжал Подключение, а его сиплый голос наполнился редким для этого стерильного города азартом. — Представители Guinness World Records подняли весь наш Стихоквадратск на уши! Это же был юбилейный, сотый выпуск Книги рекордов! Масштаб события даже представить сложно. Месяц кругом висели оцепления, везде дежурили роботы-патрульные и блокировочные ленты.
Егор лишь хлопал глазами, пытаясь переварить услышанное.
— Эксперты в стерильных белых халатах, со специальным оборудованием и ультрафиолетовыми лампами обследовали и досконально задокументировали буквально каждый квадратный метр бывшей уличной жизни! — вдохновенно шептал Подключение. — Они ползали по абсолютно всем кустам в городских парках, шныряли по каждому второму подъезду панелек, обследовали все заброшенные стройки, подвалы, частные квартиры и даже легендарный, самый дешёвый в городе почасовой отель «Уют».
— Куфты?! — переспросил Егор, свистя дыркой между зубами. — Вачем?!
— Как зачем? Для протокола! — Подключение важно поднял указательный палец вверх. — Для доказательной базы международного уровня! Все эти кусты и подвалы, Егор, были естественными декорациями к её бурному жизненному пути. Эксперты составляли подробные карты, брали соскобы, измеряли углы наклона скамеек и делали панорамные снимки для официального архива. Они подошли к делу с чисто немецкой педантичностью. Отель «Уют», между прочим, вообще признали объектом особого историко-бытового наследия — там, по расчётам комиссии, прошла почти треть её трудовых подвигов.
Егор судорожно сглотнул. Картинка в его голове складывалась кошмарная: толпы строгих людей в защитных костюмах, тщательно сканирующие синими лампами ржавые подворотни, в которых он когда-то чинил теплотрассы. От одной мысли об этом сантехника передёрнуло от подступающей к горлу тошноты.
Егор слушал с таким напряжением, что забывал дышать. Каждый раз, когда Подключение перечислял места былых похождений, в голове сантехника всплывали картины его собственного прошлого. И чем дольше длился рассказ, тем отчётливее он понимал: речь идёт не о каких-то абстрактных кустах и подворотнях. Речь шла о тех самых кустах, где он сам не раз распивал дешевый портвейн, и о тех самых подвалах, где он годами менял проржавевшие трубы.
— Но вачем? — прохрипел Егор. — Вачем они это делали?
Подключение выдержал театральную паузу, наклонился к самому уху сантехника и торжественно прошептал:
— Чтобы подтвердить рекорд. Рекорд, Егор! Они провели сотни экспертиз, опросили целую армию свидетелей и подняли архивы. Передопрашивали половину мужского населения Стихоквадратска — от бывших сантехников и слесарей до директоров заводов и заезжих дальнобойщиков! Сверяли графики, брали ДНК-смывы, поднимали записи с древних камер наблюдения…
Мужчина в овсяном плаще выпрямился, словно готовясь объявить результаты всемирных выборов.
— И вот, на центральной площади, на глазах у огромной собравшейся толпы, представители Книги Рекордов Гиннесса торжественно вручили уже тогда немолодой Марии Глебовне официальный золотой сертификат. Он подтверждал, что Мария Глебовна за свою насыщенную жизнь переспала не менее чем с 10 000 половых партнёров!
У Егора аж ноги подкосились. Он судорожно пересчитал оставшиеся в кармане зубы, затем в уме попытался представить 10 000 мужиков. Масштаб блядства не укладывался в пролетарском сознании. Десять тысяч. Это же население целого посёлка городского типа, а то и маленького города! Это же целый стадион!
— Дефять тыфяч… — в ужасе прошептал сантехник, и его передернуло от отвращения, как от удара током. — Вот это «нетакуфя»… Вот это флюха кофмичефкого мафштаба…
— Ну да, — легко согласился Подключение, не замечая состояния собеседника. — С тех пор она окончательно сбрендила и превратилась в локальный мем. Живёт на самой окраине, куда городские бежевые службы даже нос не суют. Туда до сих пор редкие туристы ходят — посмотреть через окно на «живой анахронизм 21 века».
Егор стоял, закрыв лицо грязными руками. Ему вдруг стало невероятно мерзко. Вся его ярость, вся жажда мести, копившаяся долгие месяцы в космосе, вдруг померкла перед этой тошнотворной цифрой. Он гнался через всю галактику, чтобы убить женщину, которая переспала с десятью тысячами мужчин.
Шок от услышанного накрыл Егора с головой. Десять тысяч! От этой цифры у сантехника кружилась голова, а в желудке поднимался тугой, кислый ком. Вся его великая, выстраданная во мраке космоса месть вдруг показалась не просто бессмысленной, а какой-то гигиенически небезопасной. Убивать человека с таким внушительным историческим бэкграундом — это всё равно что голыми руками лезть в аварийный септик без перчаток: отомстишь, а потом всю жизнь отмываться будешь.
Но отступать было некуда. За шестьдесят лет этот мир изменился до неузнаваемости, превратившись в стерильный бежевый кошмар, но старые счёты никуда не испарились. Пусть она теперь восьмидесятивосьмилетняя старуха, пусть «ред босс пикми», пусть местный живой мем и ходячий анахронизм — Егор должен был посмотреть ей в глаза.
— Где она фейчаф?! — прорычал сантехник, с силой встряхивая Подключение за отвороты овсяного плаща так, что у того застучали зубы. — Давай адлеф, не томи, фука! Кончай пивдеть!
Подключение испуганно замахал руками, пытаясь высвободиться из железной хватки озверевшего сантехника.
— Да без проблем, её халупу любой знает! — затараторил он, опасливо косясь на пустую бежевую улицу. — Руки убери, извращенец проклятый! Сейчас нарисую!
Он достал из кармана электронный стилус и быстрыми, нервными движениями выцарапал прямо на гладкой поверхности бежевого интерактивного столба точные координаты.
— Вот. Старый частный дом на самом краю Заречного района, — выдохнул Подключение, отпрыгивая на безопасное расстояние. — Туда бежевые коммунальщики вообще не заглядывают, там у них мёртвая зона. Только ты это… если опять вздумаешь с ней вслух разговаривать — хотя бы шторы занавесь, ради всего святого. Не позорь город перед ИИ.
Егор бросил беглый взгляд на цифры, выбитые на стене, и тяжело сплюнул на стерильную плитку. Развернувшись на сто восемьдесят градусов, сантехник зашагал прочь, сутулясь и злобно ворча себе под нос. Впереди его ждал Заречный район, встреча со старухой-легендой и финальный акт этой затянувшейся космической драмы.
Глава 21. Сортирный спасатель[править]
Егор тяжело и мерно чеканил шаг по стерильной бежевой плитке. С каждым ударом подошвы на идеальном матовом покрытии цвета тёплого капучино оставался грязный, жирный, воняющий жжёной канифолью и застарелым машинным маслом след. Сантехник пёр вперёд, как бронепоезд, абсолютно игнорируя испуганные взгляды редких прохожих, шарахающихся от него по сторонам.
Выглядел он сейчас как восставший из глубин ада терминатор пролетариата. Рёбра, безжалостно пробитые FPV-дронами в недавней стычке, отзывались тупой, пульсирующей болью при каждом вдохе. Легендарная синяя кепка, его бессменный талисман, была безвозвратно утрачена, а во рту гулял сквозняк через зияющую брешь от девяти выбитых зубов.
Но физические увечья совершенно не волновали Егора. Сбитые в кровь кулаки сжимались с таким жутким, сухим треском, что казалось, вот-вот с громким щелчком лопнут натянутые сухожилия. В голове сантехника кипел, булькал и переливался через край раскаленный бульон из концентрированной ярости. Егор шаг за шагом репетировал грядущий триумф, и тот факт, что на Земле пронеслось больше полувека, не имел никакого значения. Какая разница, какой год на календаре, если враг все ещё топчет эту землю?
Сантехник упрямо двигался к окраине, прокручивая в голове названный Подключением адрес. Заречный район… Заречный.
Внезапно Егор резко сбавил шаг. Его измазанные сажей брови сурово сошлись на переносице, а в пролетарском мозгу произошла критическая топографическая нестыковка.
Он остановился посреди улицы и озадаченно почесал затылок. В Стихоквадратске отродясь не было никакого Заречного района! И, что куда важнее, в этом пыльном промышленном городе никогда не было ни одной, даже самой захудалой речушки, за которой этот район в принципе мог бы располагаться. Единственной жидкостью, протекавшей через Стихоквадратск, были канализационные стоки в тех самых трубах, которые Егор чинил половину своей жизни.
Сантехник подозрительно прищурился, оглядывая бежевые фасады. Неужели за шестьдесят лет эти инстаграмные урбанисты-извращенцы умудрились выкопать полноводную реку и пустить по ней воду? Да чёрта с два!
Немного пошевелив извилинами, Егор с презрением осознал истину. Никакую реку тут не рыли. Просто этот новый окраинный сектор назвали в честь зари. То ли утренней, то ли вечерней — хрен разберёшь в этой пастельной, лишённой красок тоске. «Заречный» в этом дурдоме означал «связанный с зарёй», а не «за рекой».
— Глупые бевэвые дебилы, — прошепелявил Егор, презрительно сплюнув черную слюну прямо на идеальный тауповый асфальт. — Двух флов фвявать не могут, вато плидумывают всякую хуйню.
Разгадав эту нелепую топонимическую загадку, сантехник с удвоенной злостью сжал кулаки и зашагал дальше. Впереди его ждала окраина, где за границей идеального мира пряталось логово его главного врага.
По мере того как стерильные бежевые декорации медленно, но верно начали сменяться более привычным глазу упадком, Егор усердно прокручивал в голове сценарий долгожданной расправы. Он не собирался размениваться на мелочи. Высказывать старухе претензии за потерянный любимый гаечный ключ, испорченную спецовку или безвозвратно ушедшие годы? Хрен с ними! Настоящий пролетарий выше бытового нытья.
Он чётко, в мельчайших, сладостных деталях планировал, как с ноги выбьет трухлявую дверь, шагнёт в комнату и грубо схватит эту 88-летнюю «нетакусю» прямо за дряблые грудки. Никаких скидок на преклонный возраст и статус городской легенды. Глядя прямо в её выцветшие глаза, сантехник собирался во всех красках напомнить ей главный, самый гнусный эпизод её беспросветной мразотности. Тот самый момент предательства, с которого и начался весь этот космический ад.
Перед внутренним взором Егора, застилая собой пастельную реальность Стихоквадратска, вновь возник злополучный стартовый полигон. И эта синяя вдрызг шлюха, которая по пьяни залезла в ракету как раз тогда, когда он находился внутри. Она нажралась до абсолютно невменяемого, поросячьего визга, рухнула в кресло и с идиотским хихиканьем принялась хаотично лупить по всем тумблерам на панели управления.
— Я тебе, фука, вфё плипомню… — яростно шипел Егор, со свистом стравливая воздух через зияющий провал в челюсти и сжимая кулаки. — Кавдую кнопку, котолую ты фвоими колявыми пальцами навымала!
Память безжалостно подкидывала финал той сцены: оглушительный рёв маршевых двигателей, перегрузка, а затем — как эта тварь благополучно упедалила назад на Землю в той же ракете. Бросила его, простого русского сантехника, выживать в полном одиночестве на блядском, холодном и безжалостном Абсероиде!
— Как ты упедалила, а меня на этой кочке офтавила! — прорычал он в пустоту, от души рубя воздух ребром ладони. — Ты у меня за Абфелоид ответиф по полной плогламме!
Кипящая внутри ярость работала лучше любого энергетика, не давая ногам почувствовать усталость. С каждым шагом Егор все чётче представлял вытянутое от ужаса, сморщенное лицо Маруси, и эта картина была для его истерзанной души слаще самого свежего, холодного нефильтрованного пива.
Пока безупречные бежевые здания постепенно сменялись обшарпанными, перекошенными заборами и бурьяном настоящей, нетронутой урбанистами окраины, память Егора неожиданно подкинула ему другой, куда более древний эпизод.
Это было ещё задолго до космоса, проклятого Абсероида и угнанных ракет. В те далёкие, светлые времена, когда Егор был молод, горяч, обладал полным комплектом зубов и идеальным пролетарским здоровьем.
Стоял невыносимо жаркий летний день. Маруся, уже тогда вовсю отыгрывающая роль «своей в доску нетакуси», умудрилась в городском парке бесцеремонно припереться на застолье к отдыхающей компании суровых кавказцев. Оправдывая свой статус «простой девахи, которая разумеет мужиков», она в одно рыло сожрала у них весь шашлык, смела со стола закуски и выпила до дна всё домашнее вино, какое только смогла найти.
Естественно, желудок такого культурного обмена не выдержал. Вскоре после триумфального застолья Маруся пулей полетела «припудрить носик» в стандартный синий пластиковый уличный туалет, стоявший на краю парка.
Но дверной замок в этой адской кабинке был древним, заржавевшим и абсолютно дерьмовым. Стоило Марусе дёрнуть ручку, как механическую защёлку намертво заклинило. Будущая угонщица космических кораблей оказалась заперта в тесной, раскалённой полуденным солнцем пластиковой будке. Вонь внутри стояла такая густая и едкая, что выедала глаза даже пролетавшим мимо навозным мухам.
Через десять минут истеричной паники Маруся поняла, что выбить толстый пластик ногами она не сможет, а дыхание уже начало перехватывать от концентрированного аммиака. И тогда она набрала Егора.
Сантехник до сих пор до мельчайших нот помнил её визгливый, задыхающийся вопль в телефонной трубке:
— Егорчик, спаси! Я в парке, в толчке! Замок заело, я сейчас задохнусь и умру-у-у-у!
И ведь он, идиотина пролетарская, бросил все свои дела! Он мчался через весь парк, расталкивая прохожих, как ужаленный в задницу олень, крепко сжимая в мозолистых руках набор отвёрток и свой любимый универсальный лом. Прибежав на место, молодой Егор мгновенно оценил критичность обстановки, умело поддел заклинивший ригель ломиком, вырвал с корнем замок и буквально вывалил наружу полубессознательную, зеленоватую Марусю.
Он спас её. Спас от неминуемой, позорной и невыносимо вонючей гибели в синем биотуалете. И эта мысль сейчас жгла его сильнее раскалённой кочерги.
Егор тяжело выдохнул, выныривая из липких, провонявших аммиаком воспоминаний. В тот день он, гордый собой, буквально на руках вынес эту позеленевшую дуру на свежий воздух, защитив от неминуемой и максимально позорной гибели.
Сантехник резко остановился, до хруста вцепившись побелевшими пальцами в трухлявый, покосившийся штакетник, и от души, с глубоким клокочущим хрипом сплюнул на сухую траву.
— Вачем?! — прорычал он в пустоту, бешено вращая налитыми кровью глазами. — Ну вачем я её тогда фпаф?! Офтавил бы в этом толчке — она бы там и задохнулафь к ебеням!
Он тряхнул гнилой забор так, что тот жалобно скрипнул и осыпался трухой на грязные ботинки.
— И не было бы никакого Абфелоида! — продолжал бушевать Егор, в ярости раскачивая штакетник. — Ни выбитых вубов, ни этого ебучего Вефельчака Укла! Вачем я вообфе тогда дал ей фвой номел на куфке калтона?!
Его святая, бескорыстная пролетарская доброта больно, с особым изощренным цинизмом аукнулась ему спустя шестьдесят лет и миллионы километров космической пустоты. Окажись он тогда чуточку черствее, не ответь на истеричный звонок, проигнорируй чужую беду — и жил бы себе спокойно, чинил бы задвижки на теплотрассах, пил нефильтрованное по выходным и горя не знал.
Но жалеть о прошлом было поздно.
Егор сурово вытер перепачканный нос рукавом рваной, пропахшей гарью робы, сжал пудовые кулаки и сделал последний, решительный шаг. Бежевая, стерильная и вылизанная черта города осталась позади, словно отрезанная невидимым ножом. Асфальт резко оборвался. Тяжелые ботинки сантехника зашуршали по густым, мясистым лопухам и жгучей злой крапиве высотой по пояс.
А там, в самом центре этих непролазных диких зарослей, за ржавым остовом старой калитки показался перекошенный, полусгнивший частный дом с давно провалившейся крышей и мутными, заросшими паутиной окнами. Логово врага, пережившего саму эпоху, было прямо перед ним. Время платить по счетам наконец-то настало.
Глава 22. В свинарнике Марии Глебовны[править]
Сгнившая деревянная дверь халупы поддалась с первого же пролетарского пинка.
ХРЯСЬ!
С покосившейся петли слетел ржавый верхний крюк, и дверь с тоскливым, протяжным скрипом распахнулась настежь, ударившись о стену и впустив Егора в полутёмные сени. Сантехник ворвался внутрь, словно карающий метеор в грязной спецовке. Он размахивал сбитыми в мясо кулаками, тяжело топал подкованными сапогами и орал на весь заросший лопухами пустырь ту самую речь, которую с такой любовью репетировал весь свой долгий путь:
— МАЛУФЯ, ФУКА! ВЫХОДИ, ПАДЛА! Я ПЛИФОЛ ВА ТВОИМИ ВУБАМИ! ФПЛОФИТЬ Ф ТЕБЯ ЗА ЛАКЕТУ И ЗА АБФЕЛОИД!
Его шепелявый рык гремел под ветхой крышей, обещая 88-летней угонщице все кары небесные и космические. Сантехник был готов рвать, метать, хватать за грудки и вершить долгожданное правосудие.
Но едва Егор переступил порог жилой комнаты, как готовый вырваться из глотки финальный боевой клич намертво застрял у него прямо в гортани. Сантехник аж поперхнулся, издав жалкий булькающий звук. Вся его свирепая решимость мгновенно испарилась от невидимого, но сокрушительного удара.
Это была стена запаха.
Егор судорожно зажал нос широкой, испачканной в саже ладонью и непроизвольно отступил на шаг назад, едва не споткнувшись о трухлявый порог. Внутри халупы царил такой беспросветный, циклопический и концентрированный свинарник, что рядом с ним даже великий фекальный апокалипсис на далеком Абсероиде казался стерильным образцом санитарной культуры. От густой, физически осязаемой вони у сантехника моментально заслезились налитые кровью глаза, а пролетарский рассудок впал в состояние глубочайшего ступора.
Пролетарские глаза Егора, привыкшие к самым тёмным и вонючим уголкам Солнечной системы, медленно адаптировались к полумраку. То, что он увидел, окончательно добило его боевой задор.
Всё пространство пола — от самого порога до дальнего угла — было сплошь скрыто под глубоким, в три слоя, плотным ковром из прелых сигаретных окурков, заплесневелых хлебных корок и сотен пустых литровых бутылок из-под самого дешёвого пойла. Сантехник сделал осторожный шаг вперёд, и под тяжёлой подошвой его сапога раздался оглушительный звенящий хруст и звон стекла.
Но это были лишь цветочки.
С провалившегося, давно не ремонтированного потолка прямо на середину комнаты непрерывно капала мутная, вонючая вода. Капли громко и ритмично стучали — кап, кап, кап — в наполненную вековую грязевую лужу, разлившуюся по прогнившим половицам. Вода вымывала из мусора новые порции слежавшейся грязи, наполняя помещение густым духом застоявшегося септика.
Из-за дикой, невыносимой влажности стены халупы сверху донизу покрылись буро-зелёным, сочным мхом. По этому мху, абсолютно никого не стесняясь и не обращая внимания на вломившегося гостя, вальяжными табунами пешком ходили жирные, размером со спичечный коробок, тёмно-рыжие тараканы. Они выглядели здесь полноценными хозяевами положения — сытыми, холёными и совершенно не боявшимися людей.
Егор стоял, ошеломлённо перебирая в голове всё, через что ему пришлось пройти. Он видел фекальный апокалипсис на далеком Абсероиде, он выживал среди ядовитых куч Говносруна и дышал угаром от сгоревших ракетных двигателей. Но здесь, в частном доме на окраине родного Стихоквадратска, царил совершенно особый, концентрированный бытовой кошмар. Это была не просто грязь, это было абсолютное, доведённое до крайности человеческое опускание.
В самом тёмном углу комнаты, прямо под дырявым участком потолка, на полусгнившем гвозде косо висела массивная рамка. Это был тот самый легендарный сертификат Книги Рекордов Гиннесса, о котором с таким придыханием рассказывал Подключение. За прошедшие тридцать лет официальный документ международного образца почти полностью заплыл липким жёлтым жиром, густой вековой паутиной и плотным слоем пыли.
Однако сквозь корку из засохшего мушиного помёта и копоти всё ещё гордо, словно издеваясь над окружающей разрухой, смутно просвечивали тиснёные золотом слова. Сертификат неумолимо свидетельствовал о колоссальном жизненном достижении хозяйки — отметке в 10 000 половых партнёров.
Егор судорожно сглотнул, стараясь дышать исключительно через рот. Скривив измазанное сажей лицо от непреодолимой брезгливости, сантехник сделал ещё несколько медленных шагов вглубь комнаты. Каждый его шаг по-прежнему сопровождался оглушительным хрустом — битое стекло, сухие корки и тысячи окурков жалобно трещали под тяжёлыми подкованными сапогами. Мусорный ковёр пружинил, выпуская из своих недр новые порции затхлого подвального смрада.
Свой путь Егор держал к эпицентру этого зловонного хаоса. Прямо под исторической реликвией стоял старый, продавленный до самого пола диван, из которого болезненными грыжами торчал рваный жёлтый поролон. И там, среди нагромождения тряпья, копошилось нечто. Под засаленным, серым от времени ватным одеялом слабо угадывались очертания живого существа, которое медленно и жалко шевелилось в полумраке.
Егор подошёл вплотную, брезгливо разгребая сапогами слежавшиеся окурки, и заглянул под засаленное ватное одеяло.
На рваном поролоне дивана лежала 88-летняя Мария Глебовна. От былой бойкой «нетакуси», из-за которой когда-то молодой Егор срывался с работы с ломиком наперевес, не осталось вообще ничего. Перед ним слабо шуршала и скрипела костями высохшая, как древняя египетская мумия, крошечная старушонка. Её голову покрывали жидкие клочки седых волос, глаза глубоко ввалились в глазницы, а абсолютно беззубый рот сморщился, напоминая куриную гузку.
Вокруг дивана, образуя своеобразный медицинский бастион, прямо на заплесневелом полу ровными рядами стояли десятки мутных пузырьков с дешёвыми сердечными каплями, выдавленные тюбики мазей от радикулита, пластиковые утки для мочи и пустые блистеры от обезболивающих. Старуха тяжело, с булькающим хрипом и свистом дышала, надсадно покашливая каждые три секунды, и с огромным трудом перекатывалась с боку на бок под тяжестью целого букета хронических болячек.
Услышав шум, она с трудом приоткрыла мутные, слезящиеся глаза.
— Кто там? — проскрипела Маруся голосом, похожим на треск сухой бересты. — Кто пришёл? Васенька, это ты, хулиган? Или Тёмочка из автомастерской? Ты коньячок принёс? Иди ко мне, мой сладкий, скидывай куртку…
Егор похолодел. По нетронутым слоям вековой пыли, девственной паутине на стульях и застоявшемуся запаху гниения было абсолютно очевидно, что ни Васенька, ни Тёмочка, ни вообще кто-либо из живых людей не переступал порог этой комнаты по меньшей мере лет десять. Старуха была абсолютно одна, брошенная всем миром и запертая в собственном угасающем мозгу, где ей до сих пор мерещились толпы молодых любовников.
Сантехник стоял над ней, высоко занеся свой тяжёлый кулак для смертельного, сокрушительного пролетарского удара, и не мог вымолвить ни слова. Налитые кровью глаза Егора медленно округлялись.
Бить было некого. Мстить было некому.
Все его великие, выстраданные в холодном космосе планы о кровавой расправе, о победных криках и триумфальном выбивании долгов за сломанную жизнь с жалким звоном разбились об этот беспросветный, вонючий и бесконечно жалкий бытовой ад. Рука Егора дрогнула и бессильно опустилась.
Глава 23. Гуманизм с двойным дном[править]
Занесённый над старой, перекошенной от времени и болезней харей кулак Егора мелкой дрожью вибрировал от колоссального напряжения. Его широкие костяшки, намертво сбитые в кровавое мясо о бронированную башку Гарбузовича и свиное рыло Весельчака Укра, налились тяжёлой, свинцовой кровью. Сантехник находился ровно в одном шаге от того, чтобы раз и навсегда поставить жирную точку в истории своего многолетнего космического унижения. Один точный, тяжёлый, истинно пролетарский удар сверху вниз — и от этой трухлявой, окончательно выжившей из ума черепахи останется только мокрое пятно на рваном поролоне.
Но Мария Глебовна, пребывая в глубоком маразме, даже не поняла, что над ней в эту самую секунду нависла реальная смертельная угроза.
Ввалившиеся, мутные и полуслепые глаза старухи безразлично уставились в прогнивший потолок, откуда прямо на её засаленное, пропитанное по́том одеяло мерно капала густая грязь. Она со свистом перевела дыхание, зашлась дряхлым, лающим кашлем, от которого мелко затрясся весь диван, и принялась искренне жалеть саму себя, шамкая дряблыми, иссохшими губами.
— Ой, кто бы ни пришёл… — жалобно заскулила Маруся, даже не пытаясь повернуть голову в сторону нависшего над ней палача. — Помоги, милок… Суставы крутит так, что сил никаких нет… Поясница совсем отнимается, изжога нутро жжёт, а в ушах гудит, будто мухи свайным молотом по перепонкам бьют…
Она снова надсадно закашлялась и продолжила свой бесконечный, пропитанный отчаянием монолог, который, судя по всему, повторяла в пустоту изо дня в день.
— Крыша течёт уже тридцать лет, и хоть бы одна живая душа починила… Тараканы эти рыжие совсем одолели, прохода не дают, прямо в уши ночью лезут, спать не могу… А ведь я не такая была! Я особенная была, милок, нетакуся настоящая… Меня сам Гиннесс задокументировал, золотом выбил! А теперь… теперь лежу тут в дерьме, одинокая, брошенная, никому не нужная, кашляю…
Старуха тяжело, с бульканьем вздохнула, и из её левого глаза по глубоким морщинам скатилась скупая слеза, прочертив светлую дорожку на грязной щеке.
— Господи… Хоть бы кто придушил уже, что ли, чтобы не мучиться… — проскрипела она с такой искренней, первобытной тоской, что в комнате на мгновение повисла мертвая тишина, прерываемая лишь мерзким хлюпаньем капающей с потолка воды.
Егор застыл, словно превратившись в монументальную бетонную статую.
Он молча смотрел на её дрожащие, скрюченные артритом пальцы, поразительно похожие на высохшие куриные лапы. Перевел взгляд на мутную, вонючую лужу, медленно расплывающуюся прямо под продавленным поролоновым диваном. На жирных, откормленных тараканов, которые совершенно вальяжно, как у себя дома, ползали по расставленным в ряд аптечным пузырькам с корвалолом. На отпадающие от многолетней сырости куски почерневших обоев, свисающие со стен грязными лохмотьями.
И внезапно в пролетарских мозгах сантехника будто что-то с громким, отчётливым щелчком переключилось. Словно в намертво забитом ржавчиной и окалиной чугунном стояке под адским давлением в триста атмосфер наконец-то пробило застарелую воздушную пробку. Рассудок Егора мгновенно прояснился.
«Убить её? — подумал Егор, и его налитые кровью глаза медленно расширились от внезапного озарения. — Я сейчас её прибью — и всё?! На этом конец?!»
В голове сантехника стремительно проносились железобетонные логические цепочки. Если этот тяжёлый кулак опустится, старая угонщица просто отключится. Она больше никогда не будет чувствовать, как у неё мучительно крутит суставы на погоду. Она больше не будет задыхаться, вдыхая эту концентрированную подвальную гниль. Не будет лежать в темноте и в ужасе слушать, как с потолка капает грязная вода, и не почувствует, как усатые твари шевелят лапками в её ушах.
«Я что, подарю этой суке лёгкую, мгновенную смерть?! — искренне возмутился про себя Егор, поражаясь собственной недальновидности. — Сделаю ей милосердие, о котором она сама только что просила?! Ну уж хрен там плавал!»
Егор медленно, очень медленно разжал свой пудовый кулак. Напряжённые пальцы, секунду назад готовые сокрушить череп врага, с неохотным хрустом распрямились.
Пришло чёткое, безжалостное понимание: быстрая смерть в таком жалком, опущенном состоянии была вовсе не суровым наказанием. Она была бы для Маруси настоящим королевским подарком, долгожданным избавлением от ежедневного, беспросветного адского бытия, в которое она сама себя загнала. А делать подарки «нетакусям» сантехник больше не собирался.
— Нет… — едва слышно прошептал Егор.
На его ободранном, покрытом космическими шрамами и въевшейся сажей беззубом лице медленно расплылась зловещая, по-настоящему сатанинская ухмылка. Он вдруг в полной мере осознал свою абсолютную власть над этой ситуацией. Отнять жизнь у разваливающейся на куски старухи значило оказать ей величайшую услугу.
— Нет, Малуфя… — прошипел сантехник с непередаваемым садистским наслаждением. — Ты так легко не отделаеффя…
Услышав едва знакомое шипение, старуха тревожно завозилась на своём продавленном ложе.
— Что ты там шамкаешь, милок? — жалобно простонала Мария Глебовна, беспомощно пошарив скрюченной, похожей на птичью лапу рукой по грязному одеялу в тщетных поисках заветного пузырька с валидолом. — Ничего не разберу… Водички подай, горло пересохло…
Егор не сдвинулся с места, чтобы выполнить её просьбу. Вместо этого он вплотную подступил к самому краю зловонного дивана, нависая над ним мрачной горой. Сантехник низко наклонился над угасающей старухой — так близко, что она могла бы почувствовать терпкий запах канифоли и жжёного машинного масла, исходящий от его рваной спецовки.
Медленно стравливая воздух через зияющий провал в челюсти, Егор тихо, с холодной расстановкой прошамкал ей прямо в сухое, морщинистое ухо свой окончательный, безжалостный приговор:
— Выви, Малуфя. Выви долго-долго. Фтобы у тебя кавдый фуфтав тлефял на погоду. Фтобы кавдый талакан ф тобой лично вдоловалфя. Ты у меня в этом финалнике ефё минимум лет тлидцать плопелдиф!
Вынеся свой безжалостный вердикт, Егор резко выпрямился. Не обращая внимания на жалкое кряхтение и мольбы о стакане воды за спиной, он круто развернулся и решительно направился к выходу. Мусорный ковёр под ногами снова отозвался оглушительным хрустом, когда сантехник брезгливо перешагнул через целую горную гряду пустых литровых бутылок, слипшихся окурков и плесневелых корок.
Оставив Марусю наедине с её персональным адом, протекающим потолком и полчищами тараканов, он пересёк тёмные сени и выскочил из полусгнившей халупы наружу. В лицо сразу ударил прохладный ветер заросшего лопухами пустыря. После концентрированного аммиачного зловония и удушливого запаха разложения этот воздух показался Егору слаще самого свежего нефильтрованного пива. Сантехник с шумом, жадно втянул его полной грудью, расправляя пробитые дронами рёбра.
Вместе с этим глубоким вдохом произошло нечто удивительное. Та слепая, испепеляющая, дурацкая ярость, которая кипела в его груди все эти месяцы, гнала через половину Солнечной системы и заставляла сжимать кулаки до хруста сухожилий, бесследно испарилась. Бурлящий котел примитивной ненависти разом потух, унеся с собой обиды за угнанную ракету и дни, проведенные на Абсероиде, растянувшиеся в земные десятилетия. В голове осталась лишь кристальная, звенящая ясность.
На месте сгоревших эмоций расцветало нечто совершенно иное. В сознании бывалого пролетария начал стремительно формироваться новый — холодный, математически расчётливый и по-настоящему изощрённый план. План совершенной, абсолютной мести, которая не позволит бывшей «нетакусе» так просто улизнуть на тот свет. Теперь Егор точно знал, что нужно делать.
Глава 24. Три оставшихся выбитых зуба[править]
Перед тем как окончательно покинуть зловонную трущобу и оставить Марусю наедине с её персональным адом, Егор внезапно затормозил. Его взгляд зацепился за покосившуюся, облупившуюся тумбочку, стоявшую в самом изголовье старушечьего дивана. Поддавшись внезапному инстинкту, сантехник дёрнул на себя перекошенный верхний ящик и изумленно ахнул.
Всё нутро тумбочки было доверху забито тугими, перетянутыми канцелярскими резинками пачками старых бумажных миллионов.
— Ого! — искренне обрадовался Егор, жадно сгребая хрустящие, пахнущие плесенью пачки в охапку. На его грязном лице расплылась широкая беззубая улыбка. — Вот это я удачно зафол! Малуфя, я забилаю твой кэф! Фяф пойду и вфё плопью!
Мария Глебовна лишь тяжело, с надсадным свистом вздохнула. Она медленно повернула к нему свою высохшую, похожую на обтянутый пергаментом череп голову и равнодушно прохрипела:
— Забирай, дурачина… Всё равно завтра за ними мошенник должен был прийти, а мне не жалко… На них даже буханку хлеба не купишь. Бумажные деньги уже тридцать лет никто не принимает.
— Фто вначит «не плинимает»?! — возмущённо наморщил лоб Егор, до хруста сжимая в кулаке толстую пачку купюр. — Это вэ миллионы!
— А то и значит, — надсадно прокашлялась старуха, выплёвывая слова вместе с хрипом. — Перевод старой налички в цифровые деньги — это длительная, адская банковская процедура с проверкой каждого рубля. Если эти бумажки понесёт в банк кто-то кроме меня, его прямо у окошка скрутит полиция. Даже профессиональные преступники через сотню посредников и липовые фирмы теряют до девяноста процентов суммы, просто чтобы легализовать эту резаную бумагу!
Егор смерил старуху мрачным взглядом, понимая, что в этом новом, вылизанном мире даже горы денег превратились в абсолютный мусор.
Сантехник с досадой и злостью сплюнул прямо на хрустящий ковёр из окурков. Он с размаху швырнул бесполезные миллионы обратно в вонючую тумбочку, задвинул ящик ногой и пулей выскочил из дома, стремясь как можно скорее покинуть этот рассадник тлена.
Вырвавшись из заросшего жгучей крапивой и лопухами пустыря, Егор снова оказался на стерильной, вылизанной территории бежевого города. Не теряя ни секунды, сантехник рванул по идеальным тротуарам обратно к логистическому складу. Его тяжёлые подкованные сапоги гулко стучали по чистому асфальту, а в груди клокотали нетерпение и спортивный азарт новоявленного мстителя.
Преодолев несколько кварталов, Егор наконец-то завидел знакомый фасад. Подключение никуда не ушёл — информатор всё так же спокойно стоял, прислонившись к ровной стене склада, словно знал, что пролетарский набег на старушечьи сбережения закончится полным провалом.
— Подключение! Флыф, Подключение! — запыхавшись, заорал Егор еще на бегу, яростно размахивая пудовыми кулаками.
Он резко затормозил перед информатором, тяжело опёрся мозолистыми руками о колени и жадно начал хватать ртом прохладный воздух.
— Бумафки — дельмо! — выплюнул сантехник, с трудом восстанавливая дыхание и вытирая пот со лба грязным рукавом. — Ничего они не фтоят! А мне нувэн кэф, фтобы офолмить Малуфе путёвку в ад!
Егор резко выпрямился и гневно развёл руками, демонстрируя свою полную техническую несостоятельность в 2087 году:
— Где мне плямо фейчаф ввять цифловые деньги?! У меня ни пафполта, ни документов, ни смалтфона твоих влемён нету! Давай, думай, как мне бабки получить!
Подключение тяжело вздохнул, снисходительно оглядел потного, тяжело дышащего сантехника с ног до головы и медленно указал пальцем на вылизанный бежевый фасад соседнего здания.
— Смартфоны — это прошлый век, дедуля, — лениво протянул информатор. — Видишь вон ту круглосуточную стоматологию? Посмотри правее. Рядом с главным входом в стену вмонтировано небольшое отверстие, помеченное светящимся эмодзи 🦷.
Егор прищурился, пытаясь сфокусировать зрение.
— Это биометрический пункт приёма органического сырья, — продолжил Подключение ровным голосом. — Бросаешь туда натуральный человеческий зуб — и система мгновенно конвертирует его в твёрдые цифровые деньги. Специально заводить электронный кошелёк, заполнять бумаги или таскать с собой пластик не нужно. Твой счёт виртуально создаётся автоматически, по твоей ДНК и биометрии прямо в момент сдачи.
— Вуб?! — глухо переспросил Егор. На его измазанном сажей лице вдруг проступило выражение абсолютного, фанатичного восторга, а глаза хищно блеснули.
Сантехник торопливо сунул руку в глубокий карман своих промасленных штанов. Порывшись среди ржавых гаек, окурков и мотков синей изоленты, он выгреб на свет три зуба. Два центральных резца и клык. Он бережно хранил их в кармане как священную память о великих космических сражениях, как трофеи, полученные в битве с прионозухом. И теперь этот капитал должен был послужить высшей цели.
Не теряя ни секунды, Егор сорвался с места и рванул к стоматологии. Подлетев к заветной дырке с нарисованным зубом, он один за другим, не дрогнув, отправил все три костяшки в тёмное нутро автомата.
ЩЁЛК! ЩЁЛК! ЩЁЛК!
Из терминала раздался приятный, сочный механический клик подтверждения транзакции. И в ту же секунду прямо в голове Егора, где-то глубоко между затылком и мозжечком, прозвучал мягкий, мелодичный виртуальный сигнал. Невидимый цифровой кошелёк был успешно создан и щедро пополнен.
Окрылённый успехом и звенящим в голове виртуальным балансом, Егор со всех ног примчался назад к логистическому складу. Подключение даже не сдвинулся с места. Он всё так же невозмутимо стоял у стены, но теперь внимательно подносил к глазам собственную левую ладонь. Прямо на сухой коже информатора, словно на встроенном голографическом экране, с невероятной скоростью прокручивалась светящаяся неоном лента свежих объявлений.
— Давай сюда палец, — деловито скомандовал Подключение, даже не отрывая взгляда от своей мерцающей руки.
Егор без лишних вопросов ткнул толстым, въевшимся в мазут указательным пальцем прямо в центр ладони информатора. В ту же секунду по всему телу сантехника от макушки до пяток пробежал лёгкий, покалывающий холодок. Он почти физически ощутил, как только что вырученные за боевые зубы цифровые деньги мгновенно перетекли из его виртуального кошелька в глобальную систему и намертво заморозились на специальном расчётном счёте.
— Отлично, — кивнул Подключение.
Лёгким, привычным движением пальцев правой руки он ловко свернул светящуюся ленту на ладони в виртуальную трубочку и стёр её с кожи, словно обычную пыль. Кожа информатора снова стала матовой и пустой.
— Суммы за три зуба как раз хватит на оплату одного месяца нужных тебе услуг, — произнес Подключение, хищно прищурившись. — Я уже раскидал целевое объявление в нижнем секторе социального обслуживания. Ровно через час к зловонной халупе твоей Марии Глебовны на кастинг придут несколько очень опытных, профессионально выгоревших и крайне токсичных сиделок.
Информатор хлопнул Егора по плечу, отправляя его вершить правосудие:
— Твоя задача проста. Ты придёшь туда, посмотришь на этот паноптикум и выберешь самую конченую, самую злобную и невыносимую каргу из всех. Как только определишься — просто нажмёшь своим пальцем на её ладонь. Контракт будет запечатан. И после этого твой замороженный кэш начнёт ежедневно списываться в её пользу, гарантируя старухе месяц абсолютного, беспросветного ада.
Глава 25. Кастинг мечты и триумф Миланы Ашотовны[править]
Ровно через час перекошенная халупа Марии Глебовны окончательно превратилась в съёмочную площадку абсурдного, сюрреалистичного хоррора. В вонючие, заплывшие окурками и оккупированные тараканами сени одна за другой молчаливо вошли девять претенденток на должность сиделки.
Кастинг начался.
Правила, установленные невидимой цифровой биржей, были строгими: никакого живого диалога и пустой болтовни. Каждой соискательнице отводилось ровно по десять минут, чтобы на практике продемонстрировать свои профессиональные навыки ухода за тяжелобольной 88-летней «нетакусей» в этих экстремальных бытовых условиях.
Первые восемь кандидаток — женщины самых разных возрастов, от двадцатилетних девушек до пятидесятилетних бежевых мещанок — выполняли свою работу в абсолютной, звенящей тишине. В их движениях не было ни грамма энтузиазма, ни единой капли человеческого тепла, но при этом не прослеживалось и настоящей, живой злости. Они трудились как механические зомби.
Каждые тридцать секунд эти стерильные работницы замирали прямо посреди вонючей лужи, с тоской тащились в светящиеся голографические экраны на собственных ладонях и судорожно отправляли запросы всезнающим нейросетям:
«ИИ, бабка стонет, какой промпт ввести?»
«ИИ, как перевернуть старуху и не испачкать бежевый маникюр?»
«ИИ, сгенерируй алгоритм по заталкиванию валидола в сухой рот».
Получив ответ, сиделки бездушно, молча и с глубочайшим отвращением выполняли указки искусственного интеллекта. Они сухо пихали в старуху ложку с лекарством, поправляли засаленное ватное одеяло с угловатой грацией гидравлического манипулятора и снова тупо утыкались взглядом в ладонь. Мария Глебовна, столкнувшись с такой безупречно стерильной, роботоподобной заботой, лишь тоскливо закрывала мутные глаза. Ей было холодно, одиноко и невыносимо тошно.
И тут на зловонном «ринге» появилась девятая кандидатка.
Ей было шестьдесят семь лет, и звали её Милана Ашотовна. На её грузной, монументальной фигуре мешком висел засаленный, безразмерный полинялый халат цвета блёклого, несвежего борща. На обрюзгшем лице застыла вечная, изрезанная морщинами, словно Великий Каньон, мина глубочайшего, искреннего презрения ко всему живому человечеству.
Милана Ашотовна не стала смотреть ни на какие модные голографические экраны. Она даже мельком не взглянула на свою мозолистую ладонь. В её широких жилах кипела древняя, неистребимая культура старого доброго бытового хамства, которую не смогли вытравить никакие рафинированные нейросети.
Едва переступив гнилой порог, 67-летняя сиделка смачно втянула широким носом спёртый воздух, громко, сочно сморкнулась прямо в развалившийся на покосившемся подоконнике горшок с засохшей геранью и без всякого искусственного интеллекта пошла в лобовую атаку.
— А ну закрыла рот! — неожиданно рявкнула Милана Ашотовна так мощно, что от неожиданности подпрыгнула не только полумёртвая Мария Глебовна, но и парочка жирных рыжих тараканов на стене. — Разлеглась тут, ишь, барыня какая выискалась!
Старуха на диване испуганно захрипела, пытаясь сжаться в жалкий комок под своим грязным ватным одеялом и хлопая мутными глазами.
— Лежать ровно, кому сказала! — продолжала бушевать сиделка, надвигаясь на диван неотвратимым бордовым ледоколом и презрительно пиная пустые бутылки. — Разлеглась на весь диван, ноги скрючила, раскорячилась! Тьфу, смотреть противно! Никакого сладу с вами, симулянтами, нет!
С ловкостью и безжалостностью бывалого омоновца при разгоне митинга Милана Ашотовна схватила старуху прямо за грудки. Мощным, отработанным годами рывком она крутанула Марусю на бок, да так лихо, что в повисшей тишине отчётливо, словно сухие ветки, хрустнули все чудом сохранившиеся позвонки бывшей «нетакуси».
— Выпей горькую таблетку и не вздумай мне тут плеваться! — грозно скомандовала сиделка, бесцеремонно и с силой впечатывая дешёвую пластиковую ложку с лекарством прямо в сухие, беззубые дёсны старухи. — Разнылась она! Я тебе не девка по вызову, чтобы сопли тут вытирать! Ещё раз стонать мне будешь — швабру к ноге привяжу, поняла?!
Мария Глебовна слабо пискнула и в ужасе зажмурилась, глотая горькую пыль.
Егор стоял в самом тёмном углу халупы, плотно прижавшись широкой спиной к отпадающим сырым обоям. По его грязной, изрезанной космическими шрамами щеке медленно скатилась одинокая скупая слеза — слеза истинного, ничем не замутнённого пролетарского восторга. Он смотрел на происходящее затаив дыхание. Это было потрясающе поэтично. Это было невероятно жестоко. Это была абсолютная, недосягаемая вершина токсичного человеческого искусства! Ни одна бездушная, вылизанная бежевая нейросеть не смогла бы сгенерировать столько первобытной, концентрированной ненависти к пациенту.
Не раздумывая больше ни единой секунды, Егор отлепился от стены. Он подскочил к Милане Ашотовне и со всего маху, словно ставя сургучную королевскую печать, прижал свой толстый, въевшийся в мазут палец к её сухой, мозолистой кисти.
ДЗИНЬ!
Где-то на подкорке раздался приятный виртуальный шелест. Замороженный на расчётном счёте цифровой кэш, с таким трудом вырученный за три выбитых в боях зуба, сразу перешёл в системе в пользу Миланы Ашотовны на целый месяц вперёд. Договор с дьяволом был подписан.
— Принято, — сухо буркнула Милана Ашотовна, даже не удостоив Егора мимолётным взглядом.
Система подтвердила перевод, и 67-летняя сиделка мгновенно потеряла к щедрому спонсору любой интерес, с головой уйдя в любимую работу. Она резко развернулась обратно к продавленному дивану и коршуном нависла над скорчившейся жертвой.
— А ну тихо, я сказала! — рявкнула она так свирепо, что с потолка отвалился размокший кусок штукатурки и шлёпнулся прямо в лужу. — Хватит дышать так громко, у меня от твоего хрипа уже голова болит! Лежать смирно, не моргать и смотреть в стену, пока я не разрешу!
Егор Туалетов в последний раз окинул взглядом эту потрясающую, радующую глаз картину. Он удовлетворённо, с чувством выполненного долга кивнул самому себе и выскочил из полусгнившей халупы наружу. В лицо немедленно ударил прохладный, стерильный воздух бежевых улиц Стихоквадратска.
В широкой груди космического сантехника, под рваной, пропахшей гарью спецовкой, царил абсолютный, ничем не замутнённый кристальный покой. Месть, перед которой он пролетел миллионы километров, терпел лишения на Абсероиде и дрался с его жителями, наконец-то состоялась в самом изящном виде. Мария Глебовна была надёжно, словно муха в янтаре, упакована в адский кокон из протекающей крыши, тараканов и бескомпромиссного, беспощадного ухода Миланы Ашотовны на долгие месяцы вперёд.
Егор с шумом втянул носом свежий ветер, вытер лицо порванным рукавом и привычным пролетарским жестом поправил на макушке несуществующую синюю кепку. Он окинул прищуренным взглядом идеальные, вылизанные проспекты незнакомого города будущего. Теперь перед ним вырисовывалась совершенно новая, предельно ясная жизненная задача. Ему нужно было срочно найти хоть какую-то работу. Ведь для того, чтобы исправно продлевать услуги этой прекрасной, душевной сиделки из года в год, а заодно покупать себе на ужин хотя бы брикет сухой завариваемой лапши, требовались новые цифровые деньги.
Но это уже совсем другая история.
Игра по мотивам произведения[править]
import os
import sys
import time
import random
import shutil
from decimal import Decimal
SIZE = 114
HALF_W = SIZE // 2
VIEW = 15
HALF = VIEW // 2
CELL_W = 2
TL_SYM = '\U0001F539'
TR_SYM = '\U0001F538'
BL_SYM = '\u25ab\ufe0f'
BR_SYM = '\u25aa\ufe0f'
DIAMOND = '\u2666\ufe0f'
BLUE_SQUARE = '\U0001F7E6'
BUILDING = '\U0001F3E2'
SHOP = '\U0001F3EA'
PLUNGER = '\U0001FAA0'
AXE_SYM = '\U0001FA93'
STICK_SYM = '\U0001F962'
BRICK = '\U0001F9F1'
LOG_SYM = '\U0001FAB5'
WINDOW_SYM = '\U0001FA9F'
JACK_O_LANTERN = '\U0001F383'
DRAGON = '\U0001F409'
ALIEN = '\U0001F47D'
SEED = '\U0001F331'
HERO = '🧑\u200d🔧'
HUMAN = '🧑'
EXPLOSION = '\U0001F4A5'
ROCKET_SYM = '\U0001F680'
ROBOT_SYM = '\U0001F916'
RUGBY_SYM = '\U0001F3C9'
POOP_SYM = '\U0001F4A9'
TOMB = '\U0001FAA6'
DOOR = '\U0001F6AA'
FACTORY = '\U0001F3ED'
TREE = '\U0001F333'
ROCK = '\U0001FAA8'
CRANE = '\U0001F3D7\ufe0f'
BATTERY = '\U0001F50B'
BATTERY_LO = '\U0001FAAB'
WEB = '\U0001F578\ufe0f'
RAIN = '\U0001F327\ufe0f'
GHOST = '\U0001F47B'
LIGHTNING = '\u26C8\ufe0f'
PUMPKIN = '\U0001FADB'
DRONE_SYM = '\U0001F681'
PIG_SYM = '\U0001F437'
BIRD_SYM = '\U0001F426'
DASH_SYM = '▪️'
MONITOR_SYM = '\U0001F5A5\ufe0f'
JOYSTICK_SYM = '\U0001F579\ufe0f'
FIRE_SYM = '\U0001F525'
HIT_SYM = '\U0001F91C'
ANGER_SYM = '\U0001F4A2'
HOT_SYM = '\U0001F975'
MEAT_SYM = '\U0001F969'
WHITE_FLAG = '\U0001F3F3\ufe0f'
UA_FLAG = '\U0001F1FA\U0001F1E6'
STAR_SYM = '\U0001F31F'
SPARKLE_SYM = '\U0001F4AB'
JAMMER_SYM = '\U0001F4E1'
PICK_SYM = '\u26CF\ufe0f'
POLICE_LIGHT = '\U0001F6A8'
STOP_SIGN = '\U0001F6D1'
RADIO_BUTTON = '\U0001F518'
CLOUD_SYM = '\u2601\ufe0f'
CIGARETTE = '\U0001F6AC'
HEEL = '\U0001F460'
HEART_SUIT = '\u2665\ufe0f'
RED_TRIANGLE = '\U0001F53B'
SOS_SYM = '\U0001F198'
ARIES_SYM = '\u2648\ufe0f'
RED_CIRCLE = '\u2B55'
BARGAIN_SYM = '\U0001F19A'
DROPLET_SYM = '\U0001F4A7'
FLY_SYM = '\U0001FAB0'
COCKROACH_SYM = '\U0001FAB3'
BOTTLE_SYM = '\U0001F37E'
OLD_WOMAN = '\U0001F475'
NEST_SYM = '\U0001FAB9'
FINGERPRINTS = '\U0001FAC6'
FLYING_DISC = '\U0001F94F'
RED = '\033[91m'
GREEN = '\033[92m'
ORANGE = '\033[38;5;208m'
RESET = '\033[0m'
START = (HALF_W // 2, HALF_W // 2)
DRAGON_CELL = (START[0] + 1, START[1])
ALIEN_CELLS = {
(START[0], START[1] - 3),
(START[0], START[1] + 3),
(START[0] - 3, START[1]),
(START[0] + 3, START[1]),
}
DIAMOND_CELLS = {(x, y) for x in range(START[0]-2, START[0]+3)
for y in range(START[1]-2, START[1]+3)}
MINE_CENTER = (HALF_W + HALF_W // 2, HALF_W + HALF_W // 2)
MINE_CELLS = {(MINE_CENTER[0]+dx, MINE_CENTER[1]+dy)
for dx in range(-2, 3) for dy in range(-2, 3)
if dx != 0 and dy != 0}
ROCKET_POS = (HALF_W // 2, HALF_W + HALF_W // 2)
RING = {(ROCKET_POS[0]+dx, ROCKET_POS[1]+dy)
for dx in (-1, 0, 1) for dy in (-1, 0, 1)
if (dx, dy) != (0, 0)}
ROBOT_START = (ROCKET_POS[0], ROCKET_POS[1] — 1)
TR_CENTER = (HALF_W + HALF_W // 2, HALF_W // 2)
TR_PATTERN = [
[TOMB, TOMB, DOOR, TOMB, TOMB],
[TOMB, None, None, None, TOMB],
[DOOR, None, FACTORY, None, DOOR],
[TOMB, None, None, None, TOMB],
[TOMB, TOMB, DOOR, TOMB, TOMB],
]
DECOR = {}
for j, row in enumerate(TR_PATTERN):
for i, sym in enumerate(row):
if sym is not None:
DECOR[(TR_CENTER[0] - 2 + i, TR_CENTER[1] - 2 + j)] = sym
HARD_BLOCKED = ({ROCKET_POS, DRAGON_CELL}
| ALIEN_CELLS
| set(DECOR.keys()))
FACTORY_CELL = (TR_CENTER[0], TR_CENTER[1])
SQUARE_CENTERS = [
(HALF_W // 2, HALF_W // 2),
(HALF_W + HALF_W // 2, HALF_W // 2),
(HALF_W // 2, HALF_W + HALF_W // 2),
(HALF_W + HALF_W // 2, HALF_W + HALF_W // 2),
]
PROTECTED = set()
for cx, cy in SQUARE_CENTERS:
for dx in range(-3, 4):
for dy in range(-3, 4):
PROTECTED.add((cx + dx, cy + dy))
_available = [(x, y) for x in range(SIZE) for y in range(SIZE)
if (x, y) not in PROTECTED]
random.shuffle(_available)
poops = set(_available[0:800])
trees = set(_available[800:1600])
rocks = set(_available[1600:2400])
cranes = set(_available[2400:3200])
del _available
buildings = set()
shops = set()
ALL_OBJECTS = poops | trees | rocks | cranes
NON_BARE = (ALL_OBJECTS | HARD_BLOCKED | MINE_CELLS | DIAMOND_CELLS
| PROTECTED | {ROBOT_START, START})
webs = set()
for x in range(SIZE):
for y in range(SIZE):
if (x, y) in NON_BARE:
continue
left = (x - 1, y) in ALL_OBJECTS
right = (x + 1, y) in ALL_OBJECTS
up = (x, y - 1) in ALL_OBJECTS
down = (x, y + 1) in ALL_OBJECTS
if (left and right) or (up and down):
webs.add((x, y))
DEATH_MINE_MSG = 'ТЫ ПОДОРВАЛСЯ НА ФЕРМЕРСКОЙ МИНЕ!'
DEATH_SHOT_MSG = 'ТЫ УБИТ ВЫСТРЕЛОМ ИЗ ГОВНОМЁТА!'
DEATH_CLOUD_MSG = 'ТЕБЯ УБИЛА МОЛНИЯ!'
DEATH_DRAGON_MSG = 'ПРИОНОЗУХ НЕ УЗНАЛ ТЕБЯ\nИ ПРОГЛОТИЛ ЦЕЛИКОМ!'
DEATH_DRONE_MSG = 'В ТЕБЯ ПОПАЛ ДРОН И ВЗОРВАЛСЯ!'
DEATH_POOP_MSG = 'ТЫ ПОГИБ ПОД ОГРОМНОЙ КУЧЕЙ ГОВНА!'
SHOOT_MSG = '🤖: ДОСТУП ЗАПРЕЩЁН!'
RELOAD_MSG = '🤖 *перезаряжает говномёт*'
HINT = 'ЕНГПОМИТ — движение, Р — пропуск хода, Q — выход'
WEB_MSG_1 = 'Ты запутался в паутине!'
WEB_MSG_2 = 'Нажми Р, чтобы распутаться.'
NO_ENERGY_MSG = 'Не хватает энергии!'
DOOR_SMASH_MSG = 'Ты разнёс дверь в щепки!'
FACTORY_MSG = ('Для заводской сборки ракеты из говна и палок\n'
' необходимы 25🏉, 25🥢 и 1🔧!')
ALIEN_HUMAN_MSG = f'{ALIEN}: Ты кто такой? Давай, до свидания!'
DRONE_STUCK_1_MSG = 'ДРОН ЗАСТРЯЛ В ПАУТИНЕ!'
DRONE_STUCK_N_MSG = 'НЕСКОЛЬКО ДРОНОВ ЗАСТРЯЛИ В ПАУТИНЕ!'
DRONE_DESTROY_MSG = 'ТЫ УНИЧТОЖИЛ ВРАЖЕСКИЙ ДРОН! 💪💪💪'
BIRD_TAUNT_MSG = ('🐦: ПТИ-ЦА ГОВ-НО-СРУН ОТ-ЛИ-ЧА-ЕТ-СЯ\n'
'ГОВ-НОМ И ПРО-ИЗ-ВО-ДИ-ТЕЛЬ-НО-СТЬЮ!')
DIALOG_LINES = [
f'{DRAGON}: Мы уже 4 часа дерёмся, всё озеро в крови!',
f'{HERO}: Да это лывая флюха наф натлавила',
'длуг на длуга.',
f'{DRAGON}: А зачем тогда мы дерёмся?',
'У тебя уже здоровье заканчивается!',
'Ещё немного, и я смогу съесть твой труп!',
f'{HERO}: Ты плав, хватит длаться. Мне пола на Вемлю.',
f'{DRAGON}: Забудь о Земле! 🤣 Пока ты махал киркой,',
'твоя рыжая шлюха уже улетела',
'на единственной неохраняемой ракете!',
]
DIALOG_SECONDS = 10
CLOUD_DIALOG_LINES = [
f'{GHOST}: Эй, Егорка, давай поиграем!',
'Я Капитошка, а это мой дожделёт!',
f'{HERO}: Я не флю на тли буквы кого попало,',
'но конклетно ТЫ этого умудрился вафлувыть,',
'поэтому пофол на хуй!',
f'{GHOST}: Тебе придётся поиграть со мной,',
'если хочешь жить, грубиян! 🤪',
]
CLOUD_DIALOG_SECONDS = 5
PUMPKIN_DIALOG_LINES = [
f'{JACK_O_LANTERN}: Это моё гороховое поле. Респект за дождь!',
f'{HERO}: Ух ты, лефпект! \nА лывая флюха только дивлефпекты получала!',
f'{JACK_O_LANTERN}: Спасибо, ты свободен.',
f'{HERO}: В фмыфле?! А как вэ игловой плоглефф?',
f'{JACK_O_LANTERN}: Тебе мало того, что ты остался жив?',
]
PUMPKIN_DIALOG_SECONDS = 5
PUMPKIN_SHOP_DIALOG_LINES = [
f'{HERO}: Фто ва ебанутые цены у ваф в магавине?',
f'{JACK_O_LANTERN}: 1+2=12, всё правильно.',
f'{HERO}: Но это вэ не string, a integer!',
f'{JACK_O_LANTERN}: В любом случае продавцы тебя запомнили',
'и больше не пустят. Но есть идея...',
f'{HERO}: Фто ва идея?',
f'{JACK_O_LANTERN}: Отдай мне кепку и гаечный ключ.',
'Теперь продавцы тебя не узнают.',
]
PUMPKIN_SHOP_HUMAN_DIALOG_LINES = [
f'{HUMAN}: Вфё получилофь, фпафибо!',
'А тепель велни мне кепку и гаечный ключ.',
f'{JACK_O_LANTERN}: Мужчина, Вы кто? Я Вас впервые вижу.',
f'{HUMAN}: ГОНИ КЛЮЧ, ПИДОЛ,',
'ПОКА Я ТЕБЕ ТЫКВУ НЕ ЛАВНЁФ!',
f'{JACK_O_LANTERN}: Ничего Вы мне не сделаете, беззубый мистер.',
'Лососните тунца.',
]
JAMMER_DIALOG_LINES = [
f'{JACK_O_LANTERN}: У меня есть глушилка дронов,',
'но в твой инвентарь она не влезет.',
f'{HUMAN}: ОК, я могу выблофить говно или палки.',
f'{JACK_O_LANTERN}: Не, говно и палки оставь,',
'они тебе вот-вот пригодятся.',
'А вантуз, топор и кирку отдай мне на хранение.',
'',
'Х — хорошо; Э — э, нет!',
]
BIRD_DIALOG_LINES = [
f'{JACK_O_LANTERN}: Ты что наделал, вандал? Дизреспект тебе!',
f'{HUMAN}: Так тебе и надо, халя ты евлейфкая!\nОбойдёффя в этом году бев голоха!',
f'{JACK_O_LANTERN}: Ты хоть знаешь, кого ты выпустил?!\nЭто же ГОВНОСРУН! 😱😱😱',
]
BIRD_DIALOG_SECONDS = 5
BIRD_HOP_SECONDS = 0.5
BIRD_HOP_COUNT = 15
DRONE_DIALOG_LINES = [
f'{HUMAN}: Бля, давэ вдефь двоны летают! 😱',
f'{PIG_SYM}: Це я, оператор БПЛА Весельчак Укр!',
' Що, москалику, злякався?',
f'{HUMAN}: Я из Абфулдоляндии, а не из Лоффии, плидулок!',
f'{PIG_SYM}: Усі ви, кацапи, однакові.',
'Геть з нашої землі! Героям сала!',
]
DRONE_DIALOG_SECONDS = 5
ALIEN_DIALOGUES = [
[f'{ALIEN}: Хорошая была битва. А пока ты дрался,',
'мы присоединили новые территории',
' и провели тотальную реконструкцию Абсероида.'],
[f'{ALIEN}: Не плачь, Егорка, у нас есть ещё одна ракета.',
'Её охраняет умственно отсталый робот Калдат.',
'Просто убей или перехитри его и лети на свою Землю.'],
[f'{ALIEN}: Ты вооружён, не задыхаешься от нашей атмосферы',
'и можешь ходить по диагонали.',
'Фигасе ты имбовый штрих!'],
[f'{HERO}: А ты фто мне фкавэф?',
f'{ALIEN}: Ты можешь построить свою ракету, с блэкджеком и...',
'Ах да, твоя шлюха улетела. 🤣🤣🤣'],
]
SHOP_SCENE_LINES = [
f'{BRICK}{BRICK}{BRICK}{BRICK}{BRICK}{BRICK}{BRICK}{BRICK}{BRICK}',
f'{BRICK}▪️▪️▪️▪️▪️▪️▪️{BRICK}',
f'{BRICK}▪️{PLUNGER}▪️▪️▪️{AXE_SYM}▪️{BRICK}',
f'{BRICK}▪️▪️▪️{ALIEN}▪️▪️▪️{BRICK}',
f'{BRICK}{LOG_SYM}{LOG_SYM}{LOG_SYM}{LOG_SYM}{LOG_SYM}{LOG_SYM}{LOG_SYM}{BRICK}',
f'{BRICK}▪️▪️▪️{HERO}▪️▪️▪️{BRICK}',
f'{BRICK}{BRICK}{WINDOW_SYM}{BRICK}{DOOR}{BRICK}{WINDOW_SYM}{BRICK}{BRICK}',
]
SHOP_OPTIONS = [
f'{PLUNGER} — 1🦷 (нажми В)',
f'{AXE_SYM} — 2🦷 (нажми Т)',
f'{PLUNGER}+{AXE_SYM} — 12🦷 (не хватает 🦷)',
]
# Кадры анимации охоты на поросёнка (8 кадров)
PIG_HUNT_FRAMES = [
# Кадр 1
[
f'{BRICK}{BRICK}{BRICK}{BRICK}{BRICK}{BRICK}{BRICK}{BRICK}{BRICK}',
f'{BRICK}{DASH_SYM}{UA_FLAG}{DASH_SYM}{BIRD_SYM}{DASH_SYM}{UA_FLAG}{DASH_SYM}{BRICK}',
f'{WINDOW_SYM}{DASH_SYM}{DASH_SYM}{DASH_SYM}{DASH_SYM}{DASH_SYM}{DASH_SYM}{DASH_SYM}{WINDOW_SYM}',
f'{BRICK}{DASH_SYM}{HUMAN}{DASH_SYM}{PIG_SYM}{DASH_SYM}{DASH_SYM}{DASH_SYM}{BRICK}',
f'{BRICK}{DASH_SYM}{DASH_SYM}{MONITOR_SYM}{JOYSTICK_SYM}{DASH_SYM}{DASH_SYM}{FIRE_SYM}{BRICK}',
f'{BRICK}{BRICK}{DOOR}{BRICK}{BRICK}{BRICK}{BRICK}{BRICK}{BRICK}',
],
# Кадр 2
[
f'{BRICK}{BRICK}{BRICK}{BRICK}{BRICK}{BRICK}{BRICK}{BRICK}{BRICK}',
f'{BRICK}{DASH_SYM}{UA_FLAG}{DASH_SYM}{BIRD_SYM}{DASH_SYM}{UA_FLAG}{DASH_SYM}{BRICK}',
f'{WINDOW_SYM}{DASH_SYM}{DASH_SYM}{DASH_SYM}{DASH_SYM}{DASH_SYM}{DASH_SYM}{DASH_SYM}{WINDOW_SYM}',
f'{BRICK}{DASH_SYM}{HUMAN}{HIT_SYM}{PIG_SYM}{DASH_SYM}{DASH_SYM}{DASH_SYM}{BRICK}',
f'{BRICK}{DASH_SYM}{DASH_SYM}{MONITOR_SYM}{JOYSTICK_SYM}{DASH_SYM}{DASH_SYM}{FIRE_SYM}{BRICK}',
f'{BRICK}{BRICK}{DOOR}{BRICK}{BRICK}{BRICK}{BRICK}{BRICK}{BRICK}',
],
# Кадр 3
[
f'{BRICK}{BRICK}{BRICK}{BRICK}{BRICK}{BRICK}{BRICK}{BRICK}{BRICK}',
f'{BRICK}{DASH_SYM}{UA_FLAG}{DASH_SYM}{BIRD_SYM}{DASH_SYM}{UA_FLAG}{DASH_SYM}{BRICK}',
f'{WINDOW_SYM}{DASH_SYM}{DASH_SYM}{DASH_SYM}{DASH_SYM}{DASH_SYM}{DASH_SYM}{DASH_SYM}{WINDOW_SYM}',
f'{BRICK}{DASH_SYM}{HUMAN}{HIT_SYM}{ANGER_SYM}{PIG_SYM}{DASH_SYM}{DASH_SYM}{BRICK}',
f'{BRICK}{DASH_SYM}{DASH_SYM}{MONITOR_SYM}{JOYSTICK_SYM}{DASH_SYM}{DASH_SYM}{FIRE_SYM}{BRICK}',
f'{BRICK}{BRICK}{DOOR}{BRICK}{BRICK}{BRICK}{BRICK}{BRICK}{BRICK}',
],
# Кадр 4
[
f'{BRICK}{BRICK}{BRICK}{BRICK}{BRICK}{BRICK}{BRICK}{BRICK}{BRICK}',
f'{BRICK}{DASH_SYM}{UA_FLAG}{DASH_SYM}{BIRD_SYM}{DASH_SYM}{UA_FLAG}{DASH_SYM}{BRICK}',
f'{WINDOW_SYM}{DASH_SYM}{DASH_SYM}{DASH_SYM}{DASH_SYM}{DASH_SYM}{DASH_SYM}{DASH_SYM}{WINDOW_SYM}',
f'{BRICK}{DASH_SYM}{HUMAN}{HIT_SYM}{DASH_SYM}{DASH_SYM}{PIG_SYM}{DASH_SYM}{BRICK}',
f'{BRICK}{DASH_SYM}{DASH_SYM}{MONITOR_SYM}{JOYSTICK_SYM}{DASH_SYM}{DASH_SYM}{FIRE_SYM}{BRICK}',
f'{BRICK}{BRICK}{DOOR}{BRICK}{BRICK}{BRICK}{BRICK}{BRICK}{BRICK}',
],
# Кадр 5
[
f'{BRICK}{BRICK}{BRICK}{BRICK}{BRICK}{BRICK}{BRICK}{BRICK}{BRICK}',
f'{BRICK}{DASH_SYM}{UA_FLAG}{DASH_SYM}{BIRD_SYM}{DASH_SYM}{UA_FLAG}{DASH_SYM}{BRICK}',
f'{WINDOW_SYM}{DASH_SYM}{DASH_SYM}{DASH_SYM}{DASH_SYM}{DASH_SYM}{DASH_SYM}{DASH_SYM}{WINDOW_SYM}',
f'{BRICK}{DASH_SYM}{HUMAN}{DASH_SYM}{DASH_SYM}{DASH_SYM}{DASH_SYM}{PIG_SYM}{BRICK}',
f'{BRICK}{DASH_SYM}{DASH_SYM}{MONITOR_SYM}{JOYSTICK_SYM}{DASH_SYM}{DASH_SYM}{FIRE_SYM}{BRICK}',
f'{BRICK}{BRICK}{DOOR}{BRICK}{BRICK}{BRICK}{BRICK}{BRICK}{BRICK}',
],
# Кадр 6
[
f'{BRICK}{BRICK}{BRICK}{BRICK}{BRICK}{BRICK}{BRICK}{BRICK}{BRICK}',
f'{BRICK}{DASH_SYM}{UA_FLAG}{DASH_SYM}{BIRD_SYM}{DASH_SYM}{UA_FLAG}{DASH_SYM}{BRICK}',
f'{WINDOW_SYM}{DASH_SYM}{DASH_SYM}{DASH_SYM}{DASH_SYM}{DASH_SYM}{DASH_SYM}{DASH_SYM}{WINDOW_SYM}',
f'{BRICK}{DASH_SYM}{HUMAN}{DASH_SYM}{DASH_SYM}{DASH_SYM}{DASH_SYM}{HOT_SYM}{BRICK}',
f'{BRICK}{DASH_SYM}{DASH_SYM}{MONITOR_SYM}{JOYSTICK_SYM}{DASH_SYM}{DASH_SYM}{FIRE_SYM}{BRICK}',
f'{BRICK}{BRICK}{DOOR}{BRICK}{BRICK}{BRICK}{BRICK}{BRICK}{BRICK}',
],
# Кадр 7
[
f'{BRICK}{BRICK}{BRICK}{BRICK}{BRICK}{BRICK}{BRICK}{BRICK}{BRICK}',
f'{BRICK}{DASH_SYM}{UA_FLAG}{DASH_SYM}{BIRD_SYM}{DASH_SYM}{UA_FLAG}{DASH_SYM}{BRICK}',
f'{WINDOW_SYM}{DASH_SYM}{DASH_SYM}{DASH_SYM}{DASH_SYM}{DASH_SYM}{DASH_SYM}{DASH_SYM}{WINDOW_SYM}',
f'{BRICK}{DASH_SYM}{HUMAN}{DASH_SYM}{DASH_SYM}{DASH_SYM}{DASH_SYM}{MEAT_SYM}{BRICK}',
f'{BRICK}{DASH_SYM}{DASH_SYM}{MONITOR_SYM}{JOYSTICK_SYM}{DASH_SYM}{DASH_SYM}{FIRE_SYM}{BRICK}',
f'{BRICK}{BRICK}{DOOR}{BRICK}{BRICK}{BRICK}{BRICK}{BRICK}{BRICK}',
],
# Кадр 8
[
f'{BRICK}{BRICK}{BRICK}{BRICK}{BRICK}{BRICK}{BRICK}{BRICK}{BRICK}',
f'{BRICK}{DASH_SYM}{WHITE_FLAG}{DASH_SYM}{BIRD_SYM}{DASH_SYM}{WHITE_FLAG}{DASH_SYM}{BRICK}',
f'{WINDOW_SYM}{DASH_SYM}{DASH_SYM}{DASH_SYM}{DASH_SYM}{DASH_SYM}{DASH_SYM}{DASH_SYM}{WINDOW_SYM}',
f'{BRICK}{DASH_SYM}{HUMAN}{DASH_SYM}{DASH_SYM}{DASH_SYM}{DASH_SYM}{MEAT_SYM}{BRICK}',
f'{BRICK}{DASH_SYM}{DASH_SYM}{MONITOR_SYM}{JOYSTICK_SYM}{DASH_SYM}{DASH_SYM}{FIRE_SYM}{BRICK}',
f'{BRICK}{BRICK}{DOOR}{BRICK}{BRICK}{BRICK}{BRICK}{BRICK}{BRICK}',
],
]
PIG_HUNT_FRAME_SECONDS = 0.5
# Возможные перемещения дронов
TWO_CELL_MOVES = [(-2, 0), (2, 0), (0, −2), (0, 2),
(-2, -2), (-2, 2), (2, -2), (2, 2)]
KNIGHT_MOVES = [(-1, −2), (-1, 2), (1, −2), (1, 2),
(-2, -1), (-2, 1), (2, -1), (2, 1)]
ALL_DRONE_MOVES = TWO_CELL_MOVES + KNIGHT_MOVES
# Финальные сцены
ROCKET_LAUNCH_SCENE = [
f'{DASH_SYM}{DASH_SYM}{DASH_SYM}{DASH_SYM}{DASH_SYM}{POLICE_LIGHT}{DASH_SYM}{DASH_SYM}{DASH_SYM}{DASH_SYM}{DASH_SYM}',
f'{DASH_SYM}{DASH_SYM}{DASH_SYM}{DASH_SYM}{STOP_SIGN}{STOP_SIGN}{STOP_SIGN}{DASH_SYM}{DASH_SYM}{TL_SYM}{DASH_SYM}',
f'{TL_SYM}{DASH_SYM}{DASH_SYM}{STOP_SIGN}{BL_SYM}{HUMAN}{BL_SYM}{STOP_SIGN}{DASH_SYM}{DASH_SYM}{DASH_SYM}',
f'{DASH_SYM}{DASH_SYM}{RADIO_BUTTON}{RADIO_BUTTON}{RADIO_BUTTON}{RADIO_BUTTON}{RADIO_BUTTON}{RADIO_BUTTON}{RADIO_BUTTON}{DASH_SYM}{TL_SYM}',
f'{DASH_SYM}{DASH_SYM}{RADIO_BUTTON}{TR_SYM}{TR_SYM}{TR_SYM}{TR_SYM}{TR_SYM}{RADIO_BUTTON}{DASH_SYM}{DASH_SYM}',
f'{DASH_SYM}{DASH_SYM}{RADIO_BUTTON}{TR_SYM}{TR_SYM}{TR_SYM}{TR_SYM}{TR_SYM}{RADIO_BUTTON}{DASH_SYM}{TL_SYM}',
f'{TL_SYM}{DASH_SYM}{RADIO_BUTTON}{TR_SYM}{TR_SYM}{TR_SYM}{TR_SYM}{TR_SYM}{RADIO_BUTTON}{DASH_SYM}{DASH_SYM}',
f'{DASH_SYM}{DASH_SYM}{RADIO_BUTTON}{TR_SYM}{TR_SYM}{TR_SYM}{TR_SYM}{TR_SYM}{RADIO_BUTTON}{DASH_SYM}{DASH_SYM}',
f'{TL_SYM}{DASH_SYM}{RADIO_BUTTON}{TR_SYM}{TR_SYM}{TR_SYM}{TR_SYM}{TR_SYM}{RADIO_BUTTON}{DASH_SYM}{TL_SYM}',
f'{DASH_SYM}{DASH_SYM}{RADIO_BUTTON}{TR_SYM}{TR_SYM}{TR_SYM}{TR_SYM}{TR_SYM}{RADIO_BUTTON}{DASH_SYM}{DASH_SYM}',
f'{DASH_SYM}{DASH_SYM}{RADIO_BUTTON}{TR_SYM}{TR_SYM}{TR_SYM}{TR_SYM}{TR_SYM}{RADIO_BUTTON}{DASH_SYM}{TL_SYM}',
f'{TL_SYM}{DASH_SYM}{EXPLOSION}{EXPLOSION}{EXPLOSION}{EXPLOSION}{EXPLOSION}{EXPLOSION}{EXPLOSION}{DASH_SYM}{DASH_SYM}',
f'{DASH_SYM}{DASH_SYM}{FIRE_SYM}{FIRE_SYM}{FIRE_SYM}{FIRE_SYM}{FIRE_SYM}{FIRE_SYM}{FIRE_SYM}{DASH_SYM}{DASH_SYM}',
f'{DASH_SYM}{ANGER_SYM}{ANGER_SYM}{ANGER_SYM}{ANGER_SYM}{ANGER_SYM}{ANGER_SYM}{ANGER_SYM}{ANGER_SYM}{ANGER_SYM}{DASH_SYM}',
f'{DASH_SYM}{CLOUD_SYM}{CLOUD_SYM}{CLOUD_SYM}{CLOUD_SYM}{CLOUD_SYM}{CLOUD_SYM}{CLOUD_SYM}{CLOUD_SYM}{CLOUD_SYM}{DASH_SYM}',
f'{DASH_SYM}{CLOUD_SYM}{CLOUD_SYM}{CLOUD_SYM}{CLOUD_SYM}{CLOUD_SYM}{CLOUD_SYM}{CLOUD_SYM}{CLOUD_SYM}{CLOUD_SYM}{DASH_SYM}',
]
ROCKET_LAUNCH_DIALOG_LINES = [
f'{HUMAN}: Фкафандл для лохов! Как плилечу на Вемлю',
'— пелвым делом убью лывую флюху!',
'Я двавды фпаф этой блядине вывнь,',
'а она меня так вофтко кинула! 😡😡😡',
]
FINAL_SCENE = [
f'{DASH_SYM}{DASH_SYM}{DASH_SYM}{CIGARETTE}{DASH_SYM}{DASH_SYM}{DASH_SYM}',
f'{DASH_SYM}{DASH_SYM}{HEEL}{HEART_SUIT}{STOP_SIGN}{DASH_SYM}{DASH_SYM}',
f'{DASH_SYM}{STOP_SIGN}{RED_TRIANGLE}{STOP_SIGN}{STOP_SIGN}{STOP_SIGN}{DASH_SYM}',
f'{STOP_SIGN}{STOP_SIGN}{HEEL}{STOP_SIGN}{STOP_SIGN}{STOP_SIGN}{STOP_SIGN}',
f'{LOG_SYM}{WEB}{DROPLET_SYM}{TR_SYM}{TR_SYM}{WEB}{LOG_SYM}',
f'{LOG_SYM}{FLY_SYM}{TR_SYM}{COCKROACH_SYM}{TR_SYM}{TR_SYM}{LOG_SYM}',
f'{LOG_SYM}{TR_SYM}{DROPLET_SYM}{TR_SYM}{TR_SYM}{BOTTLE_SYM}{LOG_SYM}',
f'{DOOR}{HUMAN}{TR_SYM}{OLD_WOMAN}{CIGARETTE}{CIGARETTE}{LOG_SYM}',
f'{NEST_SYM}{NEST_SYM}{FLYING_DISC}{NEST_SYM}{NEST_SYM}{NEST_SYM}{NEST_SYM}',
]
FINAL_DIALOG_LINES = [
f'{HUMAN}: Эй, бабка, вдефь вывёт лывая флюха? Я плифол её убить!',
f'{OLD_WOMAN}: Да, Мария Глебовна — это я.',
'На Абсероиде время идёт не так, как на Земле.',
'Я уж думала, что не дождусь тебя.',
'Милок, мне 88 лет, у меня куча болячек,',
'особенно по женской части.',
'Ты меня в молодости выручал — и сейчас выручи.',
'Убей меня, чтобы я не мучалась.',
f'{HUMAN}: Ну нет, тваль, выви до фта лет и мучайфя!',
'Я лично плофлеву, фтобы ты пловыла как мовно дольфэ! 😈😈😈',
]
hero = [START[0], START[1]]
robot = [ROBOT_START[0], ROBOT_START[1]]
robot_alive = [True]
cooldown = 0
projectiles = []
dead = False
death_symbol = [EXPLOSION]
hint_visible = [True]
inventory_visible = [False]
energy = [Decimal('5')]
entangled = [False]
alien_spoken = set()
alien_count = [0]
hero_sym_state = [HERO]
has_wrench = [True]
has_pick = [True]
has_jammer = [False]
jammer_dialog_shown = [False]
pumpkin_dialog_shown = [False]
pumpkin_shop_dialog_human_shown = [False]
cloud_spawned = [False]
cloud_visible = [False]
cloud_center = [START[0], START[1]]
cloud_target = ['hero']
cloud_wait_remaining = [0]
cloud_post_remaining = [0]
cloud_kill_cell = [None]
cloud_start_delay = [0]
mines_pumpkin = [False]
pumpkin_pos = [None]
shops_visited = [False]
shops_visited_human = [False]
# Дроновые переменные (одиночный дрон — «босс», взрывающий 🏭)
factory_state = [0] # 0=intact, 1=💥, 2=🔸, 3=🚀
factory_triggered = [False]
drone_mission_active = [False]
drone_cell = [None]
drone_dx = [0]
drone_dy = [0]
drone_stage = [0] # 1=at 6, 2=at 4, 3=at 2, 4=💥, 5=🔸
drone_just_spawned = [False]
# Множество опасных дронов (25 штук после диалога 🧑 и 🐷)
multi_drones = set()
# Дроны, застрявшие в паутине (🌟)
star_drones = set()
# Дроны, распутывающиеся из паутины (💫)
sparkle_drones = set()
# Поросёнок в доме
pig_house = [None]
pig_house_pending = [False]
pig_hunt_shown = [False]
# 🐦 уничтожает 🫛
bird_position = [None]
destroyed_pumpkins = set()
bird_active = [False]
bird_skip_next = [False]
bird_move_count = [0]
_PIG_HUNT_BLOCK_COLS = [None]
inv = {
'teeth': 9,
'mop': 0,
'axe': 0,
'rugby': 0,
'sticks': 0,
'bird': 0,
}
def inventory_items_text():
parts = []
if has_pick[0]:
parts.append(f'1{PICK_SYM}')
if has_wrench[0]:
parts.append('1🔧')
if has_jammer[0]:
parts.append(f'1{JAMMER_SYM}')
if inv['mop'] > 0:
parts.append(f'{inv["mop"]}{PLUNGER}')
if inv['axe'] > 0:
parts.append(f'{inv["axe"]}{AXE_SYM}')
if inv['rugby'] > 0:
parts.append(f'{inv["rugby"]}{RUGBY_SYM}')
if inv['sticks'] > 0:
parts.append(f'{inv["sticks"]}{STICK_SYM}')
if inv['bird'] > 0:
parts.append(f'{inv["bird"]}{BIRD_SYM}')
parts.append(f'{inv["teeth"]}🦷')
return ' '.join(parts)
def format_energy(e):
e = e.quantize(Decimal('0.1'))
if e == e.to_integral_value():
return str(int(e))
return f'{e}'
def torus_diff(a, b):
d = (b - a) % SIZE
if d > SIZE // 2:
d -= SIZE
return d
def chebyshev_torus(x1, y1, x2, y2):
return max(abs(torus_diff(x1, x2)), abs(torus_diff(y1, y2)))
def in_cloud(x, y):
return chebyshev_torus(x, y, cloud_center[0], cloud_center[1]) <= 2
def cloud_symbol_at(x, y):
if not cloud_visible[0]:
return None
if not in_cloud(x, y):
return None
if cloud_kill_cell[0] == (x, y):
return LIGHTNING
if (x, y) == (cloud_center[0], cloud_center[1]):
return GHOST
return RAIN
def projectile_cells():
return {(p['x'], p['y']) for p in projectiles}
def is_hard_blocked(x, y):
if pumpkin_pos[0] is not None and (x, y) == pumpkin_pos[0]:
return True
if (x, y) in HARD_BLOCKED: return True
if (x, y) in poops: return True
if (x, y) in trees: return True
if (x, y) in cranes: return True
if (x, y) in buildings: return True
if (x, y) in shops: return True
if (x, y) in projectile_cells(): return True
return False
def projectile_obstacle_at(x, y):
if pumpkin_pos[0] is not None and (x, y) == pumpkin_pos[0]:
return True
if (x, y) in buildings: return True
if (x, y) in shops: return True
if (x, y) in poops: return True
if (x, y) in trees: return True
if (x, y) in cranes: return True
if (x, y) in rocks: return True
if (x, y) in webs: return True
if (x, y) in HARD_BLOCKED: return True
if robot_alive[0] and (x, y) == (robot[0], robot[1]): return True
return False
def what_symbol_at(x, y):
if pumpkin_pos[0] is not None and (x, y) == pumpkin_pos[0]: return JACK_O_LANTERN
if (x, y) in buildings: return BUILDING
if (x, y) in shops: return SHOP
if (x, y) in projectile_cells(): return '🏉'
if (x, y) in poops: return '💩'
if (x, y) in trees: return '🌳'
if (x, y) in cranes: return '🏗️'
if (x, y) in rocks: return '🪨'
if (x, y) in webs: return '🕸️'
if (x, y) == FACTORY_CELL:
if factory_state[0] == 1:
return '💥'
if factory_state[0] == 3:
return '🚀'
if (x, y) in DECOR: return DECOR[(x, y)]
if (x, y) == ROCKET_POS: return '🚀'
if (x, y) == DRAGON_CELL: return '🐉'
if (x, y) in ALIEN_CELLS: return '👽'
return '?'
def make_poop(x, y):
poops.add((x, y))
trees.discard((x, y))
cranes.discard((x, y))
rocks.discard((x, y))
webs.discard((x, y))
buildings.discard((x, y))
shops.discard((x, y))
def get_key():
if os.name == 'nt':
import msvcrt
ch = msvcrt.getwch()
if ch in ('\x00', '\xe0'):
msvcrt.getwch()
return None
return ch
import termios, tty
fd = sys.stdin.fileno()
old = termios.tcgetattr(fd)
try:
tty.setraw(fd)
data = sys.stdin.buffer.read(1)
if not data:
return None
b = data[0]
n = 3 if b >= 0xF0 else 2 if b >= 0xE0 else 1 if b >= 0xC0 else 0
if n:
data += sys.stdin.buffer.read(n)
finally:
termios.tcsetattr(fd, termios.TCSADRAIN, old)
return data.decode('utf-8', errors='ignore')
MOVES = {
'е': (-1, -1), 'н': (0, -1), 'г': (1, -1),
'п': (-1, 0), 'о': (1, 0),
'м': (-1, 1), 'и': (0, 1), 'т': (1, 1),
't': (-1, -1), 'y': (0, -1), 'u': (1, -1),
'g': (-1, 0), 'j': (1, 0),
'v': (-1, 1), 'b': (0, 1), 'n': (1, 1),
}
SKIP_KEYS = {'р', 'h'}
QUIT_KEYS = {'q', 'й', '\x03'}
def clear_screen():
os.system('cls' if os.name == 'nt' else 'clear')
def term_size():
try:
s = shutil.get_terminal_size()
return max(s.columns, 40), max(s.lines, 20)
except Exception:
return 80, 24
def visual_units(s):
n = 0
i = 0
while i < len(s):
ch = s[i]
if ch == '\ufe0f':
i += 1
continue
if ch == '\u200d':
i += 1
if i < len(s):
i += 1
continue
n += 1
i += 1
return n
def display_width(s):
w = 0
i = 0
while i < len(s):
ch = s[i]
cp = ord(ch)
if ch == '\ufe0f':
i += 1
continue
if ch == '\u200d':
i += 1
if i < len(s):
i += 1
continue
if cp >= 0x1F300 or (0x2600 <= cp <= 0x27BF):
w += 2
else:
w += 1
i += 1
return w
def background(x, y):
left = x < HALF_W
top = y < HALF_W
if top: return TL_SYM if left else TR_SYM
else: return BL_SYM if left else BR_SYM
def world_symbol(x, y):
for p in projectiles:
if p['x'] == x and p['y'] == y:
return RUGBY_SYM
if pumpkin_pos[0] is not None and (x, y) == pumpkin_pos[0]:
return JACK_O_LANTERN
if (x, y) in buildings: return BUILDING
if (x, y) in shops: return SHOP
if (x, y) in poops: return POOP_SYM
if robot_alive[0] and x == robot[0] and y == robot[1]:
return ROBOT_SYM
if (x, y) == FACTORY_CELL:
if factory_state[0] == 1:
return EXPLOSION
if factory_state[0] == 3:
return ROCKET_SYM
if (x, y) in DECOR: return DECOR[(x, y)]
if (x, y) == ROCKET_POS: return ROCKET_SYM
if (x, y) in MINE_CELLS:
if mines_pumpkin[0]:
if (x, y) in destroyed_pumpkins:
return background(x, y)
return PUMPKIN
return SEED
if (x, y) == DRAGON_CELL: return DRAGON
if (x, y) in ALIEN_CELLS: return ALIEN
if (x, y) in DIAMOND_CELLS: return BLUE_SQUARE if cloud_spawned[0] else DIAMOND
if (x, y) in trees: return TREE
if (x, y) in cranes: return CRANE
if (x, y) in rocks: return ROCK
if (x, y) in webs: return WEB
return background(x, y)
def render(messages=None, hero_sym=None, dead_view=False, dialog=None):
if hero_sym is None:
hero_sym = hero_sym_state[0]
messages = messages or []
cols, rows = term_size()
pad = max(0, (cols - VIEW * CELL_W) // 2)
left = ' ' * pad
view_lines = []
for dy in range(-HALF, HALF + 1):
row = []
for dx in range(-HALF, HALF + 1):
wx = (hero[0] + dx) % SIZE
wy = (hero[1] + dy) % SIZE
if drone_cell[0] is not None and (wx, wy) == drone_cell[0]:
row.append(DRONE_SYM)
continue
if (wx, wy) in multi_drones:
row.append(DRONE_SYM)
continue
if (wx, wy) in star_drones:
row.append(STAR_SYM)
continue
if (wx, wy) in sparkle_drones:
row.append(SPARKLE_SYM)
continue
if bird_position[0] is not None and (wx, wy) == bird_position[0]:
row.append(BIRD_SYM)
continue
cs = cloud_symbol_at(wx, wy)
if cs is not None:
row.append(cs)
elif dx == 0 and dy == 0:
row.append(hero_sym)
else:
row.append(world_symbol(wx, wy))
view_lines.append(left + ''.join(row))
top_pad = max(0, (rows - VIEW) // 2 - 2)
if inventory_visible[0]:
top_pad = max(0, top_pad - 4)
out = [''] * top_pad
if inventory_visible[0]:
indicator = BATTERY if energy[0] >= 1 else BATTERY_LO
energy_line = f'{indicator} Энергия: {format_energy(energy[0])}'
inv_label = '💼 Инвентарь:'
inv_line = inventory_items_text()
out.append(' ' * max(0, (cols - len(energy_line)) // 2) + energy_line)
out.append(' ' * max(0, (cols - len(inv_label)) // 2) + inv_label)
out.append(' ' * max(0, (cols - len(inv_line)) // 2) + inv_line)
out.append('')
out.extend(view_lines)
out.append('')
for m in messages:
text = m.get('text', '')
color = m.get('color')
for subline in text.split('\n'):
pad_m = max(0, (cols - len(subline)) // 2)
out.append(' ' * pad_m + (color + subline + RESET if color else subline))
if dialog:
for line in dialog:
for subline in line.split('\n'):
pad_l = max(0, (cols - len(subline)) // 2)
out.append(' ' * pad_l + subline)
elif (not dead_view) and hint_visible[0]:
out.append(' ' * max(0, (cols - len(HINT)) // 2) + HINT)
clear_screen()
sys.stdout.write('\n'.join(out) + '\n')
sys.stdout.flush()
def render_shop_scene(use_human=False):
cols, rows = term_size()
if use_human:
lines = [line.replace(HERO, HUMAN) for line in SHOP_SCENE_LINES]
else:
lines = SHOP_SCENE_LINES
total_h = len(lines) + 1 + len(SHOP_OPTIONS)
top_pad = max(0, (rows - total_h) // 2)
out = [''] * top_pad
max_units = max(visual_units(line) for line in lines)
block_cols = max_units * 2
for line in lines:
pad = max(0, (cols - block_cols) // 2)
out.append(' ' * pad + line)
out.append('')
for line in SHOP_OPTIONS:
pad = max(0, (cols - len(line)) // 2)
out.append(' ' * pad + line)
clear_screen()
sys.stdout.write('\n'.join(out) + '\n')
sys.stdout.flush()
def render_centered_block(scene_lines, dialog_lines=None):
cols, rows = term_size()
scene_max_u = max(visual_units(line) for line in scene_lines)
block_cols = scene_max_u * CELL_W
scene_pad = max(0, (cols - block_cols) // 2)
out_lines = []
for line in scene_lines:
out_lines.append(' ' * scene_pad + line)
if dialog_lines:
out_lines.append('')
for dl in dialog_lines:
for subline in dl.split('\n'):
w = display_width(subline)
p = max(0, (cols - w) // 2)
out_lines.append(' ' * p + subline)
top_pad = max(0, (rows - len(out_lines)) // 2)
out = [''] * top_pad + out_lines
clear_screen()
sys.stdout.write('\n'.join(out) + '\n')
sys.stdout.flush()
def show_ending_scene():
render_centered_block(ROCKET_LAUNCH_SCENE, ROCKET_LAUNCH_DIALOG_LINES)
time.sleep(5)
render_centered_block(FINAL_SCENE, FINAL_DIALOG_LINES)
get_key()
def enter_shop_scene(use_human=False):
while True:
render_shop_scene(use_human=use_human)
key = get_key()
if key is None:
continue
k = key.lower()
if k in ('в', 'd'):
if inv['teeth'] >= 1:
inv['teeth'] -= 1
inv['mop'] += 1
return
elif k in ('т', 'n'):
if inv['teeth'] >= 2:
inv['teeth'] -= 2
inv['axe'] += 1
return
elif k in QUIT_KEYS:
return
def enter_jammer_dialog():
"""Возвращает True если Х, False если Э."""
while True:
render(dialog=JAMMER_DIALOG_LINES)
key = get_key()
if key is None:
continue
k = key.lower()
if k == 'х':
return True
if k == 'э':
return False
def run_pumpkin_bird_animation(first_pumpkin):
pumpkins_to_destroy = [first_pumpkin]
remaining = [p for p in MINE_CELLS
if p != first_pumpkin and p not in destroyed_pumpkins]
random.shuffle(remaining)
pumpkins_to_destroy.extend(remaining[:BIRD_HOP_COUNT])
for p in pumpkins_to_destroy:
bird_position[0] = p
destroyed_pumpkins.add(p)
render()
time.sleep(BIRD_HOP_SECONDS)
render(dialog=BIRD_DIALOG_LINES)
time.sleep(BIRD_DIALOG_SECONDS)
bird_active[0] = True
bird_skip_next[0] = True
bird_move_count[0] = 0
def _get_pig_hunt_block_cols():
if _PIG_HUNT_BLOCK_COLS[0] is None:
max_u = 0
for frame in PIG_HUNT_FRAMES:
for line in frame:
u = visual_units(line)
if u > max_u:
max_u = u
_PIG_HUNT_BLOCK_COLS[0] = max_u * 2
return _PIG_HUNT_BLOCK_COLS[0]
def render_pig_hunt_frame(lines):
cols, rows = term_size()
block_cols = _get_pig_hunt_block_cols()
total_h = len(lines)
top_pad = max(0, (rows - total_h) // 2)
out = [''] * top_pad
pad = max(0, (cols - block_cols) // 2)
for line in lines:
out.append(' ' * pad + line)
clear_screen()
sys.stdout.write('\n'.join(out) + '\n')
sys.stdout.flush()
def run_pig_hunt_animation():
for frame in PIG_HUNT_FRAMES:
render_pig_hunt_frame(frame)
time.sleep(PIG_HUNT_FRAME_SECONDS)
def find_pig_house():
if not buildings:
return None
best_d = None
best_list = []
for (bx, by) in buildings:
d = min(euclid_sq(bx, by, sx, sy) for (sx, sy) in DIAMOND_CELLS)
if best_d is None or d < best_d:
best_d = d
best_list = [(bx, by)]
elif d == best_d:
best_list.append((bx, by))
if not best_list:
return None
return random.choice(best_list)
def spawn_multi_drones():
multi_drones.clear()
star_drones.clear()
sparkle_drones.clear()
for cell in DIAMOND_CELLS:
multi_drones.add(cell)
def process_multi_drones(messages):
if not multi_drones and not star_drones and not sparkle_drones:
return
hx, hy = hero
min_d = None
for c in multi_drones:
d = chebyshev_torus(hx, hy, c[0], c[1])
if min_d is None or d < min_d:
min_d = d
if min_d is not None and min_d <= 2:
candidates = [c for c in multi_drones
if chebyshev_torus(hx, hy, c[0], c[1]) <= 2]
if candidates:
multi_drones.discard(random.choice(candidates))
die(DEATH_DRONE_MSG, messages, symbol=EXPLOSION)
return
promoted = set(sparkle_drones)
sparkle_drones.clear()
sparkle_drones.update(star_drones)
star_drones.clear()
occupied = set(multi_drones) | promoted | star_drones | sparkle_drones
new_set = set()
stuck_count = 0
for (cx, cy) in list(multi_drones):
if has_jammer[0] or random.random() < 0.5:
move = random.choice(ALL_DRONE_MOVES)
else:
ddx = torus_diff(cx, hx)
ddy = torus_diff(cy, hy)
sdx = 0 if ddx == 0 else (1 if ddx > 0 else -1)
sdy = 0 if ddy == 0 else (1 if ddy > 0 else -1)
move = (sdx * 2, sdy * 2)
nx = (cx + move[0]) % SIZE
ny = (cy + move[1]) % SIZE
if (nx, ny) in occupied or (nx, ny) in new_set:
new_set.add((cx, cy))
continue
if (nx, ny) in webs:
webs.discard((nx, ny))
star_drones.add((nx, ny))
occupied.add((nx, ny))
stuck_count += 1
continue
new_set.add((nx, ny))
multi_drones.clear()
multi_drones.update(new_set)
multi_drones.update(promoted)
if stuck_count == 1:
messages.append({'text': DRONE_STUCK_1_MSG, 'color': GREEN})
elif stuck_count >= 2:
messages.append({'text': DRONE_STUCK_N_MSG, 'color': GREEN})
def euclid_sq(ax, ay, bx, by):
dx = ax - bx; dy = ay - by
return dx * dx + dy * dy
def rocket_between():
rx, ry = ROCKET_POS
rdx, rdy = robot[0] - rx, robot[1] - ry
hdx, hdy = hero[0] - rx, hero[1] - ry
if rdx * hdy - rdy * hdx != 0:
return False
return rdx * hdx + rdy * hdy < 0
def robot_candidates():
hx, hy = hero
cands = []
for dx, dy in [(0, -1), (0, 1), (1, 0), (-1, 0)]:
n = (robot[0] + dx, robot[1] + dy)
if n not in RING: continue
if is_hard_blocked(*n): continue
if n in rocks: continue
if n == (hx, hy): continue
cands.append(n)
return cands
def die(msg, messages, symbol=EXPLOSION):
global dead
dead = True
death_symbol[0] = symbol
messages.append({'text': msg, 'color': RED})
def spawn_projectile(direction, messages):
px = (robot[0] + direction[0]) % SIZE
py = (robot[1] + direction[1]) % SIZE
if (px, py) == (hero[0], hero[1]):
make_poop(px, py)
die(DEATH_SHOT_MSG, messages, symbol=POOP_SYM)
return
if projectile_obstacle_at(px, py):
make_poop(px, py)
return
projectiles.append({'x': px, 'y': py,
'dx': direction[0], 'dy': direction[1],
'moves': 0,
'fresh': True})
def robot_turn(messages):
global cooldown
if not robot_alive[0]:
return
hx, hy = hero
cur = (robot[0], robot[1])
cur_d2 = euclid_sq(cur[0], cur[1], hx, hy)
cands = robot_candidates()
best, best_d2 = None, cur_d2
for c in cands:
d2 = euclid_sq(c[0], c[1], hx, hy)
if d2 < best_d2:
best_d2, best = d2, c
if best is None and cands and rocket_between():
best = min(cands, key=lambda c: euclid_sq(c[0], c[1], hx, hy))
if best is not None:
robot[0], robot[1] = best
if dead:
return
if cooldown > 0:
cooldown -= 1
messages.append({'text': RELOAD_MSG})
return
dx = hx - robot[0]; dy = hy - robot[1]
d = max(abs(dx), abs(dy))
along = (dx == 0) or (dy == 0) or (abs(dx) == abs(dy))
if along and d in (1, 3):
sdx = 0 if dx == 0 else (1 if dx > 0 else -1)
sdy = 0 if dy == 0 else (1 if dy > 0 else -1)
spawn_projectile((sdx, sdy), messages)
if not dead:
messages.append({'text': SHOOT_MSG})
cooldown = 1
def projectiles_step(messages):
global projectiles
new_list = []
hit_hero = False
for p in projectiles:
if p.get('fresh'):
p['fresh'] = False
new_list.append(p)
continue
p['x'] = (p['x'] + p['dx']) % SIZE
p['y'] = (p['y'] + p['dy']) % SIZE
p['moves'] += 1
cell = (p['x'], p['y'])
if (not dead) and cell == (hero[0], hero[1]) and not hit_hero:
hit_hero = True
continue
if projectile_obstacle_at(*cell):
make_poop(*cell)
continue
if p['moves'] >= 5:
make_poop(*cell)
continue
new_list.append(p)
projectiles = new_list
if hit_hero:
make_poop(hero[0], hero[1])
die(DEATH_SHOT_MSG, messages, symbol=POOP_SYM)
def check_alien_adjacency():
for pos in ALIEN_CELLS:
if pos in alien_spoken:
continue
if abs(pos[0] - hero[0]) + abs(pos[1] - hero[1]) == 1:
alien_spoken.add(pos)
idx = alien_count[0]
alien_count[0] += 1
return ALIEN_DIALOGUES[idx]
return None
def entangled_messages():
return [
{'text': WEB_MSG_1, 'color': ORANGE},
{'text': WEB_MSG_2},
]
def is_bare_br(x, y):
if x < HALF_W or y < HALF_W:
return False
if (x, y) in poops: return False
if (x, y) in trees: return False
if (x, y) in rocks: return False
if (x, y) in cranes: return False
if (x, y) in webs: return False
if (x, y) in DECOR: return False
if (x, y) in HARD_BLOCKED: return False
if (x, y) in MINE_CELLS: return False
if (x, y) in DIAMOND_CELLS: return False
if (x, y) in buildings: return False
if (x, y) in shops: return False
if (x, y) == ROCKET_POS: return False
if (x, y) == DRAGON_CELL: return False
if robot_alive[0] and (x, y) == (robot[0], robot[1]): return False
if (x, y) == (hero[0], hero[1]): return False
return True
def spawn_pumpkin():
hx, hy = hero
best_d = None
candidates = []
for x in range(HALF_W, SIZE):
for y in range(HALF_W, SIZE):
if not is_bare_br(x, y):
continue
d = chebyshev_torus(x, y, hx, hy)
if best_d is None or d < best_d:
best_d = d
candidates = [(x, y)]
elif d == best_d:
candidates.append((x, y))
if candidates:
pumpkin_pos[0] = random.choice(candidates)
def convert_cranes_in_cloud():
for (cx, cy) in list(cranes):
if in_cloud(cx, cy):
cranes.discard((cx, cy))
if random.random() < 0.9:
buildings.add((cx, cy))
else:
shops.add((cx, cy))
def cloud_turn(messages):
if cloud_post_remaining[0] > 0:
cloud_post_remaining[0] -= 1
if cloud_post_remaining[0] == 0:
mines_pumpkin[0] = True
spawn_pumpkin()
if pumpkin_pos[0] is not None:
render(dialog=PUMPKIN_DIALOG_LINES)
time.sleep(PUMPKIN_DIALOG_SECONDS)
return
if not cloud_visible[0]:
return
if cloud_start_delay[0] > 0:
cloud_start_delay[0] -= 1
return
if cloud_wait_remaining[0] > 0:
cloud_wait_remaining[0] -= 1
if cloud_wait_remaining[0] == 0:
cloud_visible[0] = False
cloud_post_remaining[0] = 3
return
if cloud_target[0] == 'hero':
tx, ty = hero
else:
tx, ty = MINE_CENTER
dx = torus_diff(cloud_center[0], tx)
dy = torus_diff(cloud_center[1], ty)
dx = 0 if dx == 0 else (1 if dx > 0 else -1)
dy = 0 if dy == 0 else (1 if dy > 0 else -1)
if dx == 0 and dy == 0:
if cloud_target[0] == 'mine':
cloud_wait_remaining[0] = 3
return
cloud_center[0] = (cloud_center[0] + dx) % SIZE
cloud_center[1] = (cloud_center[1] + dy) % SIZE
convert_cranes_in_cloud()
if not dead and in_cloud(hero[0], hero[1]):
cloud_kill_cell[0] = (hero[0], hero[1])
die(DEATH_CLOUD_MSG, messages, symbol=LIGHTNING)
return
if cloud_target[0] == 'hero':
for (mx, my) in MINE_CELLS:
if in_cloud(mx, my):
cloud_target[0] = 'mine'
break
if cloud_target[0] == 'mine' and \
(cloud_center[0], cloud_center[1]) == MINE_CENTER:
cloud_wait_remaining[0] = 3
def trigger_drone():
dirs = [(-1, -1), (-1, 0), (-1, 1),
(0, -1), (0, 1),
(1, -1), (1, 0), (1, 1)]
dx, dy = random.choice(dirs)
drone_dx[0] = dx
drone_dy[0] = dy
fx, fy = FACTORY_CELL
drone_cell[0] = ((fx + 6 * dx) % SIZE, (fy + 6 * dy) % SIZE)
drone_stage[0] = 1
drone_mission_active[0] = True
drone_just_spawned[0] = True
def drone_turn():
if not drone_mission_active[0]:
return None
if drone_just_spawned[0]:
drone_just_spawned[0] = False
return None
stage = drone_stage[0]
fx, fy = FACTORY_CELL
dx, dy = drone_dx[0], drone_dy[0]
if stage == 1:
drone_cell[0] = ((fx + 4 * dx) % SIZE, (fy + 4 * dy) % SIZE)
drone_stage[0] = 2
elif stage == 2:
drone_cell[0] = ((fx + 2 * dx) % SIZE, (fy + 2 * dy) % SIZE)
drone_stage[0] = 3
elif stage == 3:
if FACTORY_CELL in DECOR:
del DECOR[FACTORY_CELL]
factory_state[0] = 1
drone_cell[0] = None
drone_stage[0] = 4
elif stage == 4:
factory_state[0] = 2
HARD_BLOCKED.discard(FACTORY_CELL)
drone_mission_active[0] = False
drone_stage[0] = 5
pig_house_pending[0] = True
return DRONE_DIALOG_LINES
return None
def main():
global dead, DRAGON_CELL
render(dialog=DIALOG_LINES)
time.sleep(DIALOG_SECONDS)
inventory_visible[0] = True
render()
while not dead:
key = get_key()
if key is None:
continue
k = key.lower()
if k in QUIT_KEYS:
break
messages = []
alien_dialog_now = None
spent = False
if k in SKIP_KEYS:
hint_visible[0] = False
if entangled[0]:
entangled[0] = False
elif k in MOVES:
if entangled[0]:
render(entangled_messages())
continue
dx, dy = MOVES[k]
nx = (hero[0] + dx) % SIZE
ny = (hero[1] + dy) % SIZE
# Магазин
if (nx, ny) in shops:
if cloud_visible[0]:
render([{'text': 'Магазин закрыт!'}])
continue
if has_wrench[0]:
if shops_visited[0]:
render([{'text': 'Магазин закрыт!'}])
continue
shops_visited[0] = True
enter_shop_scene(use_human=False)
else:
if shops_visited_human[0]:
render([{'text': 'Магазин закрыт!'}])
continue
shops_visited_human[0] = True
enter_shop_scene(use_human=True)
render()
continue
# Дом с поросёнком (первое посещение)
if pig_house[0] is not None and (nx, ny) == pig_house[0] \
and not pig_hunt_shown[0]:
pig_hunt_shown[0] = True
run_pig_hunt_animation()
inv['bird'] += 1
multi_drones.clear()
star_drones.clear()
sparkle_drones.clear()
render()
continue
# Здание
if (nx, ny) in buildings:
render([{'text': f'Туда нельзя — там {BUILDING}.'}])
continue
# Кучка с лопатой
if (nx, ny) in poops:
if inv['mop'] > 0:
if energy[0] >= 1:
poops.discard((nx, ny))
inv['rugby'] += 1
energy[0] -= 1
spent = True
else:
render([{'text': NO_ENERGY_MSG}])
continue
else:
render([{'text': f'Туда нельзя — там {POOP_SYM}.'}])
continue
# Дерево с топором
if (nx, ny) in trees:
if inv['axe'] > 0:
if energy[0] >= 1:
trees.discard((nx, ny))
inv['sticks'] += 1
energy[0] -= 1
spent = True
else:
render([{'text': NO_ENERGY_MSG}])
continue
else:
render([{'text': f'Туда нельзя — там {TREE}.'}])
continue
# Завод / Ракета
if (nx, ny) == FACTORY_CELL:
if factory_state[0] == 0:
if inv['rugby'] >= 25 and inv['sticks'] >= 25 \
and has_wrench[0]:
inv['rugby'] -= 25
inv['sticks'] -= 25
has_wrench[0] = False
factory_state[0] = 3
render()
continue
else:
render([{'text': FACTORY_MSG}])
continue
elif factory_state[0] == 3:
show_ending_scene()
return
# Изначальная 🚀 — тоже запускает финальную сцену
if (nx, ny) == ROCKET_POS:
show_ending_scene()
return
# Дверь с топором
if (nx, ny) in DECOR and DECOR[(nx, ny)] == DOOR:
if inv['axe'] > 0:
if energy[0] >= 1:
del DECOR[(nx, ny)]
HARD_BLOCKED.discard((nx, ny))
energy[0] -= 1
spent = True
messages.append({'text': DOOR_SMASH_MSG})
else:
render([{'text': NO_ENERGY_MSG}])
continue
else:
render([{'text': f'Туда нельзя — там {DOOR}.'}])
continue
if is_hard_blocked(nx, ny):
what = what_symbol_at(nx, ny)
render([{'text': f'Туда нельзя — там {what}.'}])
continue
is_web = (nx, ny) in webs
is_rock = (nx, ny) in rocks
is_robot = robot_alive[0] and (nx, ny) == (robot[0], robot[1])
if not is_web and (is_rock or is_robot):
if not has_pick[0]:
sym = ROCK if is_rock else ROBOT_SYM
render([{'text': f'Туда нельзя — там {sym}.'}])
continue
if energy[0] >= 1:
if is_rock:
rocks.discard((nx, ny))
else:
robot_alive[0] = False
energy[0] -= 1
spent = True
else:
if is_rock:
render([{'text': NO_ENERGY_MSG}])
else:
render([{'text': f'Не хватает энергии для 🤖.'}])
continue
if is_web:
webs.discard((nx, ny))
entangled[0] = True
if (nx, ny) in star_drones or (nx, ny) in sparkle_drones:
if not has_pick[0]:
sym = STAR_SYM if (nx, ny) in star_drones else SPARKLE_SYM
render([{'text': f'Туда нельзя — там {sym}.'}])
continue
if energy[0] >= 1:
star_drones.discard((nx, ny))
sparkle_drones.discard((nx, ny))
energy[0] -= 1
spent = True
messages.append({'text': DRONE_DESTROY_MSG})
else:
render([{'text': NO_ENERGY_MSG}])
continue
hint_visible[0] = False
hero[0], hero[1] = nx, ny
if not has_wrench[0] and (nx, ny) in DIAMOND_CELLS:
old_dragon = DRAGON_CELL
HARD_BLOCKED.discard(old_dragon)
DIAMOND_CELLS.add(old_dragon)
DIAMOND_CELLS.discard((nx, ny))
HARD_BLOCKED.add((nx, ny))
DRAGON_CELL = (nx, ny)
die(DEATH_DRAGON_MSG, messages, symbol=DRAGON)
render(messages, hero_sym=death_symbol[0], dead_view=True)
get_key()
break
if has_wrench[0]:
alien_dialog_now = check_alien_adjacency()
else:
alien_dialog_now = None
for pos in ALIEN_CELLS:
if abs(pos[0] - hero[0]) + abs(pos[1] - hero[1]) == 1:
messages.append({'text': ALIEN_HUMAN_MSG})
break
if not cloud_spawned[0] and \
chebyshev_torus(hero[0], hero[1], START[0], START[1]) >= 5:
cloud_spawned[0] = True
cloud_visible[0] = True
cloud_center[0], cloud_center[1] = START[0], START[1]
cloud_target[0] = 'hero'
cloud_start_delay[0] = 1
render(dialog=CLOUD_DIALOG_LINES)
time.sleep(CLOUD_DIALOG_SECONDS)
if not factory_triggered[0] and factory_state[0] == 0 \
and inv['mop'] > 0 and inv['axe'] > 0:
adx = abs(torus_diff(hero[0], FACTORY_CELL[0]))
ady = abs(torus_diff(hero[1], FACTORY_CELL[1]))
if adx + ady == 1:
factory_triggered[0] = True
trigger_drone()
if cloud_visible[0] and in_cloud(hero[0], hero[1]):
cloud_kill_cell[0] = (hero[0], hero[1])
die(DEATH_CLOUD_MSG, messages, symbol=LIGHTNING)
render(messages, hero_sym=death_symbol[0], dead_view=True)
get_key()
break
if (nx, ny) in MINE_CELLS:
die(DEATH_MINE_MSG, messages, symbol=EXPLOSION)
render(messages, hero_sym=death_symbol[0], dead_view=True)
get_key()
break
if inv['bird'] > 0 and mines_pumpkin[0]:
triggered_pumpkin = None
for (px, py) in MINE_CELLS:
if (px, py) in destroyed_pumpkins:
continue
adx = torus_diff(hero[0], px)
ady = torus_diff(hero[1], py)
if abs(adx) + abs(ady) == 1:
triggered_pumpkin = (px, py)
break
if triggered_pumpkin is not None:
inv['bird'] -= 1
run_pumpkin_bird_animation(triggered_pumpkin)
if shops_visited[0] and not pumpkin_dialog_shown[0] \
and pumpkin_pos[0] is not None:
px, py = pumpkin_pos[0]
adx = torus_diff(hero[0], px)
ady = torus_diff(hero[1], py)
if abs(adx) + abs(ady) == 1:
pumpkin_dialog_shown[0] = True
render(dialog=PUMPKIN_SHOP_DIALOG_LINES)
time.sleep(PUMPKIN_DIALOG_SECONDS)
hero_sym_state[0] = HUMAN
has_wrench[0] = False
if shops_visited_human[0] \
and not pumpkin_shop_dialog_human_shown[0] \
and not has_wrench[0] \
and pumpkin_pos[0] is not None:
px, py = pumpkin_pos[0]
adx = torus_diff(hero[0], px)
ady = torus_diff(hero[1], py)
if abs(adx) + abs(ady) == 1:
pumpkin_shop_dialog_human_shown[0] = True
render(dialog=PUMPKIN_SHOP_HUMAN_DIALOG_LINES)
time.sleep(PUMPKIN_DIALOG_SECONDS)
if not jammer_dialog_shown[0] \
and factory_state[0] == 2 \
and has_pick[0] \
and inv['mop'] > 0 and inv['axe'] > 0 \
and inv['rugby'] > 0 and inv['sticks'] > 0 \
and pumpkin_pos[0] is not None:
px, py = pumpkin_pos[0]
adx = torus_diff(hero[0], px)
ady = torus_diff(hero[1], py)
if (abs(adx) == 1 and ady == 0) or \
(adx == 0 and abs(ady) == 1):
result = enter_jammer_dialog()
jammer_dialog_shown[0] = True
if result:
inv['mop'] = 0
inv['axe'] = 0
has_pick[0] = False
has_jammer[0] = True
else:
continue
# 🐦 какает и (со 2-го хода) преследует клетку над 🧑
if bird_active[0]:
if bird_skip_next[0]:
bird_skip_next[0] = False
else:
bird_move_count[0] += 1
if bird_move_count[0] >= 2:
bx, by = bird_position[0]
tx = hero[0]
ty = (hero[1] - 1) % SIZE
ddx = torus_diff(bx, tx)
ddy = torus_diff(by, ty)
if ddx != 0 or ddy != 0:
if abs(ddx) >= abs(ddy):
bx = (bx + (1 if ddx > 0 else -1)) % SIZE
else:
by = (by + (1 if ddy > 0 else -1)) % SIZE
bird_position[0] = (bx, by)
bx, by = bird_position[0]
below = (bx, (by + 1) % SIZE)
if below != DRAGON_CELL and below not in DIAMOND_CELLS:
make_poop(below[0], below[1])
if robot_alive[0] and (robot[0], robot[1]) == below:
robot_alive[0] = False
if (hero[0], hero[1]) == below:
die(DEATH_POOP_MSG, messages, symbol=POOP_SYM)
render(messages, hero_sym=death_symbol[0],
dead_view=True)
get_key()
break
if bird_move_count[0] == 1:
messages.append({'text': BIRD_TAUNT_MSG})
if not spent and energy[0] < 5:
energy[0] = min(Decimal('5'), energy[0] + Decimal('0.2'))
if multi_drones or star_drones or sparkle_drones:
process_multi_drones(messages)
if dead:
render(messages, hero_sym=death_symbol[0], dead_view=True)
get_key()
break
robot_turn(messages)
projectiles_step(messages)
if dead:
render(messages, hero_sym=death_symbol[0], dead_view=True)
get_key()
break
if cloud_spawned[0]:
cloud_turn(messages)
if dead:
render(messages, hero_sym=death_symbol[0], dead_view=True)
get_key()
break
drone_dialog = drone_turn()
render_messages = list(messages)
if entangled[0]:
render_messages.extend(entangled_messages())
if drone_dialog:
render(render_messages, dialog=drone_dialog)
time.sleep(DRONE_DIALOG_SECONDS)
if pig_house_pending[0]:
pig_house_pending[0] = False
pig_house[0] = find_pig_house()
spawn_multi_drones()
else:
render(render_messages, dialog=alien_dialog_now)
clear_screen()
print('Игра завершена.')
if __name__ == '__main__':
try:
main()
except KeyboardInterrupt:
clear_screen()
print('Игра завершена.')
Игровая комната |
||
|---|---|---|
| Собранные игрушки | Second Hand · SimCity 2000 · QTE · Wikigacha · Весёлый работодатель · Казино «Флэш Рояль» · Маленький человечек в большой квартире: Яичница · Отшей блондинку · Пустыня · Путешествие куда-нибудь и не только · Сказка про белого бычка | |
| Разобранные игрушки | AI Adventures · Бездна · Интерактивное кино · Крестики-нолики · Самый сложный экзамен · Симулятор динозавра | |
| Игрушечный питон | Велогрибник: Заводской Дрифт · Велогрибник 2.0: Лесное Метро · Проф. Волкгонагалл: Лесная Трансфигурация (версия 37.0) · Маруся-Нетакуся (на Абсероиде, Егор там же) | |
| Ещё чего: Портал «Игры Абсурдопедии» | Компьютерные игры | Ролевая игра Абсурдопедии | ||
Егор на Абсероиде находится где-то в нашей галактике |
||
|---|---|---|
| Центр | Солнце | |
| Главный астроном | София Ротару | |
| Вокруг центра | Меркурий · Венера · Земля и Земля 2.0 (Луна) · Марс (Фобос, Деймос) · Церера · Юпитер (Европа, Ганимед, Ио) · Сатурн (Титан) · Уран · Нептун · Плутон (Харон) · Хаумея · Макемаке · Эрида | |
| Далеко от центра | Звёздная система ОЖ1 (Асбест) · Руся · Нибиру · Зомботрон · Татаро-монгольская космическая империя · Туманность Тарантул | |
| Астероиды | (88611) Таронхайавагон · Чайник Рассела · Абсероид (после СКО) | |
| Конец света | Звезда смерти · Вакуум · Конь · Чёрная дыра · Серая дыра · Космические испражнения · Космические черви | |
| Полезное применение | Терраформирование · Колонизация Марса (Как это сделать) · Колонизация Земли | |