Cataclysm dda гайд

Обновлено: 05.07.2024

Рано или поздно ты заметишь, мой дорогой Анон, что количество таскаемого тобой лута неуклонно растет, а складывать всё это некуда, что означает, что самое время пересаживаться на своё первое транспортное средство. Самым простым и экономным способом будет найти готовое транспортное средство и привести его в божеский вид, что за отсутствием навыков в механике является единственным способом обзавестись своей первой машиной. Тут маленькое отступление: если при генерации мира установить параметр "Размер городов" как ноль - то вместе с отсутствием городов пропадут и дороги - а это основные источники запчастей для автомобилей и металлолома. Да и передвигаться даже по пересеченной местности - то еще удовольствие.Однако вернемся к теме. Если собрать свой автомобиль с нуля не получается или не хочется - стоит поискать брошенные машины. Зачастую они поломаны в паре мест, с пустым бензобаком или разряженным аккумулятором. А то и всё сразу. Цвет компонента автомобиля в меню обзора отображает состояние компонента (стандартная система зеленый-желтый красный), вплоть до серого цвета, что означает, что компонент уничтожен и больше не выполняет своих функций, а при последующем повреждении будет уничтожен вовсе. При попытке демонтировать разрушенный компонент будет получен лишь металлолом и некоторые составляющие детали от этого компонента. Целые, пусть и поврежденные компоненты подлежат ремонту, для чего нам потребуется соответствующих навык механики (зависящий от сложности ремонтируемого компонента), заряженный сварочный аппарат (аналогом может быть автомобильная сварка, питающаяся от аккумулятора автомобиля, или КБМ: Встроенный набор инструментов, включающий в себя и сварочный аппарат) и сварочные очки (можно сделать самодельные из очков и аэрозольного баллончика или КБМ: Компенсаторы света а также шлем пожарного).

Поломки найденных машин бывают допустимые (машина еще способна двигаться) и критические (с такими мы далеко не уедем или не поедем вовсе)

Допустимые поломки автомобиля [ ]

Разбитые стекла

К неудобствам можно отнести возможность для зомбей невозбранно залезть через разбитое стекло (хотя зомби даже целое стекло за пару ходов быстро, решительно вынесут и полезут), и отсутствие защиты от ветра, что чревато переохлаждением на больших скоростях. Починить разбитое стекло можно лишь раздобыв целый лист стекла, для чего отлично подходят окна домов (понадобится минимальный инструмент, но ничего сложного).

Уничтоженные компоненты рамы и кузова/боковины

Тоже ничего смертельного, однако стоит понимать, что именно эти части отвалятся при первом же столкновении с кустом, и так же, как и любые уничтоженные компоненты являются проходом для запланировавших употребить нас в пищу зомби. Ремонтируются при помощи сварки и аналогичных рам (для рам соответственно) и листов металла (для кузовов и боковин).

Системы сигнализации, управления, камер, гудок, подсветка, стереосистема и прочие электроприблуды

Просто забудьте о них, особой роли не играют, а для починки требуют электронные компоненты и высокий навык механики и электроники.

Недопустимые поломки автомобиля [ ]

Уничтожен двигатель/аккумулятор

Приехали. Лучшим решением будет оставить эту машину и искать следующую. Для ремонта требуется высокий навык механики и аналогичный по мощности двигатель и аккумулятор (необязательно - можно снять сломанный двигатель/батарею и поставить другой целый, главное чтобы мощности нового движка хватило для движения).

Уничтожен мотогенератор/автогенератор/генератор грузовика

Поломка означает, что заряд аккумулятора восстанавливаться не будет, и рано или поздно машина остановится (если она работает на электродвигателях, в случае же с обычными бензиновыми/дизельными машинами при низком заряде батареи вы просто не сможете её завести, но в заведенном состоянии двигатель работать будет даже без аккумулятора). Ремонтируется заменой аналогичным генератором, или установкой другого в тайл двигателя. Стоит учитывать, что генератор отбирает мощность двигателя на зарядку аккумулятора, поэтому не стоит ставить на мотоцикл генератор от грузовика.

Поврежденный бензобак/дизельный бак

Крайне опасная поломка, так как даже при повреждении (не путать с разрушением) начинает вытекать топливо, что чревато стремительным опустением бензобака/дизельного бака. Заметить можно по пятнам, остающимся после машины.

Бич выживателей-автомобилистов. Зачастую потеря колеса (будь то предательский фугас или другая причина) означает серьезную головную боль, так как для замены колеса нужен довольно редкий домкрат или недюжинное значение силы, зависящее от массы машины. Потеря большого количества колёс вешает на ваш автомобиль статус "неустойчивый", ухудшая способность к езде. Когда колёс остается слишком мало - статус изменяется на "не хватает", что означает, что мы уже никуда не поедем.

Руль и водительское сиденье

Сегодня мы с тобой никуда не поедем. Ремонтируются только заменой на аналогичные, да только вот где их взять, кроме как свинтить? Если ваш навык механики невысок - ищите другую машину.

Борьба с пустым бензобаком и аккумулятором [ ]

С аккумулятором дела обстоят попроще. Если заряда аккумулятора хватит хотя бы на пуск двигателя - вам несказанно повезло. Если на машине исправен двигатель и генератор, просто запустите его, и он, даже работая в холостую, будет медленно заряжать аккумулятор. Это будет расходовать топливо, но аккумулятор будет заряжаться. Гораздо хуже, если он на нуле. Зарядить можно от обычной батарейки (через ту же самую "fill" на тайле аккумулятора), но если и ее нет - придется помучиться. Нам придется свинтить аккумулятор с другого автомобиля, либо раздобыть "крокодилы" - кабеля, передающие энергию между двумя автомобилями. Или присандалить на нашу ласточку солнечные панели, которые, можно свинтить с электромобилей. Так же в электромобилях присутствуют сменные аккумуляторные ящики, что тоже не помешало бы установить на свою машину.

Альтернатива бензиновым и дизельным автомобилям [ ]

На второй ступени до вершины автомастерства, бесспорно, является электромобиль. Практически бесшумный, требующий для работы только электричество, этот автомобиль привлекает меньше внимания зомби, а также не требует генератора для зарядки аккумулятора. Однако, за все приходится платить. В нашем случае это большое потребление электроэнергии. Компенсировать это можно установкой солнечных панелей, благополучно скрученных из брошенных электрокаров. Также солнечные панели можно скрафтить, но этот крафт довольно сложный и недоступен новичку. Также в игре существуют укрепленные и улучшенные солнечные панели. Усиленные панели укреплены бронестеклом и более устойчивы к повреждениям, однако платой за это является ухудшенная светопроницаемость, в следствии чего эффективность таких солнечных панелей хуже, чем у обычных. Улучшенные панели (кстати, тоже бывают усиленными) работают эффективнее обычных, но они еще сложнее в крафте и просто так их не достать. Единственный способ найти их в готовом виде - это экспериментальные самоходные улучшенные электромобили, что встречаются очень редко, но несут на себе около десятка таких панелей (не всегда целых/работающих). Если же солнечных панелей у нас нет - читай следующий раздел.

Вершина автомастерства - гибридный автомобиль [ ]

Звучит круто, да? А по факту это автомобиль, имеющий сразу несколько двигателей. Нашли мы, к примеру, электромобиль, у которого уничтожены солнечные панели. При должном навыке механики можно поставить его на ноги, прикрутив к нему бензиновый/дизельный двигатель и генератором грузовика (в последних версиях для установки двух двигателей на простую машину необходим уровень механики 8, для армейской техники (на миникарте зеленая) - 12 уровень). Причем желательно именно от грузовика, так как при установке второго двигателя у нас появится избыток мощности, который не помешало бы пустить на благое дело. В итоге, бензиновый/дизельный двигатель будет через генератор питать аккумуляторы автомобиля, которые в свою очередь будут питать электродвигатель, приводя в движение машину. Так же можно по желанию включать и выключать любые двигатели через меню вождения, что позволит вашей первой жоповозке дотянуть вас до безопасного места.

Продолжать можно до бесконечности, но это будет уже совсем другая история. Удачи вам, выживатели.

Советы, комментарии и прочее по теме [ ]

К квадрику советую прилепить вместо стандартного сидения кресло из машины - к такому можно приделать пояс безопасности, который спасёт твоё лицо от превращения в мясной пирог, если ты вдруг во что-нибудь влетишь на полном ходу.


Скорость и расход топлива зависят от массы машины, типа и объёма движка. Многоцилиндровые большие движки могут спокойно разгонять до приличной скорости хоть целый передвижной особняк, но жрут прорву топлива. Объёмный автомобильный движок - хороший выбор для передвижного дома-трейлера - даёт нормальную скорость при приемлемом расходе. Для квадроциклов и мотоциклов лучше всего подходят двухцилиндровые двигатели (v-twin) Тут выбор зависит от тебя: важней тебе скорость или экономия. На моём квадроцикле стоит два стандартных бензобака от мотоциклов и большой, полуторалитровый двигатель - расход всё рано довольно скромный. За день активного пробега большую часть дня в пути тратится где-то 15% бензина, не более. Одноцилиндровые двигатели обычно использовать нет смысла. Однако, когда у тебя будет подкачаный уровень механики - советую обратить на них внимание. Маленький, миллилитров на 300 движок, выкрученный из бензопилы или газонокосилки способен стать экономным, но достаточно эффективным генератором электричества для твоего убежища или вполне полноценным двигателем для какой-нибудь лёгенькой турели на дистанционном управлении. Впрочем, конструирование вспомогательных устройств на основе автомобильных запчастей - это тема для совсем другой статьи. Вот этой: Тут будет ссылка на соответствующую статью, когда она будет запилена.

С электромоторами попроще. Видел машины на солнечных панелях? вот примерно в такой концепции это и работает. Те, которые обвешаны панелями полностью - улучшенные, восстанови такую, дополни ещё одной запасной батареей - и сможешь спокойно кататься, сколько душеньке угодно.

Ещё есть педали. Тут всё элементарно и логично: легковесная конструкция на них спокойно поедет, но что-нибудь тяжелее мопеда ты уже вряд ли с места сдвинешь. Плюс они тоже могут использоваться, как источник энергии для генератора - сел и крути себе, заряжай батареи.

Вечер в шелтер, выживаны. Пришло время написать гайд для новичков. Он будет рассчитан на полных неофитов, в первый раз запустивших игру. Итак, погнали.

О создании персонажа пускай будет отдельная страница, но начинать я рекомендую дефолтным сценарием в убежище.

Первым делом стоит осмотреть подвал на наличие полезных вещей. Примерно с 10% шансом есть вероятность, что подвал окажется забитым вещами до отказа, но тогда его будет охранять пара зомбей. Выманиваем их к лестнице, подымаемся обратно, если в логе написано что зомби подымается за нами то убегаем и прячемся за НПСа, если нет - то повторяем. И так пока он всех не нагнёт. Но предположим что подвал оказался пустым.

Подходим к окну и жмем "с" чтобы задернуть шторы. Потом "е" и срываем их. Берем палку и ломаем все шкафчики и пару скамеек. Из шкафчика получаем кусок металла, который сойдет за недомолоток. Над упавшей гардиной жмем "B" и разбираем длинный шнур на 6 коротких. Если начали профой, у которой нет ножа - разбираем 2 коротких шнура на нитки, жмем "&" и крафтим шип и потом самодельный нож.

В меню крафта ищем рыболовный крючок, и крафтим его пока не подымем производство до 1. Кнопка "-" повторяет последний крафт, оче удобно(сам только недавно узнал, пиздос). Крафтим из щепок деревянную иглу. Разбираем еще шнуров на нитки. Перезаряжаем нашу иголку и понеслась.

Сперва крафтим еще одну пару носков, если у нас профессия не с зимними ботинками. Вообще смотрите какой у вас шмот от профы, и не крафтите если что-то уже есть. Ладно, дальше крафтим простой шарф и арафатку на голову и начинаем пытаться укреплять что есть. Заюзав иглу на готовые шмотки мы подшиваем их (в скобках рядом с названием итема появляется надпись "впору", что снижает скованность от их ношения), затем можно попытаться их укрепить. На низком навыке ничего не получится и будет писать "вы упражняетесь шить". Главное на 0-1 навыка не юзать на нормальные вещи, а то есть шанс порвать ненароком. Юзаем на носки, труханы, и все такое. На единичке крафтим две пары тонких перчаток, на двушке термобелье и водолазку, на тройке пыльник. Если нечего крафтить и укреплять - укрепляем нитки чтобы прокачаться. Можно скрафтить рюкзак чтобы тягать чуть больше, но получить аж 10 скованности.

Скованность работает так: до 10ки идут оче слабые штрафы, после 10 уже серьезный, и.т.п. до 20, 30, ну ты понел. Пыльник дает 7, водолазка и термобелье по 1, получается 9. И да, каждая вещь занимает свой слот, нательный, обычный, внешний, на поясе, пристегнутый. Если одевать две вещи из одного слоя идёт штраф на скованность. Вобщем решай сам, нужен тебе рюкзак, или пока нет.

Не забудь выкинуть лифоны, стринги, и все такое. У вещей есть ещё такой параметр как покрытие. 15% покрытие означает что их броня будет прокать только на 15% ударов. Это гораздо хуже, чем 95% термобелья, и они только повысят скованность.

Теперь надо раздобыть оружие. Самый простой вариант - вырезать дубину из доски. Имеет отличную спецуху станить при критах, что хорошо работает в синергии с другой ее спецухой - быстрая атака. Более сложный вариант - выйти к ближайшему лесу и обыскивать там кусты(обыскиваются только лесные и ягодные) пока не прокачаешь выживание до 1. Откроется рецепт копья с наконечником. Основной его плюс - можно бить через один тайл нажав "f". Медленных зомби можно просто кайтить, только смотри чтобы выносливости хватило.

Ну вот и все, ступай выживать. С таким шмотом слабые зомби и мелкая живность уже не угроза. Если ты весь день крафтил то надо срочно раздобыть еды и воды. Не забудь поторговать НПСом, у них частенько что-то бывает. Можно тут же скрафтить еще одну дубинку и ему впарить за еду. И не забудь взять с собой шнуров про запас и несколько тряпок, если пума нападёт то ей не только можно подлатать шмот, но и перебинтоваться. Для этого нужно её активировать.

Photo 2020-01-11 12-16-52.jpg

В одном мире можно создать несколько персонажей, при этом сохраняются последствия действий каждого персонажа, все монстры и NPC. Можно наткнуться на собственный труп и пожитки. Но персонажи обычно стартуют довольно далеко друг от друга.

"Танки и другой транспорт" - добавляет брошенную военную технику и большой набор военных деталей.

Прочие моды, кроме стандартных - не нужны, они часто приводят к ошибкам, потому что не всегда обновляются вместе с игрой.

Размер городов и расстояние [ ]

Размер города определяет количество зомби и лута, расстояние - площадь дорог и дикой природы.

При значении расстояния больше 7 игра может забыть сгенерировать города.

Сложность [ ]

Для упрощения игры можно увеличить множитель предметов до 1.5 (но лучше оставить 1), и снизить скорость монстров до 50%.

Обычно играют с множителем предметов < 0.5 и множителем монстров > 2.0.

Рекомендуется поставить множитель генерации NPC на 1.0, включить статических и динамических NPC. Это обеспечит постоянное присутствие рядом живых персонажей, с которыми можно взаимодействовать и набирать в свой отряд.

Встречаются и агрессивные NPC с огнестрельным оружием, которые могут неожиданно закончить путь даже опытного игрока. Также они любят воровать вещи.

Зарождение орды [ ]

По умолчанию все монстры генерируются вместе с местностью и после их смерти местность останется пустой.

Эта опция добавляет абстрактные орды зомби - зоны, которые спавнятся в городах и вокруг них, перемещаются по карте случайным образом, либо двигаются на шум, и постоянно спавнят монстров внутри себя.

Время года и сезоны [ ]

По умолчанию игра начинается на 30 день весны. Можно настроить по отдельности как стартовую дату (эволюция монстров и протухание продуктов не будут просчитываться), так и время, прошедшее от начала Катаклизма (тогда вышеупомянутые факторы будут просчитываться).

Начинать зимой - хардмод.

Длительность сезона по умолчанию 91 день.

Создание персонажа [ ]

Сценарий и профессия [ ]

Для новичка рекомендуется стандартный сценарий "Эвакуированный". Это старт в безопасном наземном убежище в отдалении от городов.

Профессия любая, лучше всего начать со стандартного "Выживший".

Профессию с огнестрельным оружием брать не стоит - на выстрелы сбегутся зомби со всех окрестностей, и патронов на всех не хватит, да и вообще это не каноничное выживание.

Черты [ ]

Положительные черты нужно компенсировать отрицательными.

Характеристики [ ]

Ловкость [ ]
Интеллект [ ]
Восприятие [ ]

Навыки [ ]

Стоит потратить по одному очку на навыки производства, шитья и выживания, чтобы можно было сразу заняться крафтом.

Первые шаги [ ]

Перед тем, как покинуть убежище, нам нужно создать защитную экипировку для всего тела и базовое оружие. Для этого мы используем доступные в помещении материалы.

Приятные мелочи [ ]

Палка [ ]

Подойди к окну, нажми e и сорви шторы. У тебя под ногами окажутся несколько предметов, нажми g и подбери палку. Нажми w и возьми палку в руки.

Нитки [ ]

Затем через B развяжи длинные шнуры на короткие, и пару коротких на нитки. Положи короткие шнуры и нитки в инвентарь.

Молоток [ ]

Подойди к шкафчикам и с помощью палки разбивай их через s , пока не выпадет кусок стали. Его можно использовать как примитивный молоток, положи его в инвентарь.

Стоя рядом с обломками шкафчиков, открой меню крафта & и сделай Прочее⟶шип из металлолома.

Швейная игла [ ]

Подойди к одной из лавок и через s разбей её на доски и гвозди. Стоя рядом с обломками лавки, открой меню крафта & и создай Прочее->деревянную иглу из расколотой доски.

Одежда [ ]

Вернись к окну и через B разрежь шторы на тряпки. Через d скинь с себя нижнее бельё и так же разрежь на тряпки.

Теперь через меню крафта & создай:

И надень всё это через W . Если крафт не удался, можно повторить попытку через - . Если закончились тряпки или нитки - разбери другое окно.

Оружие [ ]

В меню крафта & создай Оружие⟶копьё с наконечником. Как создавать шип, мы уже проходили с ножом, остальные ингредиенты должны валяться рядом, собери их вместе.

Продолжай шить вещи, которые можно разобрать на тряпки, пока не поднимешь навык шитья до третьего уровня. Обычно это занимает весь день, поэтому не выходи из убежища, кушай и пей то, что найдешь у себя в инвентаре и в здании. На ночь постели в подвале штору и засни на ней через $ . На третьем уровне шитья создай рюкзак, он значительно расширит инвентарь.

Теперь, когда у тебя есть защита и оружие, можно выходить из убежища и отправляться навстречу приключениям.

Еда, вода, алкоголь [ ]

Самый простой способ добыть еду, для которого понадобятся только палка и нож, - догнать и забить какую-нибудь живность, разделать и съесть сырое мясо.

Приводит к ухудшению морального состояния, а также чревато заражением паразитами.

В городах еда есть везде, особенно в бакалеях и различных закусочных и ресторанах.

Поедание фастфуда и несоблюдение баланса витаминов приводит к ухудшению здоровья.

Стабильный источник еды - запас круп и макарон, дополняемый мультивитаминами либо походами в лес за фруктами, ягодами, орехами и мясом.

Отшельники могут выращивать крупы и овощи на ферме.

Самый простой способ - забраться в дом и попить из унитаза. С большой вероятностью приводит к пищевому отравлению и также возможности заполучить паразитов.

Приготовить чистую воду можно в меню крафта, с помощью огня/электроплитки и кастрюли/открытой консервной банки. Либо закинув в ёмкость с водой таблетки для очищения, если такие нашлись.

Чтобы собирать дождевую воду, нужно изготовить воронку и поставить её (активировав через a ) на ёмкость типа бутылки.

Алкоголь [ ]

Полезный ресурс, в первую очередь как обезболивающее, поднимает моральное состояние, используется для изготовления самодельных медикаментов и коктейлей Молотова.

При чрезмерном употреблении вызывает рвоту, при регулярном - зависимость.

Скованность, боль, мораль, сон [ ]

Скованность [ ]

Несколько вещей на одном слое дают штраф.

Особенно выделяется скованность рта, которая замедляет восстановление выносливости. Бегать и сражаться в шлеме или шарфе это не лучшая идея.

В начале игры скованность должна быть в пределах 10-15, в дальнейшем допускается 25-30, если это оправдано степенью защиты.

Персонажи дальнего боя могут оставить свободными руки и глаза, забив на скованность прочих частей тела.

Снижает скорость персонажа, не позволяя эффективно сражаться и передвигаться.

Повышается от ранений и болезней.

Обезболивающее - это первое, что всегда должно быть в инвентаре, самое доступное — алкоголь и аспирин.

Мораль [ ]

Низкая мораль не позволяет заниматься крафтом и чтением.

Лечится алкоголем и фастфудом.

Во время сна восстанавливаются повреждённые части тела.

Спать стоит в безопасных местах, например, подвале.

Закрытые помещения [ ]

Отмычки [ ]

Оружейный магазин [ ]

Соответствует дому, но защищён очень громкой сигнализацией. Для окон нужна ножовка по металлу, двери не взламываются ломом.

Лаборатория [ ]

Пропуск учёного [ ]
Напролом [ ]

Военный бункер [ ]

Соответствует лаборатории, только на нижнем этаже понадобится отбойный молоток для прохода через стены, без него туда соваться незачем.

Приложение 1: Базовое управление [ ]

Полная информация о персонаже.

Такое же окно для NPC-друга можно открыть, заговорив с ним и выбрав пункт "Хочу узнать побольше о тебе".

Надетые и переносимые вещи. Доступный объём увеличивается за счёт сумок, рюкзаков и карманов на одежде. Максимальный вес зависит от силы.

Горячие клавиши для инвентаря

a (action) - использовать.

w (wield) - взять в руки.

T (take off) - снять.

E (eat) - съесть/выпить.

d (drop) - выбросить.

t (throw) - метнуть.

I - сравнить два предмета.

g (gather) - меню подбора окружающих предметов. Также можно воспользоваться продвинутым инвентарём / .

B (butcher) - разделать труп либо разобрать предмет;

Неразделанные трупы по умолчанию зомби через некоторое время встают обратно, если только при создании мира не был выбран мод на отключение возрождения.

e (examine) - меню изучения соседних клеток и взаимодействия с ними - набрать воду из реки, собрать ягоды с кустов, разжечь или потушить огонь в камине, взломать запертые двери и многое другое. Также можно использовать для подбора предметов.

s (smash) - ударить/разбить предмет на соседней клетке. Вероятность успешного разбивания зависит от силы персонажа и показателя ударного урона взятого в руки предмета. Можно разбивать трупы зомби вместо разделки.

x (explore) - режим осмотра, также можно использовать для этого мышку.

f - выстрел из оружия дальнего боя или удар копьём на расстоянии.

C (call) - обратиться к NPC или просто что-нибудь прокричать.

Обязательно следи за запасом выносливости в правом верхнем углу экрана, она используется для бега, ближнего боя и некоторых других действий. Передохнуть можно на клавишу , предварительно найдя укромное место.

Также следи за скованностью рта - различные маски, шлемы и противогазы значительно замедляют восстановление выносливости и приводят к смерти.

Бег значительно увеличивает скорость передвижения по земле и при плавании, но и очень быстро тратит выносливость. Присед снижает скорость передвижения, но также снижает издаваемый персонажем при передвижении шум и позволяет прятаться за различными элементами обстановки (столами, диванами и т.д.). Обрати внимание, что в приседе дальность обзора персонажа снижается, так что он не сможет увидеть, к примеру, обстановку в доме, если крадучись подойдёт в окну.

Не забывай переключать бег или присед на ходьбу, когда эти режимы передвижения больше не нужны, так как очень легко забыть, что ты бежишь или крадёшься!

$ - лечь спать. Для этого нужна постель либо куча одежды на полу, а также усталость. Индикатор усталости появляется в правом верхнем углу.

Существует ряд факторов, которые не дают персонажу заснуть, например кофе или другие энергетики. Как снотворное можно использовать лекарство от кашля.

Во время сна восстанавливаются поврежденные части тела.

& - меню крафта. Необходимые ингредиенты для создаваемой вещи должны быть в инвентаре либо на расстоянии до 6 клеток в прямой видимости.

+ - полная информация о надетых вещах и слоях, которые они занимают.

m (map) - глобальная карта. Если включены орды зомби, они отображаются зелёными Z на карте.

Приложение 2: Машина с нуля [ ]

Постройка машины - очень трудоёмкий процесс, который потребует нескольких дней и большого количества еды.

Сначала нужно добыть следующие предметы:

Добываем детали [ ]

Найди подходящую машину-донор или несколько машин, с помощью инструментов демонтируй с них детали и складывай в кучу.

Сложнее всего снять колёса, потому что для этого нужно приподнять машину.

Есть три способа:

Каркас [ ]

В меню строительства

  • выбери пункт "Начать постройку транспорта" и поставь первую раму. Открой меню новой машины и поставь остальные 8 вокруг первой, должно получиться так:

Смонтируй 4 колеса по углам каркаса (передние должны быть управляемыми):

Корпус [ ]

Смонтируй 5 боковин и сиденье в центре:

Смонтируй 5 крыш в форме креста над сиденьем и смежными тайлами. Это обеспечит защиту водителя от дождя (тайл должен пометиться как Интерьер).

На тайл с сиденьем поставь руль и ремень безопасности.

Контейнеры [ ]

На три свободных тайла поставь желаемую комбинацию контейнеров и дополнительных сидений для своих корешей, не забывай про ремни безопасности.

Например два сиденья и багажник в полу:

Двигатель, аккумулятор и бензобак [ ]

Важные системы стоит располагать подальше от крайних тайлов машины, так как они могут повредиться при столкновениях. Смонтируй двигатель, генератор, аккумулятор и бензобак под водительское сиденье.

Освещение [ ]

Найди прожектор и поставь в центре крыши. Обычные фары не нужны.

Топливо [ ]

Найди машину с топливом либо заправку, подъедь на расстояние в один тайл и слей дизель/бензин с помощью резинового шланга. Если машина ещё не на ходу, используй контейнер.

Отличная машина для дальних путешествий и перевозки накопленного добра готова.

Cataclysm: DDA. Roleplay

Естественно, что наибольшая эффективность этого мега девайса возникает при использовании дозвуковых патронов.

Нравится Показать список оценивших

Cataclysm: DDA. Roleplay

Сейчас я расскажу как сделать поджигной самопал.
Против зомби он будет малоэфективен, а вот человека поразить им можно, например, чтобы забрать его вещи или что-то вроде этого.

Итак, из чего он состоит:
1. Деревянная ручка
2. Труба
3. Свинец
4. Спичечная сера
5. Пыж
6. Снаряд
7. Спичка

Нравится Показать список оценивших

Kouta Kouta

Хотите попытаться самостоятельно извлечь пулю из раны?

Тогда для начала немного отрезвляющей теории.

Ударная волна, создаваемая пулей, внутри тела вызывает обширные гематомы и кровоизлияния.

Пуля может быть не простой, а с крестообразно надрезанным носиком. От удара такая пуля развернется внутри тела в жуткий свинцовый цветок, который очень трудно будет извлечь.

Пуля, столкнувшись с телом, не пойдет по прямой, а начнет уходить в сторону, по пути теряя фрагменты металлической рубашки. И совсем необязательно, что она остановится в аккурат напротив входного отверстия.

Наконец, раневой канал – это совсем не аккуратная круглая дырочка с застрявшей в его «слепом» конце пулькой. Это дыра с рваными краями, начиненная кровавым фаршем, с осколками костей внутри, с какими-то беленькими и синенькими жилками, с постоянно текущей оттуда кровью и еще чем-то непонятным… Зрелище не для слабонервных. Найти среди всего этого месива кусочек металла размером с ноготь – задача не из легких.

Поэтому, когда люди утверждают, что извлечь попавшую в тело пулю – раз плюнуть, я соглашаюсь. Да, раз плюнуть. Если у вас дома стоит целое ведро извлеченных лично вами пуль, а на стене – сотня благодарственных грамот от спасенных вами людей. Тогда – да, легко.

А на самом деле – без практики, да еще в антисанитарных условиях, почти нереально.

Если пуля не вышла, осталась в теле, значит, она либо была на излете, либо пробила какое-то препятствие (например, бронежилет) и потеряла часть своей энергии, а заодно деформировалась и расплющилась, либо уперлась в кость и в ней застряла и тоже наверняка расплющилась. Попутно эту самую кость раскрошив и переломав… И эта сама по себе поганая ситуация еще осложняется почти стопроцентным заражением. Увы, пули и стволы никто перед боем не стерилизует.

Так что постарайтесь забинтовать рану перевязочным пакетом и доставить раненого в госпиталь. Если ранение не в брюшную полость, дайте побольше пить, чтобы компенсировать кровопотерю.

Но, допустим, госпиталь даже в отдаленной перспективе не предвидится, и только вы можете помочь раненому, потому что никаких врачей уже никогда не будет, поскольку наступил пресловутый Большой Пэ. Тогда…

Еще раз все взвесьте. Если пуля попала в голову, шею, брюшную полость или грудь, то ваша попытка извлечь пулю почти наверняка убьет пациента. Ну, а если – в руку или ногу и застряла в больших группах мышц, тогда можно рискнуть. Хотя люди живут и с пулями в теле. Организм их попросту капсулирует, а микрофлору задавливает иммунная система.

Но вот мы все же решились на операцию.

Что нам понадобится:

1. Сильный помощник, который будет держать пациента, пока вы будете в нем ковыряться.

2. Пинцет со специальными зубчиками, или хотя бы пассатижи с достаточно длинными губками. Все это надо будет предварительно прокипятить и выложить на стерильный кусок марли или развернутый и сложенный в несколько слоев бинт.

3. Много кипяченой воды.

4. Очень много стерильных бинтов.

5. Спринцовка, обычная резиновая «груша».

6. Вся наша наличная решимость.

Бинты, пинцет и антисептики обязательно должны быть в вашей индивидуальной аптечке.

Моем руки. Если есть, одеваем стерильные перчатки и хирургическую маску на лицо. Если раненая конечность в одежде, срезаем одежду на фиг. Тщательно промываем рану водой. Если есть антисептик, протираем кожу вокруг раны антисептиком. Нет антисептика, тогда просто спиртом или водкой.

Когда начнется поиск и извлечение пули, ваш подопечный будет пинаться, ворочаться и орать, всячески вам мешать. Поэтому помощник должен надежно зафиксировать раненую конечность страдальца на ровной, хорошо освещаемой поверхности (на столе, на стуле, на снятой с петель двери, наконец, прос

Picture 10

Скорее всего, из названия статьи вы уже догадались, что в центре внимания ошибки в исходном коде. Но это вовсе не единственное, о чем пойдет речь в этой статье. Если кроме С++ и ошибок в чужом коде вас привлекают необычные игры и вам интересно узнать, что это такие за «рогалики» и с чем их едят, добро пожаловать под кат!

В своем поиске необычных игр я наткнулась на игру Cataclysm Dark Days Ahead, отличающуюся от других необычной графикой: она реализована с помощью разноцветных символов ASCII на черном фоне.

Что поражает в этой игре и ей подобных, это сколько всего в них реализовано. Конкретно в Cataclysm, например, даже для создания персонажа хочется поискать гайды, так как разных параметров, особенностей и начальных сюжетов десятки, не говоря уже о вариациях событий в самой игре.

Это игра с открытым исходным кодом, и, к тому же, написана на С++. Так что невозможно было пройти мимо и не прогнать этот проект через статический анализатор PVS-Studio, в разработке которого я сейчас принимаю активное участие. Сам проект удивил высоким качеством кода, однако, в нем все равно находятся некоторые недоработки и несколько из них я рассмотрю в этой статье.

К настоящему моменту с помощью PVS-Studio было проверено уже достаточно много игр. Например, вы можете ознакомиться с другой нашей статьей "Статический анализ в видеоигровой индустрии: топ-10 программных ошибок".

Логика

Следующий пример представляет собой типичную ошибку копирования.

V501 There are identical sub-expressions to the left and to the right of the '||' operator: rng(2, 7) < abs(z) || rng(2, 7) < abs(z) overmap.cpp 1503


Здесь дважды проверяется одно и то же условие. Скорее всего, выражение скопировали и забыли что-то в нём поменять. Я затруднюсь сказать, является ли эта ошибка существенной, но проверка работает не так, как задумывалось.

  • V501 There are identical sub-expressions 'one_in(100000 / to_turns <int> (dur))' to the left and to the right of the '&&' operator. player_hardcoded_effects.cpp 547

Picture 9

V728 An excessive check can be simplified. The '(A && B) || (!A && !B)' expression is equivalent to the 'bool(A) == bool(B)' expression. inventory_ui.cpp 199


Ошибки в условии нет, но оно излишне усложнено. Стоило бы сжалиться над тем, кому придется разбирать это условие, и написать проще if( left_fav == right_fav ).

  • V728 An excessive check can be simplified. The '(A && !B) || (!A && B)' expression is equivalent to the 'bool(A) != bool(B)' expression. iuse_actor.cpp 2653

Отступление I

Для меня оказалось открытием, что игры, которые на сегодняшний день называют «рогаликами» — это лишь достаточно лайтовые последователи старого жанра roguelike игр. Началось все с культовой игры Rogue 1980 года, ставшей образцом для подражания и вдохновившей множество студентов и программистов на создание собственных игр. Полагаю, многое также привнесло сообщество настольной ролевой игры DnD и её вариаций.

Picture 8

Микрооптимизации

Следующая группа предупреждений анализатора указывает не на ошибку, а на возможность микрооптимизации кода программы.

V801 Decreased performance. It is better to redefine the second function argument as a reference. Consider replacing 'const… type' with 'const… &type'. map.cpp 4644


Здесь за itype_id скрывается std::string. Так как аргумент все равно передается константным, что не позволит его изменить, быстрее было бы просто передать в функцию ссылку на переменную и не тратить ресурсы на копирование. И хотя, скорее всего, строка там будет совсем небольшая, но постоянное копирование без видимой на то причины излишне. Тем более, что эта функция вызывается из разных мест, многие из которых, в свою очередь, также получают type извне и копируют его.

  • V801 Decreased performance. It is better to redefine the third function argument as a reference. Consider replacing 'const… evt_filter' with 'const… &evt_filter'. input.cpp 691
  • V801 Decreased performance. It is better to redefine the fifth function argument as a reference. Consider replacing 'const… color' with 'const… &color'. output.h 207
  • В целом, анализатор выдал 32 таких предупреждения.

V813 Decreased performance. The 'str' argument should probably be rendered as a constant reference. catacharset.cpp 256


В этом случае аргумент хоть и не константный, но в теле функции он никак не изменяется. Поэтому, для оптимизации, хорошо было бы передавать его по константной ссылке, а не вынуждать компилятор создавать локальные копии.

Это предупреждение также было не единичным, всего таких случаев нашлось 26.

Picture 7

  • V813 Decreased performance. The 'message' argument should probably be rendered as a constant reference. json.cpp 1452
  • V813 Decreased performance. The 's' argument should probably be rendered as a constant reference. catacharset.cpp 218
  • И так далее.

Отступление II

Некоторые из классических roguelike игр до сих пор активно развиваются. Если зайти в репозитории GitHub Cataclysm DDA или NetHack, то можно увидеть, что изменения активно вносятся каждый день. NetHack вообще является самой старой игрой, разработка которой идет до сих пор: её релиз произошел в июле 1987 года, а последняя версия датируется 2018 годом.

Одной из известных, однако, более поздних игр этого жанра является Dwarf Fortress, разрабатываемая с 2002 года и впервые выпущенная в 2006 году. «Losing is fun» («Проигрывать весело») — девиз игры, в точности отражающий её суть, так как победить в ней невозможно. Эта игра в 2007 году заслужила звание лучшей roguelike игры года в результате голосования, которое ежегодно проводится на сайте ASCII GAMES.

Picture 6

Кстати, тем, кто интересуется этой игрой, возможно будет интересна следующая новость. Dwarf Fortress выйдет в Steam с улучшенной 32-битной графикой. С обновлённой картинкой, над которой работают два опытных модера игры, премиум-версия Dwarf Fortress получит дополнительные музыкальные треки и поддержку Steam Workshop. Но если что, владельцы платной версии Dwarf Fortress смогут поменять обновлённую графику на прежний вид в ASCII. Подробнее.

Переопределение оператора присваивания

Примеры 5, 6:

Также нашлась интересная пара сходных предупреждений.

V690 The 'JsonObject' class implements a copy constructor, but lacks the '=' operator. It is dangerous to use such a class. json.h 647


Этот класс обладает конструктором копирования и деструктором, однако, для него отсутствует перегрузка оператора присваивания. Проблема здесь состоит в том, что автоматически сгенерированный оператор присваивания может лишь присвоить указатель к JsonIn. В результате оба объекта класса JsonObject указывают на один тот же JsonIn. Неизвестно, может ли где-то сейчас возникнуть такая ситуация, но, в любом случае, это — грабли, на которые рано или поздно кто-то наступит.

Аналогичная проблема присутствует в следующем классе.

V690 The 'JsonArray' class implements a copy constructor, but lacks the '=' operator. It is dangerous to use such a class. json.h 820


Более подробно об опасности нехватки перегрузки оператора присваивания для сложного класса можно почитать в статье "The Law of The Big Two" (или в переводе этой статьи "CИ++: Закон Большой Двойки").

Примеры 7, 8:

Еще один пример, связанный с перегруженным оператором присваивания, но на этот раз речь о его конкретной реализации.

V794 The assignment operator should be protected from the case of 'this == &other'. mattack_common.h 49


Проблема в том, что данная реализация не защищена от присвоения объекта самому себе, что является небезопасной практикой. То есть, если этому оператору будет передана ссылка на *this, может произойти утечка памяти.

Схожий пример ошибочной перегрузки оператора присваивания с интересным побочным эффектом:

V794 The assignment operator should be protected from the case of 'this == &rhs'. player_activity.cpp 38


В этом случае точно так же отсутствует проверка на присваивание объекта самому себе. Но в дополнение заполняется вектор. Если попытаться такой перегрузкой присвоить объект самому себе, то в поле targets получим удвоенный вектор, часть элементов которого испорчена. Однако здесь перед transform присутствует clear, что очистит вектор объекта и данные будут потеряны.

Picture 16

Отступление III

В 2008 году рогалики даже обзавелись формальным определением, которое получило эпичное название «Берлинская интерпретация». Согласно этому определению, основными чертами таких игр являются:

  • Случайно сгенерированный мир, что увеличивает реиграбельность;
  • Permadeath: если ваш персонаж умирает — он умирает навсегда и все предметы теряются;
  • Пошаговость: изменения происходят только вместе с действием игрока, пока действие не произведено — время останавливается;
  • Выживание: ресурсы крайне ограничены.

Обычная ситуация в Cataclysm DDA: промерзли и голодны до смерти, вас мучает жажда, да и вообще у вас вместо ног шесть тентаклей.

Picture 15

Немаловажные детали

V1028 Possible overflow. Consider casting operands of the 'start + larger' operator to the 'size_t' type, not the result. worldfactory.cpp 638


Похоже, программист хотел избежать переполнения. Но приведение результата сложения в таком случае бессмысленно, так как переполнение возникнет уже при сложении чисел, и расширение типов произведется над бессмысленным результатом. Для того, чтобы избежать этой ситуации, необходимо привести лишь один из аргументов к большему типу: (static_cast<size_t> (start) + larger).

V530 The return value of function 'size' is required to be utilized. worldfactory.cpp 1340


Для таких случаев существует небольшая хитрость. Если переменная оказывается неиспользованной, вместо того, чтобы пытаться вызвать какой-либо метод, можно просто написать (void)world_name для подавления предупреждения компилятора.

V812 Decreased performance. Ineffective use of the 'count' function. It can possibly be replaced by the call to the 'find' function. player.cpp 9600


Судя по тому, что результат count сравнивается с нулем, идея в том, чтобы понять, есть ли хоть один требуемый элемент среди activity. Но count вынужден проходить по всему контейнеру, так как он считает все вхождения элемента. В этой ситуации будет быстрее использовать find, который останавливается после первого же найденного совпадения.

Следующая ошибка легко обнаруживается, если знать об одной тонкости.

V739 EOF should not be compared with a value of the 'char' type. The 'ch' should be of the 'int' type. json.cpp 762

Picture 3

Это одна из тех ошибок, которые бывает сложно заметить, если не знать, что EOF определен как -1. Соответственно, если пытаться сравнивать его с переменной типа signed char, условие почти всегда оказывается false. Единственное исключение, это если кодом символа будет 0xFF (255). При сравнении такой символ превратится в -1 и условие окажется верным.

Следующая небольшая ошибка однажды может стать критической. Не зря она есть в списке CWE как CWE-834. А их, кстати, было целых пять.

V663 Infinite loop is possible. The 'cin.eof()' condition is insufficient to break from the loop. Consider adding the 'cin.fail()' function call to the conditional expression. action.cpp 46


Как сказано в предупреждении, проверки на достижение конца файла при чтении недостаточно, необходимо также проводить проверку на ошибку считывания cin.fail(). Изменим код для более безопасного считывания:


keymap_txt.clear() нужен для того, чтобы при ошибке считывания из файла убрать из потока состояние (флажок) ошибки, иначе дальше считать текст будет нельзя. keymap_txt.ignore с параметрами numeric_limits<streamsize>::max() и управляющим символом перевода строки позволяет пропустить оставшуюся часть строки.

Есть и гораздо более простой способ остановки считывания:


Если использовать поток в контексте логики, он конвертирует себя в значение эквивалентное true, пока не будет достигнут EOF.

Отступление IV

Сейчас наибольшую популярность имеют игры, которые сочетают в себе признаки roguelike игр и других жанров: платформеров, стратегий и др. Такие игры стали называть roguelike-like или roguelite. К таким играм относят такие известные тайтлы, как Don't Starve, The Binding of Isaac, FTL:Faster Than Light, Darkest Dungeon и даже Diablo.

Хотя временами разница между roguelike и roguelite столь мала, что не понятно, к какому жанру отнести игру. Кто-то считает, что Dwarf Fortress уже не roguelike, а для кого-то и Diablo — классический рогалик.

Picture 1

Заключение

Хоть проект в целом и является примером качественного кода, и не удалось найти много серьёзных ошибок, это не значит, что использование статического анализа для него является избыточным. Суть не в разовых проверках, которые делаем с целью популяризации методологии статического анализа кода, а в регулярном использовании анализатора. Тогда многие ошибки можно выявить на самом раннем этапе и, следовательно, сократить стоимость их исправления. Пример расчётов.

Picture 2

Над рассмотренной игрой и сейчас ведется активная работа, и существует активное сообщество моддеров. Причем она портирована на множество платформ, в том числе iOS и Android. Так что, если вас заинтересовала эта игра, рекомендую попробовать!

Читайте также: