Ну очень крутой крафт импровизированого ресивера для вооружения класса Д#978
Ну очень крутой крафт импровизированого ресивера для вооружения класса Д#978helper342 wants to merge 40 commits into
Conversation
|
RSI Diff Bot; head commit 5dbfe14 merging into 7d7ae3d Resources/Textures/_Scp/Objects/Misc/improvised_modular_receiver.rsi
|
|
Note Reviews pausedIt looks like this branch is under active development. To avoid overwhelming you with review comments due to an influx of new commits, CodeRabbit has automatically paused this review. You can configure this behavior by changing the Use the following commands to manage reviews:
Use the checkboxes below for quick actions:
📝 WalkthroughWalkthroughДобавлена новая единица улучшенного импровизированного модульного ствола с полной поддержкой крафта, включая график конструкции и локализацию. Обновлены целевые узлы для пяти кованых оружейных рецептов. Исправлены компоненты в прототипе RifleStock с явным указанием размера. Changes
Estimated code review effort🎯 3 (Moderate) | ⏱️ ~25 minutes 🚥 Pre-merge checks | ✅ 5✅ Passed checks (5 passed)
✏️ Tip: You can configure your own custom pre-merge checks in the settings. ✨ Finishing Touches🧪 Generate unit tests (beta)
Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. Comment |
There was a problem hiding this comment.
Actionable comments posted: 16
Caution
Some comments are outside the diff and can’t be posted inline due to platform limitations.
⚠️ Outside diff range comments (1)
Resources/Prototypes/_Starlight/Recipes/Crafting/Graphs/improvised/forged_rifle.yml (1)
14-20: 🧹 Nitpick | 🔵 TrivialПодсказка шага не отражает расширенный набор ингредиентов.
После перехода на
anyTagsшаг по-прежнему помеченname: construction-graph-tag-modular-receiver, поэтому в меню крафта и в требованиях рецепта игрок увидит только «модульный ресивер» и не узнает, что подходит и импровизированный вариант. Стоит либо завести отдельный совмещённый ключ (например,construction-graph-tag-modular-receiver-any) с текстом вида «модульный ресивер (или импровизированный)», либо переключить иконку/имя на нейтральный вариант.То же самое относится к остальным затронутым в этом PR графам:
improvised_pistol.yml,makeshift_shotgun.yml,makeshift_smg.yml,improvised_sniper.yml,forged_shotgun.yml. Коммент оставляю только здесь, чтобы не дублировать.🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed. In `@Resources/Prototypes/_Starlight/Recipes/Crafting/Graphs/improvised/forged_rifle.yml` around lines 14 - 20, Шаг с anyTags использует старый ключ name: construction-graph-tag-modular-receiver и из-за этого в UI показывается только «модульный ресивер», хотя теперь допустим также ImprovisedModularReceiver; замените или добавьте отдельный нейтральный ключ/текст (например construction-graph-tag-modular-receiver-any) с описанием типа «модульный ресивер (или импровизированный)» либо смените name и/или icon на нейтральный вариант, и повторите то же исправление для аналогичных графов (improvised_pistol, makeshift_shotgun, makeshift_smg, improvised_sniper, forged_shotgun) чтобы подсказка соответствовала anyTags.
🤖 Prompt for all review comments with AI agents
Verify each finding against the current code and only fix it if needed.
Inline comments:
In `@Resources/Locale/en-US/_strings/_sunrise/crafting-menu/makeshift-items.ftl`:
- Around line 1-2: The localization keys crafting-menu-name-FT and
crafting-menu-text-FT use an inconsistent suffix (-FT); rename both keys to use
-IMR (e.g., crafting-menu-name-IMR and crafting-menu-text-IMR) to match
"Improvised Modular Receiver", update any references to these keys in code or
templates, and synchronize the changes with the corresponding ru-RU locale file
and the prototype/recipe entry in
Resources/Prototypes/_Scp/Recipes/Crafting/improvised.yml so all identifiers
remain consistent.
In
`@Resources/Locale/ru-RU/_prototypes/_starlight/entities/objects/misc/improvised_gun_parts.ftl`:
- Around line 15-16: В описании ресурса ent-ImprovisedModularReceiver (.desc)
исправьте опечатку «интерсно» на «интересно» и замените запятую-сплайс между
двумя самостоятельными предложениями на точку, приведя второе предложение к
корректному началу с заглавной буквы (т.е. «Ржавый, обрезанный кусок металла.
Интересно, сработает ли он.»).
In `@Resources/Locale/ru-RU/_strings/_sunrise/crafting-menu/makeshift-items.ftl`:
- Around line 25-26: The keys crafting-menu-name-FT and crafting-menu-text-FT
are mis-suffixed for an "improvised" receiver; rename them to
crafting-menu-name-IT and crafting-menu-text-IT in the RU FTL (replace FT → IT
on those two keys), make the same FT→IT change for the corresponding EN-US
strings (first two keys), and update the prototype recipe references that
currently point to crafting-menu-name-FT and crafting-menu-text-FT to point to
crafting-menu-name-IT and crafting-menu-text-IT; alternatively, if a separate
"forged" receiver is intended, keep the current text but swap keys so the
improvised entries use IT and the forged entry uses FT.
In `@Resources/Prototypes/_Scp/Entities/Objects/Misc/improvised_parts.yml`:
- Around line 1-18: Добавьте в файлы локалей для en-US и ru-RU соответствующие
ent-ключи для прототипа ImprovisedModularReceiver: создайте/отредактируйте FTL
файл (в папке _strings/_sunrise или соседней) и добавьте
ent-ImprovisedModularReceiver и ent-ImprovisedModularReceiver.desc с английским
и русским значениями соответственно; помните, что эти записи должны быть
отдельны от любых crafting-menu-* ключей и точно соответствовать идентификатору
прототипа ImprovisedModularReceiver.
In
`@Resources/Prototypes/_Scp/Recipes/Crafting/Graphs/improvised/improvised_modular_receiver.yml`:
- Around line 7-14: Пересмотрите рецепт improvised_modular_receiver (блок с "to:
receiver" и список steps): либо повысьте стоимость материалов (например
увеличьте Steel до 5–7 и добавьте шаг с Welding/Tool), либо ограничьте
применение ресивера в графах forged_*.yml вместо универсального anyTags;
поправьте соответствующие forged_*.yml, чтобы принимать ресивер только для
pistol/revolver если выбираете ограничение. Также добавьте для шага с Cloth поля
name и/или icon (как в bat.yml/_Starlight графах) чтобы пункт в меню крафта
отображался корректно.
In
`@Resources/Prototypes/_Starlight/Recipes/Crafting/Graphs/improvised/forged_pistol.yml`:
- Around line 14-16: В файлах forged_pistol.yml, forged_revolver.yml,
forged_smg.yml и forged_sniper.yml текущая замена тега ModularReceiver на
anyTags: [ModularReceiver, ImprovisedModularReceiver] даёт
ImprovisedModularReceiver (из графа ImprovisedModularReceiverGraph) доступ ко
всем кованым оружиям; исправьте это, ограничив использование
ImprovisedModularReceiver только в графах пистолета и револьвера (оставить
anyTags с ImprovisedModularReceiver только в forged_pistol.yml и
forged_revolver.yml) ИЛИ измените сам ImprovisedModularReceiverGraph — повысьте
стоимость ресурсов (больше стали/ткани), увеличьте doAfter или добавьте явный
штраф к характеристикам итогового оружия (например, добавочный тег/флаг
ухудшающий статы), чтобы он не был прямой заменой ModularReceiver; согласуйте
выбранный подход с ревьюером/геймдизайном.
- Line 7: В файле с графом ForgedPistolGraph изменённые строки должны иметь
inline-маркер "# Fire edit": замените строку "- to: pistol" на "- to: pistol #
Fire edit" и добавьте " # Fire edit" в конец каждой модифицированной строки на
позициях, указанных рецензентом (включая строки 14–16, 32 и 34–40);
альтернативно, если правок много, создайте дочерний прототип с parent:
ForgedPistolGraph и перенесите изменения туда вместо правки апстрима.
In
`@Resources/Prototypes/_Starlight/Recipes/Crafting/Graphs/improvised/improvised_revolver.yml`:
- Around line 19-21: The change to the upstream YAML fragment (the anyTags list
including ModularReceiver and ImprovisedModularReceiver) needs a Fire fork
marker; wrap this edit with a single-line marker "# Fire edit" or a block "#
Fire edit start" / "# Fire edit end" immediately above/below the modified
section so the repo knows this is a fork change, e.g., add the marker next to
the anyTags list containing ModularReceiver and ImprovisedModularReceiver.
In
`@Resources/Prototypes/_Starlight/Recipes/Crafting/Graphs/improvised/improvised_smg.yml`:
- Around line 14-16: The change adding the anyTags entries (ModularReceiver and
ImprovisedModularReceiver) is missing the required Fire fork edit marker; update
the YAML around the modified block that contains the anyTags sequence to include
either a single-line marker '# Fire edit' or a pair '# Fire edit start' / '#
Fire edit end' enveloping the mult-line change so it complies with the Fire fork
guidelines and clearly marks the edit for upstream merges.
In
`@Resources/Prototypes/_Starlight/Recipes/Crafting/Graphs/improvised/makeshift_pistol_crafted.yml`:
- Around line 14-16: В этом апстримном YAML-файле изменения раздела anyTags
(строки с ключами ModularReceiver и ImprovisedModularReceiver) не помечены
маркером форк-редактирования; добавьте строку-маркер '# Fire edit'
непосредственно перед изменённым блоком или обрамите несколько строк блоком '#
Fire edit start' и '# Fire edit end' чтобы пометить правку форка, сохранив
существующие ключи anyTags, ModularReceiver и ImprovisedModularReceiver без
изменений.
In
`@Resources/Prototypes/_Starlight/Recipes/Crafting/Graphs/improvised/makeshift_revolver.yml`:
- Around line 14-16: The change to the YAML fragment that adds/edits the anyTags
list (the entries "ModularReceiver" and "ImprovisedModularReceiver") is missing
the required Fire fork-edit marker; wrap the edited section with either a
single-line marker "# Fire edit" immediately above the modified block or enclose
the edited lines between "# Fire edit start" and "# Fire edit end" so the block
containing the "- anyTags:" entry is clearly marked as a Fire fork edit.
In
`@Resources/Prototypes/_Starlight/Recipes/Crafting/Graphs/improvised/makeshift_sniper.yml`:
- Around line 14-16: Изменение в блоке anyTags (строки с тегами ModularReceiver
и ImprovisedModularReceiver) должно быть оформлено как форк-редактирование:
оберните внесённую правку маркером '# Fire edit' либо используйте парные '# Fire
edit start' / '# Fire edit end' вокруг изменённого фрагмента в файле
makeshift_sniper.yml, оставив остальную структуру YAML нетронутой; это обеспечит
явную маркировку правки в upstream `_Starlight` файле.
In `@Resources/Prototypes/_Starlight/Recipes/Crafting/improvised.yml`:
- Line 6: Добавьте инлайн-маркер комментария "# Fire edit" к каждой изменённой
строке в файле improvised.yml — в частности на строке с ключом targetNode:
finished и на остальных четырёх модифицированных строках в том же файле;
убедитесь, что маркер стоит в конце каждой изменённой строки в нативном
YAML-формате (однострочный комментарий) так, чтобы каждая модификация ясно
помечалась как форк-правка.
In `@Resources/Prototypes/Entities/Objects/Misc/improvised_gun_parts.yml`:
- Around line 26-29: Remove the duplicate commented line "# size: Normal" in the
RifleStock block, add a "# Fire edit" marker on the modified line(s) (at minimum
the now-uncommented "size: Normal") to indicate the fork change, normalize
indentation in the RifleStock block to match ModularReceiver by using 4-space
indentation for all nested keys, and resolve the top warning comment about
crashing when uncommenting size: either remove the obsolete warning or update it
after verifying the historical issue; target the RifleStock block and the size:
Normal entries when making edits.
In `@Resources/Prototypes/tags.yml`:
- Around line 962-964: The new tag block for id ImprovisedModularReceiver (with
comment "ConstructionGraph: ImprovisedModularReceiverGraph") is missing the
required Fire fork marker; update the added YAML block by appending the
appropriate marker (use "# Fire added" for new blocks, or "# Fire edit" if this
is an edit) to the same line or immediately above the tag so the fork provenance
is recorded alongside the existing ConstructionGraph comment.
- Around line 962-964: Блок тега с id ImprovisedModularReceiver находится в
секции M и нарушает алфавитный порядок; вытащите весь блок, начинающийся с
"type: Tag" и содержащий "id: ImprovisedModularReceiver" из секции M и вставьте
его в секцию I между блоками с id Igniter и Inflatable, чтобы он оказался в
правильном алфавитном порядке (между Igniter и Inflatable).
---
Outside diff comments:
In
`@Resources/Prototypes/_Starlight/Recipes/Crafting/Graphs/improvised/forged_rifle.yml`:
- Around line 14-20: Шаг с anyTags использует старый ключ name:
construction-graph-tag-modular-receiver и из-за этого в UI показывается только
«модульный ресивер», хотя теперь допустим также ImprovisedModularReceiver;
замените или добавьте отдельный нейтральный ключ/текст (например
construction-graph-tag-modular-receiver-any) с описанием типа «модульный ресивер
(или импровизированный)» либо смените name и/или icon на нейтральный вариант, и
повторите то же исправление для аналогичных графов (improvised_pistol,
makeshift_shotgun, makeshift_smg, improvised_sniper, forged_shotgun) чтобы
подсказка соответствовала anyTags.
🪄 Autofix (Beta)
Fix all unresolved CodeRabbit comments on this PR:
- Push a commit to this branch (recommended)
- Create a new PR with the fixes
ℹ️ Review info
⚙️ Run configuration
Configuration used: Path: .coderabbit.yaml
Review profile: ASSERTIVE
Plan: Pro
Run ID: 0072a989-4aa9-4da9-a2ac-24ed609a7d85
⛔ Files ignored due to path filters (3)
Resources/Textures/_Scp/Objects/Misc/improvised_modular_receiver.rsi/icon.pngis excluded by!**/*.pngResources/Textures/_Scp/Objects/Misc/improvised_modular_receiver.rsi/inhand-left.pngis excluded by!**/*.pngResources/Textures/_Scp/Objects/Misc/improvised_modular_receiver.rsi/inhand-right.pngis excluded by!**/*.png
📒 Files selected for processing (26)
Resources/Locale/en-US/_strings/_sunrise/crafting-menu/makeshift-items.ftlResources/Locale/ru-RU/_prototypes/_starlight/entities/objects/misc/improvised_gun_parts.ftlResources/Locale/ru-RU/_strings/_sunrise/crafting-menu/makeshift-items.ftlResources/Locale/ru-RU/recipes/tags.ftlResources/Prototypes/Entities/Objects/Misc/improvised_gun_parts.ymlResources/Prototypes/_Scp/Entities/Objects/Misc/improvised_parts.ymlResources/Prototypes/_Scp/Recipes/Crafting/Graphs/improvised/improvised_modular_receiver.ymlResources/Prototypes/_Scp/Recipes/Crafting/improvised.ymlResources/Prototypes/_Starlight/Recipes/Crafting/Graphs/improvised/forged_pistol.ymlResources/Prototypes/_Starlight/Recipes/Crafting/Graphs/improvised/forged_revolver.ymlResources/Prototypes/_Starlight/Recipes/Crafting/Graphs/improvised/forged_rifle.ymlResources/Prototypes/_Starlight/Recipes/Crafting/Graphs/improvised/forged_shotgun.ymlResources/Prototypes/_Starlight/Recipes/Crafting/Graphs/improvised/forged_smg.ymlResources/Prototypes/_Starlight/Recipes/Crafting/Graphs/improvised/forged_sniper.ymlResources/Prototypes/_Starlight/Recipes/Crafting/Graphs/improvised/improvised_pistol.ymlResources/Prototypes/_Starlight/Recipes/Crafting/Graphs/improvised/improvised_revolver.ymlResources/Prototypes/_Starlight/Recipes/Crafting/Graphs/improvised/improvised_smg.ymlResources/Prototypes/_Starlight/Recipes/Crafting/Graphs/improvised/improvised_sniper.ymlResources/Prototypes/_Starlight/Recipes/Crafting/Graphs/improvised/makeshift_pistol_crafted.ymlResources/Prototypes/_Starlight/Recipes/Crafting/Graphs/improvised/makeshift_revolver.ymlResources/Prototypes/_Starlight/Recipes/Crafting/Graphs/improvised/makeshift_shotgun.ymlResources/Prototypes/_Starlight/Recipes/Crafting/Graphs/improvised/makeshift_smg.ymlResources/Prototypes/_Starlight/Recipes/Crafting/Graphs/improvised/makeshift_sniper.ymlResources/Prototypes/_Starlight/Recipes/Crafting/improvised.ymlResources/Prototypes/tags.ymlResources/Textures/_Scp/Objects/Misc/improvised_modular_receiver.rsi/meta.json
Removed ImprovisedModularReceiver tag and its entry.
|
@ThereDrD0 Помоги, меня заяц сожрёт |
А зачем ты менял крафты и создал новый тег, когда можно было использовать старый? |
Менял, ибо это 2 варианта. Типо можно обычным и импрой. Тег тоже новый |
Что мешает использовать тот же самый тег? |
А смысл от него, если можно создать совершенно другой параметр отбора |
|
Ну, я конечно мог в ту хуйню добавить тег обычного ресивера, но смысл? Лучше создать новый, чем делать улучшенную копию. Да и никак оно не влияет на игру. У игры просто появился новый критерий отбора |
Короче используй текущий и не будет проблем |
|
Уже выкатил ПР |
|
Сейчас коммит сделаю |
|
@ThereDrD0 Ну-с? |
There was a problem hiding this comment.
Actionable comments posted: 1
Caution
Some comments are outside the diff and can’t be posted inline due to platform limitations.
⚠️ Outside diff range comments (1)
Resources/Prototypes/_Starlight/Recipes/Crafting/Graphs/improvised/forged_revolver.yml (1)
7-38: 🛠️ Refactor suggestion | 🟠 MajorОтсутствуют маркеры форка
# Fire edit/# Fire addedдля правок в upstream-файле.Файл расположен в каталоге
_Starlight/(upstream-контент, импортированный из Starlight), а не в fork-only директории, поэтому правки должны быть промаркированы согласно конвенции Fire fork. Сейчас:
- Line 7 — изменена ссылка перехода (
to: revolver), но строка не имеет inline-маркера# Fire edit.- Line 30 — изменено имя узла (
node: revolver), маркер тоже отсутствует.- Lines 32–38 — добавленный блок
edges/finishedбез обрамляющих# Fire added start/# Fire added end.Без маркеров будущая синхронизация с upstream усложняется: мердж-конфликты будет тяжелее распознавать как намеренные правки форка.
♻️ Предлагаемая расстановка маркеров
- node: start edges: - - to: revolver + - to: revolver # Fire edit steps: - tag: ModularBarrel @@ - material: Plasteel amount: 5 doAfter: 15 - - node: revolver + # Fire added start + - node: revolver entity: UnfinishedRevolverForged edges: - to: finished steps: - tool: Welding doAfter: 5 - node: finished entity: WeaponRevolverForged + # Fire added endBased on learnings: «In space-sunrise/project-fire, prototype YAML changes should follow the accepted convention of making direct in-place edits to existing upstream (vanilla or Sunrise) YAML files. For every line you modify, add an inline marker comment
# Fire editon that modified line.» (MIDUZKA, PR#946) и «only require the fork markers ... when you are modifying files that already existed upstream» (DragonDidlo, PR#927).🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed. In `@Resources/Prototypes/_Starlight/Recipes/Crafting/Graphs/improvised/forged_revolver.yml` around lines 7 - 38, This upstream Starlight YAML was modified but missing Fire fork markers: add an inline comment "# Fire edit" to every modified line (e.g., the changed transition line "to: revolver" and the renamed node line "node: revolver"), and wrap the newly inserted edges/finished block with "# Fire added start" before the block and "# Fire added end" after it so the added edges/finished section is clearly marked as fork additions; ensure markers are placed exactly on the modified/added lines surrounding the "edges" / "finished" block and preserve existing indentation and YAML structure.
🤖 Prompt for all review comments with AI agents
Verify each finding against the current code and only fix it if needed.
Inline comments:
In
`@Resources/Prototypes/_Starlight/Recipes/Crafting/Graphs/improvised/forged_smg.yml`:
- Line 7: В файле изменён upstream-узел переименованием "shotgun" → "smg"
(строка с "to: smg") и добавлением нового узла "finished" с этапом сварки;
каждое такое изменённое/добавленное выражение должно получить маркер форка —
добавьте inline-комментарий "# Fire edit" на строке с "to: smg" и на строках,
где внесены остальные одиночные правки (включая строки вокруг "finished"), а для
многострочного блока вставки (блок с этапами сварки, текущие строки 32–38)
оберните вставку маркерами "# Fire added start" и "# Fire added end". Убедитесь,
что маркеры точечно стоят на тех же строках, что и изменение, и что существующий
upstream-контент остаётся помеченным только там, где вы его изменили.
---
Outside diff comments:
In
`@Resources/Prototypes/_Starlight/Recipes/Crafting/Graphs/improvised/forged_revolver.yml`:
- Around line 7-38: This upstream Starlight YAML was modified but missing Fire
fork markers: add an inline comment "# Fire edit" to every modified line (e.g.,
the changed transition line "to: revolver" and the renamed node line "node:
revolver"), and wrap the newly inserted edges/finished block with "# Fire added
start" before the block and "# Fire added end" after it so the added
edges/finished section is clearly marked as fork additions; ensure markers are
placed exactly on the modified/added lines surrounding the "edges" / "finished"
block and preserve existing indentation and YAML structure.
🪄 Autofix (Beta)
Fix all unresolved CodeRabbit comments on this PR:
- Push a commit to this branch (recommended)
- Create a new PR with the fixes
ℹ️ Review info
⚙️ Run configuration
Configuration used: Path: .coderabbit.yaml
Review profile: ASSERTIVE
Plan: Pro
Run ID: bb41a921-789d-40ea-b124-a1647a448522
📒 Files selected for processing (8)
Resources/Locale/ru-RU/_prototypes/_starlight/entities/objects/misc/improvised_gun_parts.ftlResources/Prototypes/_Scp/Entities/Objects/Misc/improvised_parts.ymlResources/Prototypes/_Starlight/Recipes/Crafting/Graphs/improvised/forged_pistol.ymlResources/Prototypes/_Starlight/Recipes/Crafting/Graphs/improvised/forged_revolver.ymlResources/Prototypes/_Starlight/Recipes/Crafting/Graphs/improvised/forged_shotgun.ymlResources/Prototypes/_Starlight/Recipes/Crafting/Graphs/improvised/forged_smg.ymlResources/Prototypes/_Starlight/Recipes/Crafting/Graphs/improvised/forged_sniper.ymlResources/Prototypes/tags.yml
|
@ThereDrD0 Я всё сделал, можно мерджить |
ThereDrD0
left a comment
There was a problem hiding this comment.
Убери изменения крафтов, которые ты сделал. Все эти изменения нужно заливать на репозиторий санрайза, это их крафты
Также объедини чейнжлог в 1 строку и напиши его боле развернуто.
Как объединить, через гитхаб? |
Removed redundant lines and cleaned up formatting.
Co-authored-by: ThereDrD <88589686+ThereDrD0@users.noreply.github.com>
Co-authored-by: ThereDrD <88589686+ThereDrD0@users.noreply.github.com>
Removed duplicate entry for 'ClothingHeadAwareness' and cleaned up the tags.
|
Вот бы ДрД не вернулся |
правильно единственного разработчика не любить |
|
А похуй. Я пошёл играть в реди ор нот |
|
Вот теперь точно, у класса Д наконец-то будет оружие |
|
Ждите, дети, мержа, скоро будете вы бунтовать |
|
Чини ошибку линтера теперь ::error in /Prototypes/_Scp/Recipes/Crafting/Graphs/improvised/improvised_modular_receiver.yml(1,3) Found dupe prototype ID of ImprovisedModularReceiverGraph for Content.Shared.Construction.Prototypes.ConstructionGraphPrototype |
|
Обля |
|
Ну? |
|
@WardexOfficial Давай работай чатжбд родненький |




Краткое описание | Short description
Возможность для класса Д сбежать с помощью улучшенного крафта ружья, который крафтится из 3 ед стали и 2 ткани
Ссылка на багрепорт/Предложение | Related Issue/Bug Report
Медиа (Видео/Скриншоты) | Media (Video/Screenshots)
Changelog
🆑 Fire Helper
который изготавливается из 3 ед. стали и 2 ткани и позволяет классу Д сбежать
с помощью улучшенного крафта ружья
Summary by CodeRabbit
Release Notes
New Features
Bug Fixes
Chores