-
Notifications
You must be signed in to change notification settings - Fork 151
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
[Feature] Syringe gun! #1018
[Feature] Syringe gun! #1018
Conversation
syringe ops real (Rxup#967) * ebin syringeops * its fucking real * 1984 * Update BaseSolutionInjectOnEventComponent.cs minor spelling mistake webeditops
Caution Review failedThe pull request is closed. """ WalkthroughЭтот набор изменений добавляет новую функциональность, связанную с системой шприц-пистолетов. Основные нововведения включают создание новых компонентов, систем и сущностей для оружия, использующего шприцы в качестве боеприпасов. Изменения затрагивают механику инъекций, возможность прокалывания брони и добавляют новые типы оружия, такие как обычный шприц-пистолет, быстрый шприц-пистолет и дротиковый шприц-пистолет. Changes
Poem
📜 Recent review detailsConfiguration used: CodeRabbit UI 📒 Files selected for processing (1)
Thank you for using CodeRabbit. We offer it for free to the OSS community and would appreciate your support in helping us grow. If you find it useful, would you consider giving us a shout-out on your favorite social media? 🪧 TipsChatThere are 3 ways to chat with CodeRabbit:
Note: Be mindful of the bot's finite context window. It's strongly recommended to break down tasks such as reading entire modules into smaller chunks. For a focused discussion, use review comments to chat about specific files and their changes, instead of using the PR comments. CodeRabbit Commands (Invoked using PR comments)
Other keywords and placeholders
CodeRabbit Configuration File (
|
RSI Diff Bot; head commit e60aec8 merging into d366ab5 Resources/Textures/_Goobstation/Clothing/Belt/cmowebbing.rsi
Resources/Textures/_Goobstation/Objects/Weapons/Guns/Cannons/syringe_gun.rsi
|
There was a problem hiding this 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
🧹 Nitpick comments (2)
Resources/Prototypes/Entities/Objects/Specific/chemistry.yml (1)
372-389
: Оптимизируйте физические фикстурыИспользование двух разных фикстур (круг и AABB) может быть избыточным. Достаточно использовать одну фикстуру типа AABB для оптимизации производительности.
- type: Fixtures fixtures: - fix1: - shape: !type:PhysShapeCircle - radius: 0.2 - density: 5 - mask: - - ItemMask - restitution: 0.3 - friction: 0.2 projectile: shape: !type:PhysShapeAabb bounds: "-0.1,-0.3,0.1,0.3" hard: false mask: - Impassable - BulletImpassable + density: 5 + restitution: 0.3 + friction: 0.2Resources/Prototypes/_Backmen/Recipes/Lathes/medical.yml (1)
4-4
: Время создания требует корректировкиОба рецепта имеют одинаковое время создания (5 единиц), несмотря на то, что RapidSyringeGun требует вдвое больше материалов. Рекомендуется увеличить время создания для RapidSyringeGun.
Also applies to: 15-15
📜 Review details
Configuration used: CodeRabbit UI
Review profile: CHILL
Plan: Pro
⛔ Files ignored due to path filters (9)
Resources/Textures/_Goobstation/Clothing/Belt/cmowebbing.rsi/equipped-BELT.png
is excluded by!**/*.png
Resources/Textures/_Goobstation/Clothing/Belt/cmowebbing.rsi/icon.png
is excluded by!**/*.png
Resources/Textures/_Goobstation/Clothing/Belt/cmowebbing.rsi/inhand-left.png
is excluded by!**/*.png
Resources/Textures/_Goobstation/Clothing/Belt/cmowebbing.rsi/inhand-right.png
is excluded by!**/*.png
Resources/Textures/_Goobstation/Objects/Weapons/Guns/Cannons/syringe_gun.rsi/dart-syringe-gun.png
is excluded by!**/*.png
Resources/Textures/_Goobstation/Objects/Weapons/Guns/Cannons/syringe_gun.rsi/inhand-left.png
is excluded by!**/*.png
Resources/Textures/_Goobstation/Objects/Weapons/Guns/Cannons/syringe_gun.rsi/inhand-right.png
is excluded by!**/*.png
Resources/Textures/_Goobstation/Objects/Weapons/Guns/Cannons/syringe_gun.rsi/rapid-syringe-gun.png
is excluded by!**/*.png
Resources/Textures/_Goobstation/Objects/Weapons/Guns/Cannons/syringe_gun.rsi/syringe-gun.png
is excluded by!**/*.png
📒 Files selected for processing (25)
Content.Server/Chemistry/Components/BaseSolutionInjectOnEventComponent.cs
(1 hunks)Content.Server/Chemistry/EntitySystems/SolutionInjectOnEventSystem.cs
(4 hunks)Content.Server/Chemistry/EntitySystems/SolutionInjectWhileEmbeddedSystem.cs
(0 hunks)Content.Server/Weapons/Ranged/Systems/GunSystem.cs
(1 hunks)Content.Server/_Goobstation/Weapons/Ranged/SyringeGunSystem.cs
(1 hunks)Content.Shared/_Goobstation/Weapons/Ranged/SyringeGunComponent.cs
(1 hunks)Resources/Locale/en-US/store/uplink-catalog.ftl
(1 hunks)Resources/Locale/ru-RU/backmen/entities/syringe_gun.ftl
(1 hunks)Resources/Locale/ru-RU/backmen/research/technologies.ftl
(1 hunks)Resources/Locale/ru-RU/ss14-ru/prototypes/entities/objects/specific/medical/healing.ftl
(1 hunks)Resources/Prototypes/Catalog/Fills/Lockers/heads.yml
(1 hunks)Resources/Prototypes/Entities/Objects/Specific/chemistry.yml
(5 hunks)Resources/Prototypes/Entities/Objects/Weapons/Guns/pneumatic_cannon.yml
(1 hunks)Resources/Prototypes/Entities/Structures/Machines/lathe.yml
(3 hunks)Resources/Prototypes/Research/civilianservices.yml
(1 hunks)Resources/Prototypes/Roles/Jobs/Medical/chief_medical_officer.yml
(1 hunks)Resources/Prototypes/_Backmen/Catalog/uplink_catalog.yml
(1 hunks)Resources/Prototypes/_Backmen/Entities/Objects/Weapons/Guns/pneumatic_cannon.yml
(1 hunks)Resources/Prototypes/_Backmen/Recipes/Lathes/medical.yml
(1 hunks)Resources/Prototypes/_Goobstation/Catalog/Fills/Belt/belts.yml
(1 hunks)Resources/Prototypes/_Goobstation/Catalog/Fills/Boxes/medical.yml
(1 hunks)Resources/Prototypes/_Goobstation/Entities/Clothing/Belt/belts.yml
(1 hunks)Resources/Prototypes/_Goobstation/Entities/Objects/Specific/Medical/healing.yml
(1 hunks)Resources/Textures/_Goobstation/Clothing/Belt/cmowebbing.rsi/meta.json
(1 hunks)Resources/Textures/_Goobstation/Objects/Weapons/Guns/Cannons/syringe_gun.rsi/meta.json
(1 hunks)
💤 Files with no reviewable changes (1)
- Content.Server/Chemistry/EntitySystems/SolutionInjectWhileEmbeddedSystem.cs
✅ Files skipped from review due to trivial changes (4)
- Resources/Locale/ru-RU/backmen/research/technologies.ftl
- Resources/Textures/_Goobstation/Clothing/Belt/cmowebbing.rsi/meta.json
- Resources/Textures/_Goobstation/Objects/Weapons/Guns/Cannons/syringe_gun.rsi/meta.json
- Resources/Locale/ru-RU/backmen/entities/syringe_gun.ftl
⏰ Context from checks skipped due to timeout of 300000ms (3)
- GitHub Check: Test Packaging
- GitHub Check: build (ubuntu-latest)
- GitHub Check: build (ubuntu-latest)
🔇 Additional comments (29)
Resources/Prototypes/Entities/Objects/Specific/chemistry.yml (1)
362-395
: Проверьте параметры физики снарядаФизические параметры снаряда могут потребовать балансировки:
- Минимальная скорость 3 единицы может быть слишком низкой для эффективного использования
- Урон от прокола 5 единиц кажется небольшим для оружия
- Время извлечения 0.25 секунд может быть слишком быстрым
Рекомендуется:
- Провести тестирование баланса параметров
- Рассмотреть возможность вынесения этих значений в отдельный конфигурационный файл для упрощения балансировки
Content.Shared/_Goobstation/Weapons/Ranged/SyringeGunComponent.cs (1)
5-13
: Компонент реализован корректно!Компонент имеет четкую документацию и следует паттернам ECS. Свойство
PierceArmor
логично используется для настройки пробития брони.Content.Server/_Goobstation/Weapons/Ranged/SyringeGunSystem.cs (1)
12-15
: Система реализована корректно!Подписка на события и инициализация выполнены правильно.
Content.Server/Chemistry/Components/BaseSolutionInjectOnEventComponent.cs (1)
61-65
: Свойство Shot добавлено корректно!Новое свойство хорошо задокументировано и логично интегрируется с существующей функциональностью компонента.
Resources/Locale/ru-RU/ss14-ru/prototypes/entities/objects/specific/medical/healing.ftl (1)
174-176
: Локализация добавлена корректно!Новая запись для SyringePax следует существующему формату и содержит корректный перевод.
Content.Server/Chemistry/EntitySystems/SolutionInjectOnEventSystem.cs (3)
44-47
: Добавлена логика для обработки шприцевНовая логика предотвращает прокалывание брони для брошенных шприцев, что является правильным балансом игровой механики.
104-104
: Исправление состояния выстрела при блокировке бронёйКорректное обновление состояния Shot при блокировании инъекции бронёй.
142-151
: Улучшена логика извлечения раствораРеализована дифференцированная логика для извлечения раствора в зависимости от состояния выстрела. Это предотвращает возможные эксплойты с повторным использованием растворов.
Content.Server/Weapons/Ranged/Systems/GunSystem.cs (1)
119-119
: Обновлено отслеживание выпущенных снарядовКорректное присваивание списка выпущенных снарядов в событии AmmoShotEvent.
Resources/Locale/en-US/store/uplink-catalog.ftl (1)
216-218
: Добавлен новый предмет: Шприцевой пистолетОписание чётко объясняет функциональность оружия и его способность пробивать броню.
Resources/Prototypes/_Goobstation/Catalog/Fills/Boxes/medical.yml (1)
1-14
: Корректно определён новый тип коробки со шприцамиСущность правильно наследуется от BoxCardboard и включает все необходимые компоненты. Спрайты и содержимое определены корректно.
Resources/Prototypes/_Goobstation/Entities/Objects/Specific/Medical/healing.yml (2)
1-1
: Комментарий вызывает беспокойствоКомментарий "I am making a grave mistake aren't I?" указывает на неуверенность в реализации. Необходимо уточнить причины беспокойства и убедиться в правильности дизайна.
11-15
: Проверить баланс и существование реагентаНеобходимо проверить:
- Существует ли реагент "Pax" в системе
- Является ли объем в 15 единиц сбалансированным значением
✅ Verification successful
Реагент проверен и сбалансирован
- Реагент "Pax" существует в системе (определён в toxins.yml)
- Количество 15 единиц является сбалансированным, что подтверждается существующими примерами использования:
- 30 единиц в химических бутылках
- 2 единицы в потребляемых предметах (сигареты, продукты)
🏁 Scripts executed
The following scripts were executed for the analysis:
Script:
#!/bin/bash # Проверяем существование реагента Pax rg -l "ReagentId:\s*Pax" Resources/Prototypes/Length of output: 348
Script:
#!/bin/bash # Search for Pax reagent definition echo "=== Searching for Pax reagent definition ===" rg -l "Pax" Resources/Prototypes/Reagents/ # Search for all Pax quantities to compare balance echo -e "\n=== Searching for Pax quantities ===" rg "ReagentId:\s*Pax" -A 1 Resources/Prototypes/Length of output: 1129
Resources/Prototypes/_Backmen/Recipes/Lathes/medical.yml (1)
5-10
: Проверить баланс материаловНеобходимо проверить:
- Соответствие стоимости материалов другому оружию аналогичного типа
- Обоснованность использования редких материалов (Gold, Plasma)
Also applies to: 16-21
✅ Verification successful
Баланс материалов соответствует нормам
- Стоимость материалов (Steel/Glass/Plastic: 500-1000, Gold/Plasma: 100-200) соответствует другим продвинутым устройствам в игре
- Использование Gold и Plasma обосновано - эти материалы регулярно применяются в высокотехнологичных рецептах других отделов (робототехника, хирургия, охрана)
- Повышенная стоимость материалов для RapidSyringeGun оправдана его улучшенными характеристиками
🏁 Scripts executed
The following scripts were executed for the analysis:
Script:
#!/bin/bash # Поиск других рецептов оружия для сравнения стоимости rg -A 10 "type: latheRecipe.*result:.*Gun" Resources/Prototypes/Length of output: 66
Script:
#!/bin/bash # Поиск всех рецептов для медицинского латного станка rg -l "medical\.yml" Resources/Prototypes/ rg "type: latheRecipe" Resources/Prototypes/_Backmen/Recipes/Lathes/medical.yml -A 10 rg "type: latheRecipe" Resources/Prototypes/Recipes/Lathes/medical.yml -A 10 # Поиск использования Gold и Plasma в других рецептах rg "Gold:|Plasma:" Resources/Prototypes/*/Recipes/Lathes/ -B 2 -A 2Length of output: 20671
Resources/Prototypes/_Goobstation/Entities/Clothing/Belt/belts.yml (2)
8-10
: Проверить наличие спрайтаНеобходимо проверить существование файла спрайта по пути
_Goobstation/Clothing/Belt/cmowebbing.rsi
.✅ Verification successful
Спрайт найден и путь корректен
Файл спрайта
cmowebbing.rsi
существует по указанному пути в директорииResources/Textures/_Goobstation/Clothing/Belt/
.🏁 Scripts executed
The following scripts were executed for the analysis:
Script:
#!/bin/bash # Поиск файла спрайта fd "cmowebbing.rsi$" Resources/Textures/Length of output: 104
15-16
: Проверить размер хранилищаРазмер сетки 6x2 требует сравнения с другими подобными предметами для обеспечения баланса.
✅ Verification successful
Размер хранилища сбалансирован
Сетка размером 6x2 соответствует балансу игры, так как:
- Сопоставима с базовым ремнем (7x1)
- Меньше ремня главного инженера (9x1)
- Больше кобуры (3x1), что оправдано ролью
- Значительно меньше специализированных ремней (например, 15x1 у пояса для жезлов)
🏁 Scripts executed
The following scripts were executed for the analysis:
Script:
#!/bin/bash # Поиск других поясов для сравнения размера хранилища rg -A 5 "type: Storage.*grid:" Resources/Prototypes/Length of output: 54
Script:
#!/bin/bash # Поиск файлов с поясами и их конфигурацией echo "=== Поиск файлов поясов ===" fd "belt.*\.yml" Resources/Prototypes/ echo -e "\n=== Поиск определений сетки в файлах ===" rg "grid:\s*\n\s*-" Resources/Prototypes/ -A 2 echo -e "\n=== Поиск компонентов хранилища ===" rg "components:" -A 5 Resources/Prototypes/**/belt*.ymlLength of output: 1091
Script:
#!/bin/bash # Поиск определений хранилища и сетки в файлах поясов echo "=== Поиск в файлах поясов ===" rg -U "grid:|components:" -A 5 \ Resources/Prototypes/Catalog/Fills/Items/belt.yml \ Resources/Prototypes/Entities/Clothing/Belt/base_clothingbelt.yml \ Resources/Prototypes/Entities/Clothing/Belt/belts.yml \ Resources/Prototypes/_Backmen/Catalog/Fills/Items/Belts/belts.yml \ Resources/Prototypes/_Backmen/Entities/Clothing/Belt/belts.yml \ Resources/Prototypes/_Goobstation/Catalog/Fills/Belt/belts.yml \ Resources/Prototypes/_Goobstation/Entities/Clothing/Belt/belts.ymlLength of output: 61567
Resources/Prototypes/_Goobstation/Catalog/Fills/Belt/belts.yml (1)
8-18
: Проверить содержимое и балансНеобходимо проверить:
- Существование всех указанных предметов в системе
- Баланс количества EmergencyMedipen (3 шт.)
- Сравнить содержимое с другими медицинскими поясами
✅ Verification successful
Содержимое пояса главврача сбалансировано
Проверка показала:
- Все предметы корректно определены в системе
- Количество EmergencyMedipen (3 шт.) соответствует стандартному поясу парамедика
- Наличие хирургических инструментов оправдано ролью главврача
🏁 Scripts executed
The following scripts were executed for the analysis:
Script:
#!/bin/bash # Проверка существования предметов for item in EnergyCautery EnergyScalpel AdvancedRetractor BoneGel Brutepack Ointment Bloodpack Gauze EmergencyMedipen; do echo "Checking $item..." rg "id: $item" Resources/Prototypes/ done # Поиск других заполненных медицинских поясов для сравнения rg -A 10 "parent: ClothingBelt.*Medical.*StorageFill" Resources/Prototypes/Length of output: 13646
Script:
#!/bin/bash # Search for medical belt contents more specifically rg "StorageFill" Resources/Prototypes/_Goobstation/Catalog/Fills/Belt/belts.yml -A 15 rg "StorageFill" Resources/Prototypes/Catalog/Fills/Items/belt.yml -A 15Length of output: 3948
Resources/Prototypes/Roles/Jobs/Medical/chief_medical_officer.yml (1)
63-63
: Проверить баланс экипировкиЗамена стандартного медицинского пояса на военный разгрузочный жилет может нарушить баланс между главами отделов. Необходимо сравнить с экипировкой других руководителей.
✅ Verification successful
Баланс экипировки подтвержден
Военный разгрузочный жилет для Главврача является обоснованным выбором, так как:
- Другие главы отделов имеют специализированное снаряжение, соответствующее их роли
- Быстрый доступ к медицинскому оборудованию критически важен в экстренных ситуациях
🏁 Scripts executed
The following scripts were executed for the analysis:
Script:
#!/bin/bash # Поиск экипировки других глав отделов rg -A 10 "type: startingGear.*equipment:" Resources/Prototypes/Roles/Jobs/Length of output: 76
Script:
#!/bin/bash # Search for belt equipment in department head files fd "chief|head" Resources/Prototypes/Roles/Jobs/ -t f -x rg -B 2 -A 2 "belt: .*" {}Length of output: 459
Resources/Prototypes/_Backmen/Entities/Objects/Weapons/Guns/pneumatic_cannon.yml (3)
1-36
: Проверьте баланс оружия и механику инъекций.Базовая реализация шприц-пистолета выглядит корректно, но требуется тщательное тестирование механики инъекций и баланса оружия в игровых условиях.
Рекомендуется:
- Добавить ограничение на типы растворов, которые можно использовать
- Реализовать механику задержки между инъекциями
- Добавить визуальную и звуковую обратную связь при успешной инъекции
38-57
: Требуется балансировка увеличенной скорострельности.Увеличенная скорострельность (1.5) и больший магазин могут создать проблемы с балансом. Необходимо тщательное тестирование.
Рекомендуется:
- Рассмотреть добавление штрафа к точности
- Добавить увеличенное время перезарядки
- Ограничить типы совместимых растворов
58-84
: Проверьте механику пробития брони и реализуйте TODO.Функционал пробития брони требует особого внимания с точки зрения баланса. Также необходимо реализовать описанный в TODO функционал автоматической регенерации дротиков.
Хотите, чтобы я помог с реализацией автоматической регенерации дротиков и резервуара на 100 единиц?
Resources/Prototypes/Entities/Objects/Weapons/Guns/pneumatic_cannon.yml (1)
Line range hint
106-183
: Проверьте интеграцию с существующими системами.Реализация шприц-пистолета как пневматического оружия выглядит логично, но требуется проверка совместимости с:
- Системой повреждений
- Системой химии
- Существующими типами боеприпасов
Запустите следующий скрипт для проверки интеграции:
Resources/Prototypes/_Backmen/Catalog/uplink_catalog.yml (1)
165-183
: Проверьте баланс стоимости и ограничения доступа.Стоимость в 30 ТК и ограничение по медицинским ролям требуют проверки:
- Сравните с аналогичным оружием той же стоимости
- Убедитесь, что список ролей оптимален
Рекомендуется также добавить предупреждение о потенциальной опасности оружия в описание.
Resources/Prototypes/Research/civilianservices.yml (1)
191-203
: Проверьте место в дереве исследований.Размещение технологии в гражданских службах требует обоснования:
- Возможно, лучше подойдет военная ветка исследований
- Стоимость 10000 может быть занижена для такого оружия
Рекомендуется:
- Пересмотреть категорию технологии
- Увеличить стоимость исследования
- Добавить предварительные требования из военной ветки
Resources/Prototypes/Entities/Structures/Machines/lathe.yml (4)
968-968
: Проверьте доступность шприц-пистолета в медицинском отделе.Добавление шприц-пистолета в статические рецепты MedicalTechFab может вызвать проблемы с балансом, так как это потенциально опасное оружие становится доступным медицинскому персоналу.
Рекомендуется рассмотреть следующие аспекты:
- Ограничение доступа к рецепту через систему исследований
- Добавление требования повышенного уровня доступа
- Перемещение рецепта в динамические рецепты вместо статических
976-976
: Проверьте ограничения на создание быстрого шприц-пистолета в медицинском отделе.Добавление быстрого шприц-пистолета в динамические рецепты MedicalTechFab требует тщательной проверки баланса и ограничений.
Рекомендуется:
- Добавить высокие требования к материалам
- Рассмотреть возможность добавления дополнительных условий разблокировки рецепта
- Проверить совместимость с существующими системами контроля доступа
789-789
: Проверьте баланс доступности шприц-пистолета в SecurityTechFab.Добавление шприц-пистолета в статические рецепты SecurityTechFab делает его легкодоступным для службы безопасности. Убедитесь, что это соответствует игровому балансу.
Запустите следующий скрипт для проверки баланса:
✅ Verification successful
Баланс шприц-пистолета соответствует игровой механике
Анализ показывает, что оружие имеет правильные ограничения доступа:
- Базовая версия помечена как медицинская контрабанда
- Улучшенные версии требуют исследований или доступны только синдикату
- Размер магазина и скорострельность сбалансированы для каждой версии
🏁 Scripts executed
The following scripts were executed for the analysis:
Script:
#!/bin/bash # Описание: Проверка баланса шприц-пистолета # Поиск других рецептов оружия в SecurityTechFab для сравнения rg -A 5 "staticRecipes:" "Resources/Prototypes/Entities/Structures/Machines/lathe.yml" | grep -E "Gun|Weapon" # Поиск характеристик шприц-пистолета rg "SyringeGun" "Resources/Prototypes/Entities/Objects/Weapons/"Length of output: 265
Script:
#!/bin/bash # Search for all lathe recipes in SecurityTechFab and MedicalTechFab echo "=== SecurityTechFab Recipes ===" rg -A 20 "SecurityTechFab:" Resources/Prototypes/Entities/Structures/Machines/lathe.yml echo -e "\n=== MedicalTechFab Recipes ===" rg -A 20 "MedicalTechFab:" Resources/Prototypes/Entities/Structures/Machines/lathe.yml echo -e "\n=== Syringe Gun Properties ===" rg -l "SyringeGun" Resources/Prototypes/Entities/Objects/Weapons/ | xargs cat echo -e "\n=== Related Ammo Types ===" rg -l "SyringeGunAmmo" Resources/Prototypes/ | xargs catLength of output: 41525
846-846
: Проверьте требования для создания быстрого шприц-пистолета.Добавление быстрого шприц-пистолета в динамические рецепты SecurityTechFab требует проверки баланса и требований для его создания.
Запустите следующий скрипт для проверки требований:
✅ Verification successful
Требования для создания быстрого шприц-пистолета подтверждены
Для создания требуется:
- Исследование технологии "MedicalDefense" (Tier 2, 10000 очков)
- Материалы:
- Сталь: 1000
- Стекло: 1000
- Пластик: 1000
- Золото: 200
- Плазма: 200
Баланс рецепта корректен - требует вдвое больше ресурсов чем базовая версия и значительных исследовательских инвестиций.
🏁 Scripts executed
The following scripts were executed for the analysis:
Script:
#!/bin/bash # Описание: Проверка требований для быстрого шприц-пистолета # Поиск рецепта быстрого шприц-пистолета rg "RapidSyringeGun" "Resources/Prototypes/Recipes/"Length of output: 50
Script:
#!/bin/bash # Поиск всех упоминаний RapidSyringeGun echo "=== Поиск упоминаний RapidSyringeGun ===" rg "RapidSyringeGun" -l echo -e "\n=== Поиск рецептов SecurityTechFab ===" rg "SecurityTechFab" "Resources/Prototypes/Recipes/" echo -e "\n=== Поиск прототипа оружия ===" rg "RapidSyringeGun" "Resources/Prototypes/Entities/"Length of output: 937
Script:
#!/bin/bash echo "=== Рецепт шприц-пистолета ===" cat "Resources/Prototypes/_Backmen/Recipes/Lathes/medical.yml" echo -e "\n=== Исследовательские требования ===" cat "Resources/Prototypes/Research/civilianservices.yml" echo -e "\n=== Прототип оружия ===" cat "Resources/Prototypes/_Backmen/Entities/Objects/Weapons/pneumatic_cannon.yml"Length of output: 6190
Resources/Prototypes/Catalog/Fills/Lockers/heads.yml (1)
247-248
: Необходимо рассмотреть баланс и безопасность новых предметовДобавление
RapidSyringeGun
иBoxSyringePax
в шкафчик Главврача может создать проблемы с балансом и потенциально быть использовано для грифинга.Рекомендации:
- Рассмотреть возможность добавления системы логирования использования шприц-пистолета
- Добавить механизм отслеживания использованных транквилизаторов
- Возможно, стоит ограничить доступ к быстрому шприц-пистолету, оставив только обычную версию
Давайте проверим, есть ли какие-либо ограничения или системы логирования в реализации:
✅ Verification successful
Существующие системы безопасности достаточны
После анализа кодовой базы обнаружено, что игра уже имеет встроенные системы мониторинга и безопасности для шприц-пистолета:
- Отслеживание всех химических инъекций через
SharedInjectorSystem
- Система логирования событий боя
- Мониторинг передачи растворов через
SolutionTransferSystem
Дополнительные системы логирования не требуются, так как существующие механизмы обеспечивают достаточный контроль.
🏁 Scripts executed
The following scripts were executed for the analysis:
Script:
#!/bin/bash # Проверяем реализацию систем безопасности для шприц-пистолета # Поиск компонентов логирования echo "Поиск компонентов логирования:" rg -l "logging|log system" --type cs # Поиск систем отслеживания использования echo "Поиск систем отслеживания:" ast-grep --pattern 'class $_ { $$$ track($$$) { $$$ } $$$ }'Length of output: 1175
Script:
#!/bin/bash # Поиск реализации шприц-пистолета и связанных систем echo "Поиск реализации шприц-пистолета:" rg -l "syringe.*gun|rapid.*syringe" --type-not yml # Поиск систем отслеживания медицинского оборудования echo "Поиск систем медицинского мониторинга:" rg -l "medical.*track|medicine.*log|syringe.*track" --type cs # Поиск систем логирования оружия echo "Поиск систем логирования оружия:" rg -l "weapon.*log|combat.*log|attack.*log" --type cs # Поиск прототипа шприц-пистолета echo "Поиск прототипа шприц-пистолета:" rg -l "RapidSyringeGun" --type ymlLength of output: 634
Script:
#!/bin/bash # Поиск реализации шприц-пистолета echo "Поиск файлов шприц-пистолета:" rg -l "syringe.*gun|rapid.*syringe" # Поиск систем боя и оружия echo "Поиск систем боя:" rg -l "combat.*system|weapon.*system|projectile.*system" --type cs # Поиск систем инъекций echo "Поиск систем инъекций:" rg -l "inject|chemical.*transfer|solution.*transfer" --type cs # Поиск определений прототипов echo "Поиск прототипов оружия:" fd -e yml | xargs rg "RapidSyringeGun|BoxSyringePax" -lLength of output: 6260
@@ -409,7 +445,7 @@ | |||
offset: "-0.1,0" | |||
minimumSpeed: 3 | |||
removalTime: 0.25 | |||
embedOnThrow: false | |||
embedOnThrow: true |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
🛠️ Refactor suggestion
Исправьте дублирование конфигурации
В сущности MiniSyringe
дублируются параметры EmbeddableProjectile
из родительской сущности BaseSyringe
. Рекомендуется удалить дублирование.
- type: EmbeddableProjectile
- offset: "-0.1,0"
- minimumSpeed: 3
- removalTime: 0.25
embedOnThrow: true
Committable suggestion skipped: line range outside the PR's diff.
@@ -374,6 +408,7 @@ | |||
- type: Tag | |||
tags: | |||
- Syringe | |||
- SyringeGunAmmo # GoobStation |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
💡 Codebase verification
Обнаружена проблема с тегом SyringeGunAmmo
Тег SyringeGunAmmo
добавлен к сущностям, но отсутствует проверка этого тега в системе шприц-пистолета (SyringeGunSystem
). Это может привести к тому, что шприц-пистолет будет принимать неправильные типы боеприпасов.
- Добавьте проверку тега
SyringeGunAmmo
вContent.Server/_Goobstation/Weapons/Ranged/SyringeGunSystem.cs
- Или используйте существующую систему валидации боеприпасов из базового класса
GunSystem
🔗 Analysis chain
Проверьте использование тега SyringeGunAmmo
Тег SyringeGunAmmo
добавлен к базовым сущностям шприцев. Убедитесь, что система шприц-пистолета корректно фильтрует боеприпасы по этому тегу.
Also applies to: 424-424
🏁 Scripts executed
The following scripts were executed for the analysis:
Script:
#!/bin/bash
# Поиск использования тега SyringeGunAmmo в системах
rg -l "SyringeGunAmmo" --type cs
Length of output: 32
Script:
#!/bin/bash
# Поиск тега во всех файлах
echo "=== Searching for SyringeGunAmmo in all files ==="
rg "SyringeGunAmmo" -l
# Поиск файлов, связанных со шприц-пистолетом
echo -e "\n=== Searching for syringe gun related files ==="
rg -l -i "syringe.*gun|gun.*syringe"
# Поиск систем оружия и боеприпасов
echo -e "\n=== Searching for weapon/ammo systems ==="
fd -e cs -e yml ".*[Gg]un.*System|.*[Aa]mmo.*System|.*[Ww]eapon.*System"
Length of output: 5104
Script:
#!/bin/bash
# Проверка содержимого системы шприц-пистолета
echo "=== SyringeGunSystem implementation ==="
ast-grep --pattern 'class SyringeGunSystem {
$$$
}'
# Проверка определения тега
echo -e "\n=== Tag definition ==="
rg "SyringeGunAmmo" Resources/Prototypes/tags.yml -C 2
Length of output: 307
Script:
#!/bin/bash
# Проверка реализации системы шприц-пистолета
echo "=== SyringeGunSystem content ==="
rg -A 10 "SyringeGunSystem" Content.Server/_Goobstation/Weapons/Ranged/SyringeGunSystem.cs
# Поиск проверок тегов в файле
echo -e "\n=== Tag checks in system ==="
rg "HasTag|EnsureTag" Content.Server/_Goobstation/Weapons/Ranged/SyringeGunSystem.cs
Length of output: 649
Script:
#!/bin/bash
# Проверка компонента шприц-пистолета
echo "=== SyringeGunComponent content ==="
rg -A 10 "SyringeGunComponent" Content.Shared/_Goobstation/Weapons/Ranged/SyringeGunComponent.cs
# Поиск использования тега в базовой системе оружия
echo -e "\n=== Gun system tag checks ==="
rg "SyringeGunAmmo" Content.Server/Weapons/Ranged/Systems/GunSystem.cs Content.Shared/Weapons/Ranged/Systems/SharedGunSystem.cs
Length of output: 489
Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com>
Порт шприцемёта с Goobstation
Goob-Station/Goob-Station#967
Summary by CodeRabbit
Примечания к выпуску
Новые возможности
Улучшения
Исправления