Позволяет собрать 100% предметов на локации "Снайперская развязка".
Примечание: настоятельно рекомендуется прочитать подробное описание модификации во избежание вопросов и недопониманий.
Как и почему возник этот баг
Локации в This War of Mine устроены следующим образом: есть базовое состояние локации (Default) и есть дополнительные варианты, на которые переключается локация при выполнении заданных условий. Конкретно для локации "Снайперская развязка" предусмотрено три состояния: Default, TakenBaby, Dead (указано в файле 016_sniper.lua). В общем-то, по названиям все вполне понятно: Default - это стартовое состояние "Снайперской развязки", когда мы туда приходим первый раз, а на следующий визит локация переключается либо на вариант TakenBaby (если помогли мужчине добраться до своего ребенка), либо на Dead (если не помогли или просто ушли с локации).
Также на "Снайперской развязке" есть скрытый контейнер (SimpleContainer_Invisible_low_000), который становится видимым только на варианте локации Dead. Этот контейнер выступает в роли инвентаря погибшего мужчины, поскольку в игре, как известно, тела погибших NPC исчезают на следующую ночь, а разработчикам нужно было сделать так, чтобы игрок мог обыскать тело погибшего мужчины и забрать его медикаменты вне зависимости от того сколько дней прошло с момента последнего визита на локацию. Соответственно, в варианте локации Dead игрок имеет возможность обыскать "тело", опустошив тем самым данный контейнер, и в этом случае счетчик собранных предметов получится-таки довести до 100%. Но большинство игроков предпочитает помогать мужчине, поэтому на следующий визит локация переключается на вариант TakenBaby и данный контейнер остается скрытым...
Разберем теперь базовые принципы создания предметов на локациях. Большинство из них генерируется случайным образом тем или иным алгоритмом. Подробнее о принципах генерации предметов на локациях можно почитать в соответствующей статье, а сейчас достаточно лишь упомянуть, что для локации "Снайперская развязка" задан алгоритм LootGenerator_Med = 165,0. Это значит, что будет сгенерировано максимально возможное количество медицинских предметов (лекарства из трав, бинты, медикаменты) в рамках указанной суммы.
Таким образом, при старте сценария игра генерирует предметы на локациях согласно заданным условиям, но поскольку на "Снайперской развязке" уже есть контейнер, содержащий медицинские предметы, игра помещает в него некоторое количество предметов с теми же свойствами (медицина). В общем-то, ничего плохого в этом нет, такие же принципы (совмещение одинаковых по типу или назначению предметов) используются в игре повсеместно, но вот то, что контейнер может быть скрытым, игра явно не учитывает: разработчики то ли забыли, то ли поленились прописать запрет на взаимодействие с таким типом контейнеров.
Итоговым результатом всего этого и стала невозможность собрать 100% предметов на "Снайперской развязке" при положительном решении квеста.
Исправление бага
К сожалению, без полноценного редактора карт исправить этот баг невозможно, поэтому был выбран обходной путь: полное отключение алгоритма LootGenerator_Med для локации "Снайперская развязка". Это значит, что после установки мода Sniper Junction Loot Fix вы уже никогда не найдете предметы медицинского типа (лекарства из трав, бинты, медикаменты) на "Снайперской развязке". Однако в целях сохранения экономического баланса указанная сумма (165,0 единиц стоимости) была переназначена на алгоритм LootGenerator_Ammo.
Соответственно, теперь игра сгенерирует некоторое количество патронов, пустых гильз и пороха в рамках суммы 165,0 и раскидает их случайным образом по всем контейнерам, кроме SimpleContainer_Invisible_low_000 (в нем таких предметов изначально нет, поэтому и "совмещать" их игра не будет). Таким образом, вы получите возможность собрать все предметы на локации после положительного решения квеста и сможете в итоге довести счетчик собранных предметов до заветных 100%.
Вопросы и ответы
Нужно ли начинать игру заново?
Да, нужно. Вернее, начать заново придется текущий сценарий, поскольку предметы на локациях генерируются именно при запуске сценария, т.е. когда вы нажимаете старт в Мастерской игры или выбираете сценарий от разработчиков (те самые фотокарточки в главном меню игры). Соответственно, если вы установили мод, но не начали новый сценарий, а просто продолжили игру с того места, где остановились, то на "Снайперской развязке" ничего не поменяется, даже если вы еще не посещали ее.
А если указать нулевую стоимость для алгоритма, но задать конкретные медикаменты?
Да, я пробовал так делать, чётко прописав по две единицы бинтов, лекарств и медикаментов. Затем начал новую игру, собрал все предметы на "Снайперской развязке" и недосчитался в итоге одной упаковки лекарств из трав. :) Ну а счетчик собранных предметов вновь скатился к 95%... Этот эксперимент показал, что игра совмещает предметы схожего типа в контейнерах вне зависимости от того как они оказались на локации - путем случайной генерации или будучи явно заданными через Storyteller.exe. Именно поэтому пришлось полностью отказаться от каких-либо предметов медицинского типа на данной локации.
Почему медикаменты были заменены на патроны и пустые гильзы, а не что-нибудь более полезное?
Изначально так было сделано в тестовых целях, когда я пытался выяснить природу бага, но, поразмыслив, решил в итоге ничего не менять и оставить все 165,0 единиц стоимости именно у LootGenerator_Ammo. Причин тому несколько:
1) Локация "Снайперская развязка" всем своим видом демонстрирует нам последствия тяжелых боев. Очевидно, что после столь масштабных сражений неизбежно должны остаться какие-то боеприпасы, а также пустые гильзы и поврежденные патроны (порох).
2) Указанная стоимость (165,0) очень высокая. Это оправданно для генерации таких дорогих предметов как бинты и медикаменты, но если указать данную сумму для других алгоритмов, например, для LootGenerator_TraderBasic, то на выходе мы получим локацию, заваленную сахаром и табаком. Мало того, что это будет выглядеть попросту нелепо, так еще и усилит экономический дисбаланс, т.к. из данного сырья можно будет наделать кучу сигарет и самогона, получив на выходе не 165,0 единиц стоимости, а во много раз больше. Медикаменты же таким свойством не обладают, это конечный продукт и из него сделать что-то еще невозможно. Схожим свойством обладают и патроны. Да, из пустых гильз и пороха можно делать патроны, но это практически бессмысленно с экономической точки зрения, да и для изготовления патронов нужен универсальный слесарный верстак, который получается собрать далеко не сразу (а в коротких сценариях его и вовсе делать смысла нет). Таким образом, даже наличие целой кучи пустых гильз и пороха не даст игроку никаких особых преимуществ или сверх-прибылей.
3) Любопытно, что изначально алгоритм LootGenerator_Ammo имеет как раз-таки нулевую сумму. В описании своего мода Long Game Rebalance я разбирал случай, когда разработчики явно перепутали местами ресурсные формулы травы и овощей, что привело в итоге к перекосам в балансе игры, но чтобы выявить такое, играть нужно очень долго, а этим при тестировании обычно никто не занимается. Возможно, здесь тот же случай: разработчики столкнулись с этой же проблемой (невозможность собрать предметы на 100%) и решили поступить аналогичным образом, прописав нулевую сумму для медицинских предметов. Но как и в случае с травой и овощами, перепутали местами цифры, в результате чего 165,0 единиц стоимости достались не патронам и прочему хламу, характерному для такой локации как "Снайперская развязка", а медицинским предметам. И поскольку выявить этот баг в первые дни игры попросту невозможно, то ошибка так и осталась незамеченной, досаждая потом всем игрокам, которые привыкли вычищать локации на 100%.
4) Есть алгоритм LootGenerator_Skarby, который включает в себя множество предметов и, в принципе, он тоже позволил бы переварить указанную сумму в 165,0 единиц стоимости без особого влияния на баланс игры, но LootGenerator_Skarby может сгенерировать в том числе и оружие, а в SimpleContainer_Invisible_low_000 помимо медикаментов лежит еще и пистолет. В итоге мы снова получаем риск того, что в этом скрытом контейнере появится предмет того же типа (оружие) и мы не сможем его забрать оттуда при положительном решении квеста.
Получается, все равно есть риск получить какой-то левый предмет в скрытом контейнере?
Теоретически да. Но на практике подобного не было ни разу, по крайне мере, ни в одном из моих тестовых забегов ничего такого не обнаружилось. Всегда всё упиралось исключительно в предметы медицинского типа. Возможно, алгоритму LootGenerator_Skarby как раз-таки запретили взаимодействовать со скрытыми контейнерами на данной локации, но проверять это у меня уже не было никакого желания.
Мне не нужны эти патроны и пустые гильзы, можно поменять их на что-то другое?
Да, без проблем. Запустите редактор сценариев (Storyteller.exe), создайте новый мод и в ветке Loot generators config → LootGen_Map16 → FixedPool → LootGenerator_Med установите нулевые значения для суммы, в рамках которой на локации генерируются медикаменты, после чего допишите аналогичную сумму в нужный вам алгоритм или раскидайте ее по частям на несколько алгоритмов сразу. Затем жмем кнопку Pack Files и получаем готовый мод. Не забудьте только удалить Sniper Junction Loot Fix, иначе будет конфликт модов. Подробнее см. статью "Изготовление модификаций".
Важно! Как уже говорилось выше, нет гарантий, что другие алгоритмы безопасны в этом плане. Приведенная выше информация была получена в рамках тестирования локации именно с LootGenerator_Ammo, никакие другие алгоритмы не проверялись. Если будете пробовать иные варианты, то просьба отписаться в комментариях о результатах.
063aa417498f4fffb44572a17d22764b|Sniper Junction Loot Fix|Allows to collect 100% of items at the Sniper Junction.|enabled|local
Комментарии
Добавить комментарий