Skip to content

[ADD] Самодельный хлам.#2436

Open
Armorkillerd wants to merge 45 commits intoAdventureTimeSS14:masterfrom
Armorkillerd:105
Open

[ADD] Самодельный хлам.#2436
Armorkillerd wants to merge 45 commits intoAdventureTimeSS14:masterfrom
Armorkillerd:105

Conversation

@Armorkillerd
Copy link
Contributor

@Armorkillerd Armorkillerd commented Jan 30, 2026

Описание PR

Портировал пр ss14Starlight/space-station-14#939
Самодельные инструменты броню оружие патроны.
Разделяются на три вида от худшего к лучшему. Самодельный, импровизированный, и кованый.
Инструменты все кроме сварочных аппаратах в виде трёх штук . (всего инструментов 15)
Три вида винтовок, пистолетов, пистолетов-пулемётов, револьверов, и два вида дробовиков.
По три вида доспехов (Всего 4) три вида шлемов (всего 4) и три вида щитов (всего 5) и три вида мечей (всего 5).
три калибра импровизированных патрон :
(.Магнум 357); (9х19 мм); (7.62х39 мм)
Система WeaponDismantleOnShoot самоподрыва оружия особо упоминания не стоит.
Взрывает оружие имеет возможность нанести урон по юзеру оружия, выбрать компоненты для выбрасывания из оружия и дальность взрыва оружия с шансом.

Почему / Баланс

Техническая информация

  • Изменения были протестированы на локальном сервере, и всё работает отлично.
  • PR закончен и требует просмотра изменений.

Медиа

Чейнджлог

🆑 Armorkillerd

  • add: Добавлена новая самодельная броня.
  • add: Добавлено самодельное оружие и патроны.
  • add: Добавлены самодельные мечи и щиты
  • add: Добавлены самодельные инструменты благодаря: Tider-Engineering (все кроме сварки и омнитулов.)
  • remove: Удалено рецепт лома из стержей.

@github-actions
Copy link
Contributor

github-actions bot commented Jan 30, 2026

RSI Diff Bot; head commit 491a78e merging into 55e3e56
This PR makes changes to 1 or more RSIs. Here is a summary of all changes:

Resources/Textures/ADT/Clothing/Head/Helmets/forged.rsi

State Old New Status
equipped-HELMET-vox Added
equipped-HELMET Added
icon Added
inhand-left Added
inhand-right Added
unfinished Added

Resources/Textures/ADT/Clothing/Head/Helmets/improvised.rsi

State Old New Status
equipped-HELMET-vox Added
equipped-HELMET Added
icon Added
inhand-left Added
inhand-right Added
unfinished Added

Resources/Textures/ADT/Clothing/Head/Helmets/makeshift.rsi

State Old New Status
equipped-HELMET-vox Added
equipped-HELMET Added
icon Added
inhand-left Added
inhand-right Added

Resources/Textures/ADT/Clothing/Head/Helmets/paladin.rsi

State Old New Status
equipped-HELMET-vox Added
equipped-HELMET Added
icon Added
inhand-left Added
inhand-right Added
unfinished Added

Resources/Textures/ADT/Clothing/OuterClothing/Armor/forged.rsi

State Old New Status
equipped-OUTERCLOTHING-vox Added
equipped-OUTERCLOTHING Added
icon Added
inhand-left Added
inhand-right Added
unfinished Added

Resources/Textures/ADT/Clothing/OuterClothing/Armor/improvised.rsi

State Old New Status
equipped-OUTERCLOTHING-vox Added
equipped-OUTERCLOTHING Added
icon Added
inhand-left Added
inhand-right Added
unfinished Added

Resources/Textures/ADT/Clothing/OuterClothing/Armor/makeshift.rsi

State Old New Status
equipped-OUTERCLOTHING-vox Added
equipped-OUTERCLOTHING Added
icon Added
inhand-left Added
inhand-right Added

Resources/Textures/ADT/Clothing/OuterClothing/Armor/paladin.rsi

State Old New Status
equipped-OUTERCLOTHING-vox Added
equipped-OUTERCLOTHING Added
icon Added
inhand-left Added
inhand-right Added
unfinished Added

Resources/Textures/ADT/Objects/Misc/modular_barrel.rsi

State Old New Status
icon Added
inhand-left Added
inhand-right Added

Resources/Textures/ADT/Objects/Misc/plasteel_blade.rsi

State Old New Status
icon Added
inhand-left Added
inhand-right Added

Resources/Textures/ADT/Objects/Misc/plasteel_hilt.rsi

State Old New Status
icon Added
inhand-left Added
inhand-right Added

Resources/Textures/ADT/Objects/Misc/steel_blade.rsi

State Old New Status
icon Added
inhand-left Added
inhand-right Added

Resources/Textures/ADT/Objects/Misc/wooden_hilt.rsi

State Old New Status
icon Added
inhand-left Added
inhand-right Added

Resources/Textures/ADT/Objects/Tools/forged_omnitool.rsi

State Old New Status
cutters Added
icon Added
prying Added
pulsing Added
screwing Added
unfinished Added
wrenching Added

Resources/Textures/ADT/Objects/Tools/improvised_crowbar.rsi

State Old New Status
equipped-BELT Added
icon Added
inhand-left Added
inhand-right Added
storage Added
unfinished Added

Resources/Textures/ADT/Objects/Tools/improvised_multitool.rsi

State Old New Status
green-unlit Added
icon Added
red-unlit Added
unfinished Added
yellow-unlit Added

Resources/Textures/ADT/Objects/Tools/improvised_omnitool.rsi

State Old New Status
icon Added
pulsing Added
red-unlit Added
unfinished Added
welder_flame Added
yellow-unlit Added

Resources/Textures/ADT/Objects/Tools/improvised_screwdriver.rsi

State Old New Status
equipped-BELT Added
icon Added
inhand-left Added
inhand-right Added
screwdriver Added
unfinished Added

Resources/Textures/ADT/Objects/Tools/improvised_wirecutters.rsi

State Old New Status
cutters Added
equipped-BELT Added
inhand-left Added
inhand-right Added
unfinished Added

Resources/Textures/ADT/Objects/Tools/improvised_wrench.rsi

State Old New Status
equipped-BELT Added
icon Added
inhand-left Added
inhand-right Added
storage Added
unfinished Added

Resources/Textures/ADT/Objects/Tools/makeshift_omnitool.rsi

State Old New Status
base Added
equipped-BELT Added
icon Added
inhand-left Added
inhand-right Added
screwdriver Added
screwdriverflipped Added
wirecutter Added
wirecutterflipped Added
wirecutterside Added
wrench Added
wrenchflipped Added

Resources/Textures/ADT/Objects/Weapons/Guns/Ammunition/Boxes/improvised.rsi

State Old New Status
base Added
mag-1 Added
mag-2 Added
mag-3 Added

Resources/Textures/ADT/Objects/Weapons/Guns/Ammunition/Boxes/pistol.rsi

State Old New Status
ap Added
base Added
fmj Added
incendiary Added
mag-1 Added
mag-2 Added
mag-3 Added
sp Added
uranium Added

Resources/Textures/ADT/Objects/Weapons/Guns/Ammunition/Casings/improvised_casing.rsi

State Old New Status
base-spent Added
base Added
tip Added

Resources/Textures/ADT/Objects/Weapons/Guns/Ammunition/Casings/laser_casing.rsi

State Old New Status
base-spent Added
base Added
tip Added

Resources/Textures/ADT/Objects/Weapons/Guns/Ammunition/Magazine/Pistol/improvised_pistol_magazine.rsi

State Old New Status
base Added
inhand-left-mag Added
inhand-right-mag Added
mag-1 Added
mag-2 Added
mag-3 Added
mag-4 Added
mag-5 Added

Resources/Textures/ADT/Objects/Weapons/Guns/Ammunition/Magazine/SMG/improvised_smg_magazine.rsi

State Old New Status
base Added
inhand-left-mag Added
inhand-right-mag Added
mag-1 Added
mag-2 Added

Resources/Textures/ADT/Objects/Weapons/Guns/Ammunition/Speedloaders/Magnum/improvised_magnum_speed_loader.rsi

State Old New Status
base Added
icon Added

Resources/Textures/ADT/Objects/Weapons/Guns/Ammunition/Speedloaders/Magnum/magnum_rifle_mag.rsi

State Old New Status
base Added
mag-1 Added
red Added

Resources/Textures/ADT/Objects/Weapons/Guns/Pistols/forged_pistol.rsi

State Old New Status
base Added
bolt-open Added
equipped-BELT Added
equipped-SUITSTORAGE Added
icon Added
inhand-left Added
inhand-right Added

Edit: diff updated after 491a78e

@coderabbitai
Copy link
Contributor

coderabbitai bot commented Jan 30, 2026

Note

Reviews paused

It 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 reviews.auto_review.auto_pause_after_reviewed_commits setting.

Use the following commands to manage reviews:

  • @coderabbitai resume to resume automatic reviews.
  • @coderabbitai review to trigger a single review.

Use the checkboxes below for quick actions:

  • ▶️ Resume reviews
  • 🔍 Trigger review

Walkthrough

Добавлен компонент WeaponDismantleOnShootComponent с параметрами шанса, дистанции, звука, самоповреждения и списком возможных выпадающих предметов; объявлен сетевой тип DismantleOnShootItem. В SharedWeaponDismantleOnShootSystem реализована функция проверки DismantleCheck. На сервере добавлен WeaponDismantleOnShootSystem, который подписывается на AmmoShotEvent, выполняет проверку, наносит самоповреждение, проигрывает звук, спавнит/выбрасывает части по вероятностям и удаляет оружие. На клиент добавлен пустой класс WeaponDismantleOnShootSystem. Массово добавлены прототипы, теги, crafting‑графы, локализации и meta.json для спрайтов.

Possibly related PRs

Suggested reviewers

  • Unlumy
  • M1and1B
✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests

Copy link
Contributor

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 16

Note

Due to the large number of review comments, Critical, Major severity comments were prioritized as inline comments.

🤖 Fix all issues with AI agents
In `@Content.Server/ADT/Weapon/WeaponDismantleOnShootSystem.cs`:
- Line 68: The code uses IoCManager.Resolve<IRobustRandom>() inside
WeaponDismantleOnShootSystem; replace this manual resolve with an injected
dependency by adding a [Dependency] private readonly IRobustRandom _random =
default! field on the WeaponDismantleOnShootSystem class and update usages
(currently the local variable "random") to use _random instead, then remove the
IoCManager.Resolve call; this mirrors the shared-system pattern and ensures DI
is used consistently.

In `@Content.Shared/ADT/Weapons/SharedWeaponDismantleOnShootSystem.cs`:
- Around line 17-26: Replace the IoCManager.Resolve call in DismantleCheck with
a class-level injected dependency: add a [Dependency] private IRobustRandom
_robustRandom (or similar) to SharedWeaponDismantleOnShootSystem and use
_robustRandom.Prob(ent.Comp.DismantleChance) instead of resolving inside the
method, and add XML documentation summary/remarks to the public DismantleCheck
method describing its purpose and parameters.

In `@Resources/Locale/en-US/ADT/crafting_menu/makeshift-items.ftl`‎:
- Around line 1-2: The localization key crafting-menu-name-FDB contains stray
GitHub UI text instead of the intended item name; edit the entry for
crafting-menu-name-FDB (and verify crafting-menu-text-FDB) to remove the pasted
interface garbage and replace it with the correct display name string for the
forged double-barrel shotgun, ensuring the value is a clean localized string
without any UI artifacts.

In `@Resources/Prototypes/ADT/Entities/Clothing/OuterClothing/armor.yml`:
- Around line 539-618: Sprite paths for the four armor entities are incorrect
(they use _Starlight) so update the Sprite and Clothing sprite fields for ids
ClothingOuterArmorMakeshift, ClothingOuterArmorImprovised,
ClothingOuterArmorForged, and ClothingOuterArmorPaladin to the correct prefix
Resources/Textures/ADT/Clothing/OuterClothing/Armor/*.rsi (replace occurrences
of _Starlight/Clothing/OuterClothing/Armor/ with
Resources/Textures/ADT/Clothing/OuterClothing/Armor/ in both the Sprite and
Clothing component entries).

In `@Resources/Prototypes/ADT/Entities/Objects/Tools/tools.yml`:
- Around line 425-429: В этих Tool-записях поле Tool.qualities использовано как
скаляр "Welding"; замените его на список в формате qualities: followed by a
hyphenated item (например qualities:\n  - Welding) для всех таких вхождений (в
частности записи с текущим type: Tool и значением Welding на строках, упомянутых
в комментарии); убедитесь, что формат совпадает с другими Tool-компонентами в
файле.

In `@Resources/Prototypes/ADT/Entities/Objects/Weapons/Guns/Pistols/pistols.yml`:
- Around line 105-272: The entity WeaponPistolImprovised incorrectly uses parent
BaseWeaponSniper; change its parent list to use BaseWeaponPistol (matching the
other pistols) so it inherits the correct pistol behavior. Locate the YAML
entity with id WeaponPistolImprovised and replace BaseWeaponSniper in the parent
array with BaseWeaponPistol, leaving other parents (e.g., BaseMinorContraband if
present) and all components (Gun, BallisticAmmoProvider, Construction graph
ImprovisedPistolGraph, WeaponDismantleOnShoot, etc.) unchanged.

In
`@Resources/Prototypes/ADT/Entities/Objects/Weapons/Guns/Projectiles/projectiles.yml`:
- Around line 484-522: For BulletMagnumTraceImprovised,
BulletPistolTraceImprovised and BulletLightRifleTraceImprovised (all parent:
BaseBullet) move the top-level damage, staminaDamage and bullet.sprite entries
into the entity's components array to match BaseBullet and other bullets; create
a components: [...] block for each entity and place the existing damage: {
types: ... }, staminaDamage: X and bullet: { sprite: { sprite: ..., state: ... }
} inside appropriate component objects so these fields are loaded (preserve the
same keys/values and sprite path/state).

In
`@Resources/Prototypes/ADT/Entities/Objects/Weapons/Guns/Shotguns/shotguns.yml`:
- Around line 70-92: The overridden BallisticAmmoProvider in WeaponShotgunForged
drops the inherited whitelist from BaseWeaponShotgun allowing any ammo; restore
the restriction by adding a whitelist entry (e.g., whitelist: [ShellShotgun]) to
the BallisticAmmoProvider component in the WeaponShotgunForged entity so it only
accepts shotgun shells as intended.

In
`@Resources/Prototypes/ADT/Recipes/Crafting/Graphs/Improvised/forged_omnitool.yml`:
- Around line 1-59: The construction graph resource ForgedOmnitoolGraph in
forged_omnitool.yml is fully commented out while other resources reference it
(e.g., the crafting graph id ForgedOmnitoolGraph and the resulting entity
UnfinishedForgedOmnitool), so either restore the graph by uncommenting the
entire block (the top-level type/id/start/graph structure and the nodes "start"
and "tool" with all steps/materials) or remove/update all external references to
ForgedOmnitoolGraph and UnfinishedForgedOmnitool in the other prototypes that
point to it so they no longer rely on this graph.

In
`@Resources/Prototypes/ADT/Recipes/Crafting/Graphs/Improvised/forged_shield_buckler.yml`:
- Around line 4-20: В блоке graph у узла "start" элементы списков выровнены
неправильно: ключи edges и steps пустые, а элементы (материалы) оказались на
уровне узла. Исправьте отступы так, чтобы список после edges содержал объекты с
ключом to и steps вложенным внутрь, а список после steps содержал элементы
материалов (material/amount/doAfter) как вложенные элементы; проверьте узел
"start" и сущность UnfinishedForgedShieldBuckler чтобы убедиться, что edges и
steps находятся под соответствующими ключами.

In
`@Resources/Prototypes/ADT/Recipes/Crafting/Graphs/Improvised/improvised_omnitool.yml`:
- Around line 1-43: Файл содержит полностью закомментированный constructionGraph
(ImprovisedOmnitoolGraph), поэтому ресурс не загрузится; нужно раскомментировать
блок с graph — снять ведущие `#` перед строками, включая определения графа (id:
ImprovisedOmnitoolGraph, start: start), узлы (node: start и node: tool), шаги в
edges (теги: ImprovisedMultitool, ImprovisedWrench, ImprovisedWirecutter,
ImprovisedScrewdriver, ImprovisedCrowbar, EmergencyWelder, а также material:
Steel) и entity: UnfinishedImprovisedOmnitool, чтобы YAML снова стал валидным и
зарегистрировался.

In
`@Resources/Prototypes/ADT/Recipes/Crafting/Graphs/Improvised/improvised_revolver.yml`:
- Around line 4-35: The YAML has incorrect indentation so the "edges" and their
"steps" under node "start" are not nested correctly; fix by indenting "edges:"
one level deeper under "- node: start" and indent the "steps:" block one level
deeper under each edge (so each "- to: shotgun" contains its "steps:" list),
ensuring each step item (tags like ModularBarrel, ModularReceiver, RifleStock
and material blocks for Cloth/Steel) remains as list entries under that "steps"
key; verify the trailing "- node: shotgun" stays at the same top-level graph
list as "- node: start".

In
`@Resources/Prototypes/ADT/Recipes/Crafting/Graphs/Improvised/makeshift_shotgun.yml`:
- Around line 4-27: В текущем YAML списки `edges` и `steps` оказались на том же
уровне, что и `node`, из‑за неверных отступов — переместите ключи `edges` внутрь
соответствующего узла `- node: start` и ключи `steps` внутрь каждого `- to:
shotgun` в `edges`, чтобы элементы с тегами (ModularBarrel, ModularReceiver,
RifleStock) были вложены под `steps`; проверьте, что структура теперь выглядит
как graph -> - node: start -> edges: -> - to: shotgun -> steps: -> - tag:
ModularBarrel / - tag: ModularReceiver / - tag: RifleStock, оставив второй узел
`- node: shotgun` с `entity: WeaponShotgunMakeshift` без изменений.

In
`@Resources/Prototypes/ADT/Recipes/Crafting/Graphs/Improvised/plasteel_hilt.yml`:
- Around line 4-13: The YAML graph has incorrect indentation causing edges and
steps to be parsed as sibling keys instead of nested lists; adjust the
indentation under the "node: start" block so "edges:" is a child of that node
and the "- to: hilt" list item (and its "steps:" block) are nested under
"edges", and likewise ensure the "- material: Plasteel" entry is indented under
"steps" (so "hilt"/"entity: HiltPlasteel" remains a separate node). In short:
nest the edges list under the start node and nest the steps list under each edge
(referencing the graph, node: start, edges, steps, and node: hilt symbols).

In `@Resources/Prototypes/ADT/Recipes/Crafting/Graphs/Improvised/steel_blade.yml`:
- Around line 4-13: The YAML has incorrect indentation causing the lists to
float at the node level; fix the indentation so the edges list is nested under
the start node and the steps list is nested under that edge (i.e., indent the "-
to: blade" item further under "edges" for node "start", and indent the "-
material: Steel" item further under "steps" for that edge), ensuring "edges" and
"steps" contain their list items rather than having those items at the same
level as "node" or "entity" (check the "node: start" / "edges" / "steps" and
"node: blade" / "entity: BladeSteel" blocks to verify nesting).

In `@Resources/Prototypes/ADT/Recipes/Crafting/Graphs/Improvised/wooden_hilt.yml`:
- Around line 4-12: В YAML-файле неправильная вложенность: ключи edges и steps
должны быть вложены в соответствующие блоки node/edge, из‑за текущей отступы
граф не распарсится; откройте блок node: start и сместите список edges внутрь
этого блока, затем внутри каждого edge сместите список steps так, чтобы
material/amount/doAfter были вложены в steps (найдите блоки с "node: start",
"edges", "to: hilt" и "material: WoodPlank" и исправьте отступы соответственно).
🟡 Minor comments (16)
Resources/Textures/ADT/Objects/Weapons/Guns/Ammunition/Magazine/Pistol/improvised_pistol_magazine.rsi/meta.json-25-28 (1)

25-28: ⚠️ Potential issue | 🟡 Minor

Лишняя пустая строка в JSON-объекте.

Строка 27 содержит лишний перенос внутри объекта состояния "mag-5", что нарушает консистентность форматирования.

Предложенное исправление
         {
-            "name": "mag-5"
-
+            "name": "mag-5"
         },
Resources/Prototypes/ADT/Recipes/Crafting/Graphs/Improvised/makeshift_smg.yml-7-7 (1)

7-7: ⚠️ Potential issue | 🟡 Minor

Несоответствие названия ноды и производимой сущности.

Нода названа shotgun, но производит WeaponSubMachineGunMakeshift (пистолет-пулемёт). Вероятно, копипаста из другого графа.

Предложенное исправление
     - to: shotgun
+    - to: smg
       steps:

И на строке 27:

-  - node: shotgun
+  - node: smg
     entity: WeaponSubMachineGunMakeshift
Resources/Locale/ru-RU/ADT/prototypes/Entities/Objects/Weapons/Guns/Ammunition/Cartridges/magnum.ftl-11-12 (1)

11-12: ⚠️ Potential issue | 🟡 Minor

Исправить опечатку в названии патрона.
На Line 11 слово «серебрянный» должно быть «серебряный».

✏️ Предлагаемое исправление
-ent-ADTCartridgeMagnumsilver = патрон (.357 магнум серебрянный)
+ent-ADTCartridgeMagnumsilver = патрон (.357 магнум серебряный)
Resources/Locale/en-US/ADT/crafting_menu/makeshift-items.ftl‎-111-112 (1)

111-112: ⚠️ Potential issue | 🟡 Minor

Орфографическая ошибка: "unholdy" → "unholy".

📝 Предлагаемое исправление
-crafting-menu-text-DSW = Burn away the unholdy heretics with this weapon of justice!
+crafting-menu-text-DSW = Burn away the unholy heretics with this weapon of justice!
Resources/Locale/en-US/ADT/crafting_menu/makeshift-items.ftl‎-129-130 (1)

129-130: ⚠️ Potential issue | 🟡 Minor

Орфографическая ошибка: "Exeedingly" → "Exceedingly".

📝 Предлагаемое исправление
-crafting-menu-text-PSHG = Become the wall you want to be. Exeedingly heavy to the point of needing a makeshift harness to simply hold. Needs welding supplies to finish.
+crafting-menu-text-PSHG = Become the wall you want to be. Exceedingly heavy to the point of needing a makeshift harness to simply hold. Needs welding supplies to finish.
Resources/Textures/ADT/Objects/Tools/improvised_omnitool.rsi/meta.json-31-54 (1)

31-54: ⚠️ Potential issue | 🟡 Minor

Несоответствие отступов: используются табы вместо пробелов.

В строках 31, 39, 47 используется символ табуляции вместо пробелов, в то время как остальная часть файла использует пробелы для отступов.

📝 Предлагаемое исправление
-	  {
+    {
       "name": "green-inhand-left",
       "directions": 4
     },
     {
       "name": "green-inhand-right",
       "directions": 4
     },
-	  {
+    {
       "name": "yellow-inhand-left",
       "directions": 4
     },
     {
       "name": "yellow-inhand-right",
       "directions": 4
     },
-	  {
+    {
       "name": "red-inhand-left",
       "directions": 4
     },
Resources/Prototypes/ADT/Entities/Objects/Weapons/Guns/Snipers/snipers.yml-192-196 (1)

192-196: ⚠️ Potential issue | 🟡 Minor

Опечатка в описании (“achive”).

Исправить на “achieve”.

📝 Предлагаемая правка текста
-  description: The best a tider can achive, reliable fire-rate and accuracy with a satisfying lever-action system. What more can you ask for? Is fitted to be able to chamber both .35 / .45
+  description: The best a tider can achieve, reliable fire-rate and accuracy with a satisfying lever-action system. What more can you ask for? Is fitted to be able to chamber both .35 / .45
Content.Server/Weapons/Ranged/Systems/GunSystem.cs-311-315 (1)

311-315: ⚠️ Potential issue | 🟡 Minor

Приведите пометку ADT‑Tweak к требуемому формату.

Для одиночной строки вне /ADT/ нужен формат // ADT-Tweak: ...; сейчас двоеточия и описания нет.

🐛 Возможный вариант правки
-            Shooter = user, // ADT-Tweak
+            Shooter = user, // ADT-Tweak: добавлен Shooter в AmmoShotEvent
As per coding guidelines: Одиночные строки можно просто помечать как // ADT-Tweak: И тут информация мб краткая по желанию
Resources/Prototypes/ADT/Recipes/Crafting/Graphs/Improvised/improvised.yml-451-480 (1)

451-480: ⚠️ Potential issue | 🟡 Minor

Описание для Screwdriver/Wirecutter/Wrench ссылается на ключи Crowbar.
В результате в меню будет неверный текст. Лучше привязать description к своим ключам.

📝 Возможная правка ключей описания
 - type: construction
   name: crafting-menu-name-ISC
   id: ScrewdriverImprovised
   graph: ImprovisedScrewdriverGraph
   startNode: start
   targetNode: tool
   category: construction-category-tools
   objectType: Item
-  description: crafting-menu-text-IC
+  description: crafting-menu-text-ISC
@@
 - type: construction
   name: crafting-menu-name-IW
   id: WirecutterImprovised
   graph: ImprovisedWirecutterGraph
   startNode: start
   targetNode: tool
   category: construction-category-tools
   objectType: Item
-  description: crafting-menu-text-IC
+  description: crafting-menu-text-IW
@@
 - type: construction
   name: crafting-menu-name-IWR
   id: WrenchImprovised
   graph: ImprovisedWrenchGraph
   startNode: start
   targetNode: tool
   category: construction-category-tools
   objectType: Item
-  description: crafting-menu-text-IC
+  description: crafting-menu-text-IWR
Resources/Prototypes/ADT/Recipes/Crafting/Graphs/Improvised/improvised_sniper.yml-7-7 (1)

7-7: ⚠️ Potential issue | 🟡 Minor

Ошибка копирования: имя узла "shotgun" для снайперской винтовки.

Граф предназначен для WeaponSniperImprovised, но узел назван shotgun. Это явная ошибка копирования из другого графа. Рекомендуется переименовать для согласованности.

🔧 Предлагаемое исправление
     - to: shotgun
+    - to: sniper
       steps:
...
-  - node: shotgun
+  - node: sniper
     entity: WeaponSniperImprovised

Also applies to: 30-31

Resources/Prototypes/ADT/Entities/Objects/Tools/crowbars.yml-1-57 (1)

1-57: ⚠️ Potential issue | 🟡 Minor

Опечатка в описании.
Две точки в конце предложения.

✏️ Возможный фикс
-  description: Barely better than nothing. Could be made into something greater with a welder, though..
+  description: Barely better than nothing. Could be made into something greater with a welder, though.
Resources/Prototypes/ADT/Entities/Objects/Weapons/Guns/Ammunition/Cartridges/pistol.yml-1-23 (1)

1-23: ⚠️ Potential issue | 🟡 Minor

Опечатка в описании боеприпаса.
propellentpropellant.

✏️ Возможный фикс
-  description: A handmade pistol bullet, uses phosphorus as a propellent instead of gunpowder which makes it much less effective.
+  description: A handmade pistol bullet, uses phosphorus as a propellant instead of gunpowder which makes it much less effective.
Resources/Prototypes/ADT/Entities/Clothing/Head/helmets.yml-195-272 (1)

195-272: ⚠️ Potential issue | 🟡 Minor

Исправьте опечатки/грамматику в описаниях.
Тексты можно немного подправить для качества UI.

✏️ Возможный фикс
-  description: Cobbled together steel held together with lv cables in the vauge shape of a helmet. Barely does anything.
+  description: Cobbled together steel held together with LV cables in the vague shape of a helmet. Barely does anything.
@@
-  description: Interlocking steel plates provides some decent protection, but is still barely better than nothing.
+  description: Interlocking steel plates provide some decent protection, but are still barely better than nothing.
Content.Server/ADT/Weapon/WeaponDismantleOnShootSystem.cs-24-34 (1)

24-34: ⚠️ Potential issue | 🟡 Minor

Удалите неиспользуемые зависимости.

Следующие зависимости объявлены, но не используются в коде:

  • _tagSystem
  • _gunSystem
  • _log
  • _physics
  • _popup
  • _inventory

Также _entityManager избыточен, так как EntitySystem уже предоставляет доступ к EntityManager.

🧹 Предлагаемое исправление
 public sealed partial class WeaponDismantleOnShootSystem : SharedWeaponDismantleOnShootSystem
 {
-    [Dependency] private readonly TagSystem _tagSystem = default!;
-    [Dependency] private readonly SharedGunSystem _gunSystem = default!;
-    [Dependency] private readonly ILogManager _log = default!;
     [Dependency] protected readonly SharedTransformSystem _transformSystem = default!;
-    [Dependency] private readonly SharedPhysicsSystem _physics = default!;
-    [Dependency] private readonly SharedPopupSystem _popup = default!;
     [Dependency] private readonly ThrowingSystem _throwing = default!;
-    [Dependency] private readonly InventorySystem _inventory = default!;
     [Dependency] protected readonly DamageableSystem Damageable = default!;
-    [Dependency] private readonly IEntityManager _entityManager = default!;
     [Dependency] private readonly SharedAudioSystem _audio = default!;
+    [Dependency] private readonly IRobustRandom _random = default!;
Resources/Prototypes/ADT/Entities/Objects/Weapons/Guns/SMGs/smgs.yml-168-176 (1)

168-176: ⚠️ Potential issue | 🟡 Minor

Исправьте спрайт одежды у improvised SMG.
Сейчас в Clothing используется _Starlight/.../makeshift_smg.rsi, из‑за чего предмет будет отображаться как makeshift вместо improvised.

🧵 Предложение по исправлению спрайта
-  - type: Clothing
-    sprite: _Starlight/Objects/Weapons/Guns/SMGs/makeshift_smg.rsi
+  - type: Clothing
+    sprite: _Starlight/Objects/Weapons/Guns/SMGs/improvised_smg.rsi
Resources/Prototypes/ADT/Entities/Objects/Misc/improvised_gun_parts.yml-28-29 (1)

28-29: ⚠️ Potential issue | 🟡 Minor

Опечатка в описании: “reqiured”.
Лучше исправить на “required” во всех повторениях.

✍️ Правка орфографии
-  description: Some assembly may be reqiured. Needs welding.
+  description: Some assembly may be required. Needs welding.
...
-  description: Some assembly may be reqiured. Needs welding.
+  description: Some assembly may be required. Needs welding.
...
-  description: Some assembly may be reqiured. Needs welding.
+  description: Some assembly may be required. Needs welding.
...
-  description: Some assembly may be reqiured. Needs welding.
+  description: Some assembly may be required. Needs welding.

Also applies to: 49-50, 70-71, 91-92

🧹 Nitpick comments (18)
Resources/Textures/ADT/Objects/Tools/improvised_multitool.rsi/meta.json (1)

30-53: Несогласованные отступы: табуляция вместо пробелов.

На строках 30, 38 и 46 используется символ табуляции для отступа, тогда как в остальном файле применяются пробелы. Рекомендуется привести к единому стилю.

🔧 Предлагаемое исправление форматирования
     },
-	  {
+    {
       "name": "green-inhand-left",
       "directions": 4
     },
     {
       "name": "green-inhand-right",
       "directions": 4
     },
-	  {
+    {
       "name": "yellow-inhand-left",
       "directions": 4
     },
     {
       "name": "yellow-inhand-right",
       "directions": 4
     },
-	  {
+    {
       "name": "red-inhand-left",
       "directions": 4
     },
Resources/Prototypes/ADT/Entities/Personalization/Objects/personalization_items.yml (1)

2642-2643: Дополнительные пустые строки не обязательны.

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

♻️ Предлагаемое упрощение форматирования
   - type: UserInterface
     interfaces:
       enum.PaperUiKey.Key:
         type: PaperBoundUserInterface
-

 
 - type: entity
Resources/Textures/ADT/Objects/Misc/plasteel_blade.rsi/meta.json (1)

1-22: Непоследовательное форматирование JSON.

В файле присутствуют несоответствия в форматировании:

  • Отсутствие пробелов после двоеточий в некоторых местах ("version":1) при их наличии в других ("name": "inhand-left")
  • Строка 12: лишние пробелы после },
🔧 Предлагаемое исправление форматирования
 {
-   "version":1,
-   "size":{
-      "x":32,
-      "y":32
+   "version": 1,
+   "size": {
+      "x": 32,
+      "y": 32
    },
-   "license":"CC-BY-SA-3.0",
-   "copyright":"Made by Killer Tamashi (Discord)",
-   "states":[
+   "license": "CC-BY-SA-3.0",
+   "copyright": "Made by Killer Tamashi (Discord)",
+   "states": [
       {
-         "name":"icon"
-      },   
+         "name": "icon"
+      },
       {
          "name": "inhand-left",
-         "directions":4
+         "directions": 4
       },
       {
-         "name":"inhand-right",
-         "directions":4
+         "name": "inhand-right",
+         "directions": 4
       }
    ]
 }
Resources/Textures/ADT/Objects/Misc/steel_blade.rsi/meta.json (1)

1-22: Непоследовательное форматирование JSON.

Аналогичные проблемы форматирования как в plasteel_blade.rsi/meta.json:

  • Непоследовательное использование пробелов после двоеточий
  • Строка 12: лишние пробелы после },
🔧 Предлагаемое исправление форматирования
 {
-   "version":1,
-   "size":{
-      "x":32,
-      "y":32
+   "version": 1,
+   "size": {
+      "x": 32,
+      "y": 32
    },
-   "license":"CC-BY-SA-3.0",
-   "copyright":"Made by Killer Tamashi (Discord)",
-   "states":[
+   "license": "CC-BY-SA-3.0",
+   "copyright": "Made by Killer Tamashi (Discord)",
+   "states": [
       {
-         "name":"icon"
-      },   
+         "name": "icon"
+      },
       {
          "name": "inhand-left",
-         "directions":4
+         "directions": 4
       },
       {
-         "name":"inhand-right",
-         "directions":4
+         "name": "inhand-right",
+         "directions": 4
       }
    ]
 }
Resources/Prototypes/Entities/Objects/Shields/shields.yml (1)

206-275: Закомментированный блок требует пояснения или удаления.

Весь entity MakeshiftShield закомментирован без внешнего ADT-Tweak комментария, объясняющего причину. Вложенные ADT-Tweak маркеры внутри закомментированного кода создают путаницу.

Рекомендации:

  1. Если сущность заменена новыми щитами — удалите закомментированный код полностью
  2. Если код временно отключён — добавьте поясняющий комментарий сверху:
# ADT-Tweak-Start: MakeshiftShield отключён, заменён на PaladinShield/ImprovisedShield
# ADT-Tweak-End
Content.Server/Weapons/Ranged/Systems/GunSystem.cs (1)

66-68: Добавьте XML‑summary для публичного метода Shoot.

Метод ключевой для API и сейчас без XML‑документации.

💡 Пример минимальной документации
+    /// <summary>
+    /// Выполняет выстрел из оружия с заданными параметрами.
+    /// </summary>
     public override void Shoot(EntityUid gunUid, GunComponent gun, List<(EntityUid? Entity, IShootable Shootable)> ammo,
As per coding guidelines: и предлагай /// summary документацию к C# коду, к важным функциям или классам
Resources/Prototypes/ADT/Recipes/Crafting/Graphs/Improvised/forged_revolver.yml (1)

7-7: Некорректное имя узла: shotgun для револьвера.

Узел назван shotgun, но финальная сущность — UnfinishedRevolverForged. Это вводит в заблуждение и затрудняет сопровождение кода. Рекомендуется переименовать узел в revolver для согласованности.

♻️ Предлагаемое исправление
     - to: shotgun
+    - to: revolver
       steps:
       ...
-  - node: shotgun
+  - node: revolver
     entity: UnfinishedRevolverForged

Also applies to: 30-31

Resources/Prototypes/ADT/Recipes/Crafting/Graphs/Improvised/improvised_smg.yml (1)

7-7: Некорректное имя узла: shotgun для пистолета-пулемёта.

Узел назван shotgun, но финальная сущность — WeaponSubMachineGunImprovised. Для улучшения читаемости и сопровождения переименуйте узел в smg или weapon.

♻️ Предлагаемое исправление
     - to: shotgun
+    - to: smg
       steps:
       ...
-  - node: shotgun
+  - node: smg
     entity: WeaponSubMachineGunImprovised

Also applies to: 30-31

Resources/Prototypes/ADT/Recipes/Crafting/Graphs/Improvised/makeshift_revolver.yml (1)

7-7: Некорректное имя узла: shotgun для револьвера.

Аналогично другим файлам — узел назван shotgun, но финальная сущность — WeaponRevolverMakeshift. Для консистентности переименуйте в revolver.

♻️ Предлагаемое исправление
     - to: shotgun
+    - to: revolver
       steps:
       ...
-  - node: shotgun
+  - node: revolver
     entity: WeaponRevolverMakeshift

Also applies to: 27-28

Content.Client/ADT/Weapon/WeaponDismantleOnShootSystem.cs (1)

21-23: Добавьте XML-summary для системы.
Публичный системный класс без описания сложнее поддерживать и искать в IDE.

✍️ Предлагаемое дополнение
 namespace Content.Client.ADT.Weapon.Systems;
+/// <summary>
+/// Клиентская часть логики dismantle-on-shoot для оружия.
+/// </summary>
 public sealed partial class WeaponDismantleOnShootSystem : SharedWeaponDismantleOnShootSystem
 {
 }

As per coding guidelines: «и предлагай /// summary документацию к C# коду, к важным функциям или классам».

Content.Shared/ADT/Weapons/SharedWeaponDismantleOnShootSystem.cs (1)

1-5: Порядок using должен быть алфавитным.

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

♻️ Предлагаемое исправление
-using Content.Shared.ADT.Weapon.Components;
-using Content.Shared.Examine;
-using Content.Shared.Weapons.Ranged.Events;
-using Content.Shared.Weapons.Ranged.Systems;
-using Robust.Shared.Random;
+using Content.Shared.ADT.Weapon.Components;
+using Content.Shared.Examine;
+using Content.Shared.Weapons.Ranged.Events;
+using Robust.Shared.Random;

Примечание: Content.Shared.Weapons.Ranged.Systems не используется в этом файле и может быть удалён.

Content.Server/ADT/Weapon/WeaponDismantleOnShootSystem.cs (3)

1-19: Порядок using нарушен и есть избыточный комментарий.

Using-директивы должны быть в алфавитном порядке. Комментарий //linq избыточен.

♻️ Предлагаемое исправление порядка using
-using Content.Shared.ADT.Weapon.Systems;
-using System.Numerics;
-using Content.Shared.ADT.Weapon.Components;
-using Content.Shared.Inventory;
-using Content.Shared.Popups;
-using Content.Shared.Tag;
-using Content.Shared.Throwing;
-using Content.Shared.Weapons.Ranged.Systems;
-using Robust.Shared.Physics.Systems;
-
-//linq
-using System.Linq;
-using Content.Shared.Weapons.Ranged.Events;
-using Robust.Shared.Random;
-using Content.Shared.Damage;
-using Content.Shared.Wieldable;
-using Content.Shared.Weapons.Ranged.Components;
-using Robust.Shared.Audio.Systems;
-using Robust.Shared.Map;
+using System.Numerics;
+using Content.Shared.ADT.Weapon.Components;
+using Content.Shared.ADT.Weapon.Systems;
+using Content.Shared.Damage;
+using Content.Shared.Throwing;
+using Content.Shared.Weapons.Ranged.Components;
+using Content.Shared.Weapons.Ranged.Events;
+using Robust.Shared.Audio.Systems;
+using Robust.Shared.Map;
+using Robust.Shared.Random;

41-44: Используйте идиоматичное сравнение и добавьте XML-документацию.

Сравнение == false неидиоматично. Используйте оператор !.

♻️ Предлагаемое исправление
+    /// <summary>
+    /// Обрабатывает событие выстрела и разрушение оружия при необходимости.
+    /// </summary>
     private void OnGunShot(Entity<WeaponDismantleOnShootComponent> ent, ref AmmoShotEvent args)
     {
-        if (DismantleCheck(ent, ref args) == false)
+        if (!DismantleCheck(ent, ref args))
             return;

99-101: Упростите удаление сущности.

Вместо _entityManager.QueueDeleteEntity можно использовать унаследованный QueueDel.

♻️ Предлагаемое исправление
-        //now we need to destroy the gun
-        //get the gun entity
-        _entityManager.QueueDeleteEntity(ent.Owner);
+        // Удаляем оружие
+        QueueDel(ent.Owner);
Resources/Prototypes/Recipes/Crafting/Graphs/improvised/improvised_shotgun.yml (1)

30-39: Приведите формат ADT-Tweak маркеров к единообразию.

Формат маркеров на строках 30 и 39 отличается от формата на строках 9 и 15. Для консистентности используйте единый формат с дефисами: # ADT-Tweak-Start / # ADT-Tweak-End.

♻️ Предлагаемое исправление
   - node: shotgun
-#ADT-Tweak Start Добавлена возможость обрезать самодельный дробовик до самодельного обреза
+# ADT-Tweak-Start: Добавлена возможность обрезать самодельный дробовик до самодельного обреза
     edges:
       - to: improvisedshotgunsawn
         steps:
           - tool: Sawing
             doAfter: 2
     entity: WeaponShotgunImprovised
   - node: improvisedshotgunsawn
     entity: ADTWeaponShotgunImprovisedSawn
-#ADT-Tweak End Добавлена возможость обрезать самодельный дробовик до самодельного обреза
+# ADT-Tweak-End

Также исправлена опечатка: "возможость" → "возможность".

Content.Shared/ADT/Weapons/Components/WeaponDismantleOnShootComponent.cs (3)

1-7: Удалите неиспользуемые using и упорядочьте по алфавиту.

Content.Shared.Storage и Content.Shared.Tag не используются в этом файле.

♻️ Предлагаемое исправление
 using Content.Shared.Damage;
-using Content.Shared.Storage;
-using Content.Shared.Tag;
 using Robust.Shared.Audio;
 using Robust.Shared.GameStates;
 using Robust.Shared.Prototypes;
 using Robust.Shared.Serialization;

10-11: Добавьте XML-документацию к классу.

Рекомендуется добавить /// <summary> для описания назначения компонента.

📝 Предлагаемое дополнение
 namespace Content.Shared.ADT.Weapon.Components;
+
+/// <summary>
+/// Компонент для оружия, которое может разрушиться при выстреле с заданной вероятностью.
+/// </summary>
 [RegisterComponent, NetworkedComponent, AutoGenerateComponentState]
 public sealed partial class WeaponDismantleOnShootComponent : Component

29-30: Используйте PascalCase для публичных полей.

Поле items должно называться Items согласно конвенциям именования C#.

♻️ Предлагаемое исправление
     [DataField, AutoNetworkedField]
-    public List<DismantleOnShootItem> items = [];
+    public List<DismantleOnShootItem> Items = [];

Не забудьте обновить все ссылки на это поле в WeaponDismantleOnShootSystem.cs (строка 69: ent.Comp.itemsent.Comp.Items).

Copy link
Contributor

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 8

🤖 Fix all issues with AI agents
In `@Resources/Locale/en-US/ADT/crafting_menu/makeshift-items.ftl`‎:
- Around line 111-113: Fix the two typos in the FTL entries: change "unholdy" to
"unholy" in the crafting-menu-text-DSW value (the line paired with
crafting-menu-name-DSW) and change "Exeedingly" to "Exceedingly" in the other
FTL entry that currently contains "Exeedingly" (the entry around lines 129-131).
Update the text values only, preserving keys and formatting.

In `@Resources/Prototypes/ADT/Entities/Objects/Misc/improviesd_parts.yml`:
- Around line 1-491: The file name contains a typo ("improviesd_parts.yml") and
should be renamed to "improvised_parts.yml"; rename the file and update all
references to it across the repo (any import/load/config/manifest entries that
reference improviesd_parts.yml), ensuring CI/build scripts and any resource
lists that load entities like UnfinishedImprovisedCrowbar,
UnfinishedForgedOmnitool, HiltWood, BladeSteel, etc. are updated to the new name
so nothing breaks.

In `@Resources/Prototypes/ADT/Entities/Objects/Misc/improvised_gun_parts.yml`:
- Line 28: Fix the repeated typo "reqiured" to "required" in the description
fields of improvised_gun_parts.yml; search the file for any description entries
containing "reqiured" (currently at several positions) and replace each
occurrence with "required" so all assembly description strings read "Some
assembly may be required. Needs welding."

In
`@Resources/Prototypes/ADT/Entities/Objects/Weapons/Guns/Ammunition/Speedloader/magnum.yml`:
- Around line 149-150: The sprite path in the YAML uses the wrong case — update
the sprite value for the 'sprite' key in magnum.yml from
ADT/Objects/Weapons/Guns/Ammunition/SpeedLoaders/Magnum/improvised_magnum_speed_loader.rsi
to use 'Speedloaders' (ADT/Objects/Weapons/Guns/Ammunition/Speedloaders/...) so
it matches the other entries (lines referencing Speedloaders) and avoids
case-sensitive filesystem load failures.

In
`@Resources/Prototypes/ADT/Entities/Objects/Weapons/Guns/Revolvers/revolvers.yml`:
- Around line 166-181: Добавьте компонент Construction к сущности
WeaponRevolverForged, потому что сейчас она наследует Construction с графом
ImprovisedRevolverGraph от WeaponRevolverImprovised, а для кованого револьвера
нужен отдельный граф; вставьте в секцию components для WeaponRevolverForged
компонент типа Construction с graph: ForgedRevolverGraph и node: shotgun, чтобы
явно привязать её к правильному графу крафта (ищите сущность
WeaponRevolverForged в файле и добавьте компонент Construction в список
components).

In `@Resources/Prototypes/ADT/Entities/Objects/Weapons/Guns/SMGs/smgs.yml`:
- Around line 175-176: В компоненте WeaponSubMachineGunImprovised поля Sprite и
Clothing используют разные файлы спрайтов (Sprite -> improvised_smg.rsi,
Clothing -> makeshift_smg.rsi); замените значение Clothing с "makeshift_smg.rsi"
на "improvised_smg.rsi" чтобы привести их в соответствие (проверьте строки, где
объявлены Clothing и Sprite для WeaponSubMachineGunImprovised и обновите имя
файла спрайта).

In `@Resources/Prototypes/ADT/Entities/Objects/Weapons/Guns/Snipers/snipers.yml`:
- Around line 191-196: В описании сущности с name "Forged Repeater Rifle" (id
"WeaponSniperForged", parent "WeaponSniperMakeshift") исправь опечатку: замени
слово "achive" на "achieve" в поле description, оставив остальной текст без
изменений.

In `@Resources/Prototypes/Entities/Objects/Shields/shields.yml`:
- Around line 218-220: В прототипе MakeshiftShield найден дублирующий компонент
Clothing; удалите один из них (удалить блок с type: Clothing и sprite:
ADT/Objects/Weapons/Melee/makeshift_shield.rsi) и перенесите/обновите свойство
sprite в оставшийся компонент Clothing, чтобы остался только один
Clothing-компонент с корректным sprite
(ADT/Objects/Weapons/Melee/makeshift_shield.rsi).
🧹 Nitpick comments (3)
Resources/Prototypes/ADT/Entities/Clothing/OuterClothing/armor.yml (1)

537-538: Мелочь: асимметричные комментарии-маркеры.

Начальный комментарий # Перенос самоделок Start, а конечный просто # End. Для лучшей читаемости рекомендуется использовать симметричную пару:

- # End
+ # Перенос самоделок End

Also applies to: 631-631

Resources/Prototypes/ADT/Entities/Objects/Tools/tools.yml (2)

446-652: Большой блок закомментированного кода.

Закомментированный код ItemSwitch занимает более 200 строк. Если это WIP-функционал, рассмотрите возможность вынести его в отдельную ветку или удалить до момента готовности к использованию.


701-894: Ещё один большой блок закомментированного кода.

Аналогичный закомментированный ItemSwitch блок для OmnitoolForged. Такое количество закомментированного кода затрудняет поддержку файла.

Copy link
Contributor

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 3

🤖 Fix all issues with AI agents
In `@Resources/Prototypes/ADT/Recipes/Crafting/Graphs/Improvised/improvised.yml`:
- Around line 451-479: The three construction entries (ScrewdriverImprovised,
WirecutterImprovised, WrenchImprovised) currently reuse the crowbar description
key `crafting-menu-text-IC`; change each entry's description to its own unique
localization key (e.g. `crafting-menu-text-ISC` for ScrewdriverImprovised,
`crafting-menu-text-IW` for WirecutterImprovised, and `crafting-menu-text-IWR`
for WrenchImprovised) and ensure corresponding localization strings are
added/updated so the graphs (ImprovisedScrewdriverGraph,
ImprovisedWirecutterGraph, ImprovisedWrenchGraph) display correct text.
- Around line 651-730: The listed construction entries use the wrong category:
change category: construction-category-weapons to category:
construction-category-clothing for each armor/helmet recipe entry (e.g., entries
with id ClothingOuterArmorMakeshift, ClothingOuterArmorImprovised,
ClothingOuterArmorForged, ClothingOuterArmorPaladin and the helmet entries
ClothingHeadHelmetMakeshift, ClothingHeadHelmetImprovised,
ClothingHeadHelmetForged, ClothingHeadHelmetPaladin) so their category matches
clothing recipes and the corresponding graph targets (ClothingOuterArmor*Graph
and ClothingHeadHelmet*Graph).
- Around line 171-740: Missing localization and misused description/category
keys: add the ten missing FTL keys for names and texts for
MagazineBoxImprovisedMagnum, MagazineBoxImprovisedPistol,
MagazineBoxImprovisedRifle, MagazineBoxImprovisedShotgun and
SpeedLoaderMagnumLeverImprovised (crafting-menu-name-IMGM/IMGP/IMGR/IMGS/IRS and
crafting-menu-text-IMGM/IMGP/IMGR/IMGS/IRS) into the locale files with proper
translations; give each tool entry a unique description key instead of reusing
crafting-menu-text-IC (update CrowbarImprovised, ScrewdriverImprovised,
WirecutterImprovised, WrenchImprovised to use distinct description keys and add
those texts to FTL); and fix categories for armor/helmet recipes (update
ClothingOuterArmorMakeshift, ClothingOuterArmorImprovised,
ClothingOuterArmorForged, ClothingOuterArmorPaladin and
ClothingHeadHelmetMakeshift, ClothingHeadHelmetImprovised,
ClothingHeadHelmetForged, ClothingHeadHelmetPaladin to use the correct equipment
category rather than construction-category-weapons).

Copy link
Contributor

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 1

🤖 Fix all issues with AI agents
In `@Resources/Prototypes/Entities/Objects/Shields/shields.yml`:
- Line 210: Replace the misspelled entity id "MakeshitShield" with the correct
"MakeshiftShield" in the prototype definition (id field) and then update every
reference to that id across craft-graphs, spawners, mappings, and any other
lookup tables so they point to "MakeshiftShield" instead of "MakeshitShield" to
restore all links.

Copy link
Contributor

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 3

🤖 Fix all issues with AI agents
In `@Resources/Locale/en-US/ADT/crafting_menu/makeshift-items.ftl`‎:
- Around line 73-82: В файле локалей отсутствуют строки с описаниями для ключей
crafting-menu-name-ISC, crafting-menu-name-IW, crafting-menu-name-IWR и
crafting-menu-name-EW; добавьте соответствующие записи crafting-menu-text-ISC,
crafting-menu-text-IW, crafting-menu-text-IWR и crafting-menu-text-EW с краткими
описаниями (например, назначение, требуемые ресурсы или особенности) чтобы меню
крафта не отображало пустые или отсутствующие описания; убедитесь, что ключи
точно совпадают с именами сущностей (ISC, IW, IWR, EW) и формат строк
соответствует остальным записям в том же файле.
- Around line 158-174: Several crafting-menu-name keys (ETX, MUL, WRE, WIR, SCR,
CRO, EXOXY, CGREN, CYELO) are missing corresponding description entries; add
matching crafting-menu-text-ETX, crafting-menu-text-MUL, crafting-menu-text-WRE,
crafting-menu-text-WIR, crafting-menu-text-SCR, crafting-menu-text-CRO,
crafting-menu-text-EXOXY, crafting-menu-text-CGREN, and crafting-menu-text-CYELO
FTL entries with concise localized descriptions that match the tone and style
used by other items in the file (brief one-line descriptions), ensure keys
follow the existing naming pattern and punctuation/escaping rules in the file,
and place them near the existing crafting-menu-name-* block for consistency.

In `@Resources/Prototypes/ADT/Recipes/Crafting/Graphs/Improvised/dawnbreaker.yml`:
- Around line 9-13: В файле dawnbreaker.yml используется локализационный ключ
crafting-menu-name-FSW, которого нет в FTL; исправьте это, добавив запись с этим
ключом в соответствующие FTL-файлы (например en-US.ftl и другие языковые файлы)
в формате FTL: crafting-menu-name-FSW = <перевод>, убедившись в корректном
синтаксисе (экранирование кавычек/спецсимволов при необходимости) и затем
пересоберите/проверьте локализационный пакет, чтобы убедиться что ключ
разрешается в интерфейсе.
🧹 Nitpick comments (1)
Resources/Locale/en-US/ADT/crafting_menu/makeshift-items.ftl‎ (1)

111-111: Ключ не соответствует паттерну файла.

Ключ construction-graph-tag-welder не следует паттерну crafting-menu-*, используемому в этом файле. Рекомендуется переместить его в отдельный FTL файл для construction graph тегов или переименовать для соответствия структуре.

Copy link
Contributor

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 2

🤖 Fix all issues with AI agents
In `@Resources/Prototypes/ADT/Entities/Objects/Tools/tools.yml`:
- Around line 895-902: В файле есть осиротевший блок "- type: Tag" состоящий из
тегов Multitool, DoorElectronicsConfigurator, Wrench, PlantSampleTaker,
Wirecutter, Screwdriver, который идёт сразу после закомментированной сущности
OmnitoolForged и не привязан ни к какой entity; устраните проблему либо
перенесите этот Tag-блок внутрь соответствующей сущности, либо
закомментируйте/удалите его, чтобы он не оставался отдельной, невалидной записью
(ищите метрку "- type: Tag" и контент тегов рядом с OmnitoolForged).
- Around line 653-661: The YAML contains an orphaned "- type: Tag" block that is
not attached to any entity (it appears after the commented-out
OmnitoolImprovised) and may be parsed into the wrong entity (e.g.,
MultitoolImprovised); fix it by either removing this orphan Tag block entirely
or commenting it out along with the OmnitoolImprovised entity so tags stay
grouped correctly; locate the orphan by searching for the "type: Tag" block
following "OmnitoolImprovised" and adjust so every "- type: Tag" is nested under
the intended entity.
🧹 Nitpick comments (1)
Resources/Prototypes/ADT/Recipes/Crafting/Graphs/Improvised/improvised.yml (1)

441-469: Закомментированный код для Omnitool.

Записи для OmnitoolImprovised и OmnitoolForged закомментированы. Если эти рецепты не планируются к релизу, лучше удалить их полностью или добавить TODO-комментарий с пояснением.

Copy link
Contributor

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 1

🤖 Fix all issues with AI agents
In `@Resources/Prototypes/ADT/Entities/Objects/Tools/tools.yml`:
- Around line 140-143: The Tool entry for the entity "makeshift crowbar-wrench"
incorrectly lists Tool.qualities: "Screwing" while the MultipleTool behaviors
are "Prying" and "Anchoring"; update the Tool.qualities value to match the
tool's behaviors (e.g., replace "Screwing" with "Prying" or add both "Prying"
and "Anchoring") so Tool.qualities aligns with the MultipleTool behavior
definitions for "makeshift crowbar-wrench".
🧹 Nitpick comments (1)
Resources/Prototypes/ADT/Recipes/Crafting/Graphs/Improvised/improvised.yml (1)

81-87: Закомментированный код HandmadeCrowbar 😎

Закомментированная запись оставлена как мёртвый код. Если рецепт больше не нужен — лучше удалить полностью. Если планируется вернуть — добавьте TODO с объяснением.

Copy link
Contributor

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 2

🤖 Fix all issues with AI agents
In
`@Resources/Locale/ru-RU/ADT/prototypes/Entities/Objects/Tools/makeshift-item.ftl`:
- Line 43: The .desc entry for the makeshift-item is missing a terminal period;
update the string in the makeshift-item.ftl by appending a period so it reads
".desc = Требуется сварка, чтобы скрепить его воедино." ensuring consistency
with other `.desc` entries (locate the `.desc = Требуется сварка, чтобы скрепить
его воедино` line and add the final dot).
- Line 10: In the .desc entry for the makeshift-item localization, correct the
gendered pronoun to match the feminine noun "броня" by replacing "скрепить его
воедино." with "скрепить её воедино."; update the .desc string accordingly so
the pronoun agrees with "броня бригантина".

Copy link
Contributor

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 1

🤖 Fix all issues with AI agents
In `@Resources/Prototypes/ADT/Entities/Objects/Tools/tools.yml`:
- Around line 493-552: Сущности OmnitoolImprovised удалены/отсутствуют
компоненты, необходимые для качества Pulsing и тегов
Multitool/DoorElectronicsConfigurator; добавьте в её YAML те же компоненты, что
и у MultitoolImprovised — NetworkConfigurator, ActivatableUI и UserInterface —
чтобы включить функциональность пульсинга и конфигурации сети (сохраните
конфигурации и параметры как в MultitoolImprovised для корректной работы этих
тэгов и поведения Pulsing).
🧹 Nitpick comments (1)
Resources/Prototypes/ADT/Entities/Objects/Tools/tools.yml (1)

197-202: Несогласованный формат useSound в Tool-компоненте.

На строке 201 useSound задан как скалярная строка (useSound: /Audio/Items/crowbar.ogg), тогда как везде в файле используется вложенный формат с path: или collection: (например, строки 362-363, 434-435). Хотя движок может десериализовать оба варианта, для единообразия лучше привести к общему формату.

♻️ Исправление
   - type: Tool
     qualities:
     - Prying
     - Anchoring
-    useSound: /Audio/Items/crowbar.ogg
+    useSound:
+      path: /Audio/Items/crowbar.ogg
     speedModifier: 0.7

@github-actions
Copy link
Contributor

This pull request has conflicts, please resolve those before we can evaluate the pull request.

@Schrodinger71 Schrodinger71 marked this pull request as draft February 20, 2026 13:31
@Schrodinger71 Schrodinger71 marked this pull request as draft February 20, 2026 13:31
@github-actions github-actions bot added size/M and removed size/L labels Feb 23, 2026
@Armorkillerd Armorkillerd marked this pull request as ready for review February 23, 2026 16:48
@Armorkillerd
Copy link
Contributor Author

вобщем привёл эту какофонию к призентабельному виду. пришлось избавится от омнитулов ибо они конфликтовали с убунтой

@Armorkillerd Armorkillerd changed the title [ADD] "!НЕ МЁРДЖИТЬ!" Самодельный хлам. [ADD] Самодельный хлам. Feb 24, 2026
@Armorkillerd
Copy link
Contributor Author

вроде бы цикл говна и мочи закончен.

@github-actions
Copy link
Contributor

This pull request has conflicts, please resolve those before we can evaluate the pull request.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Changes: Localization Изменение локализации Changes: Sprites Изменение спрайтов size/M

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant