Conversation
WalkthroughВ PR добавлен обширный контент для региона DeadSector: новые русские локализации (предметы, структуры, постеры, валюта), множество прототипов сущностей (структуры, предметы, артефакты, одежда), таймерные спавнеры и ambient‑звуки, большое число метаданных текстур и обновлённый файл атрибуций музыки. Все изменения — декларативные: ресурсы, метаданные и контентные YAML/FTL/JSON файлы; исполняемая логика не затронута. Sequence Diagram(s)(пропущено) Estimated code review effort🎯 4 (Complex) | ⏱️ ~45 minutes Possibly related PRs
🚥 Pre-merge checks | ✅ 3✅ Passed checks (3 passed)
✏️ Tip: You can configure your own custom pre-merge checks in the settings. 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: 14
Caution
Some comments are outside the diff and can’t be posted inline due to platform limitations.
⚠️ Outside diff range comments (1)
Resources/Audio/Imperial/ElysiumPrime/Music/attributions.yml (1)
31-39:⚠️ Potential issue | 🔴 CriticalДобавьте поле
sourceна верхний уровень записи атрибуции.Парсер атрибуций требует четыре поля:
files,copyright,licenseиsource. Текущая запись не имеет верхнеуровневогоsource— вместо этого источник вложен вsample.source, который парсер не может прочитать. Это вызовет ошибку при загрузке атрибуций.Поля
license_originalиsampleне поддерживаются парсером и будут проигнорированы.Необходимая правка
- files: ["Dire_Situation.ogg"] license: "CC-BY-4.0" copyright: "Dire Situation – GoodShowOldChap (aka ahtelyahwat / Rick O'Shea)" + source: "https://freesound.org/s/744013/" license_original: "CC0-1.0" sample: description: "Generative glitch radio loop – Rmshh" license: "CC-BY-4.0" source: "https://freesound.org/s/744013/"Либо удалите
license_originalиsample, если они не требуются, либо сохраните их для документации, но добавьте обязательный верхнеуровневыйsource.🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed. In `@Resources/Audio/Imperial/ElysiumPrime/Music/attributions.yml` around lines 31 - 39, The top-level attribution record is missing the required source field (currently only sample.source exists), so add a top-level "source" key with the same URL ("https://freesound.org/s/744013/") to the record that contains "files: [\"Dire_Situation.ogg\"]" and "copyright: \"Dire Situation – GoodShowOldChap (aka ahtelyahwat / Rick O'Shea)\"" and "license: \"CC-BY-4.0\""; additionally either remove the unsupported "license_original" and "sample" entries or keep them as non-required documentation, but ensure the parser-required top-level "source" is present.
🤖 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/Audio/Imperial/ElysiumPrime/Music/attributions.yml`:
- Around line 1-4: В секции атрибуции (поля files, license, copyright, source) в
файле attributions.yml замените значение поля copyright с URL на фактическое имя
правообладателя (человека или организации) для шести треков ST, оставив поле
source с уже указанным URL; убедитесь, что поле files снова присутствует со
списком треков и что license остаётся "CC-BY-SA-3.0".
In `@Resources/Locale/ru-RU/Imperial/DeadSector/ItemSale.ftl`:
- Around line 4-8: Fix the grammatical case in the description strings for
ent-DeadSectorAdminIDCard1 and ent-DeadSectorStarCorpsIDCard2: replace "Карта с
доступов в закрытую секцию." with "Карта с доступом в закрытую секцию." so both
.desc entries use the correct instrumental case after the preposition "с".
- Around line 1-2: Fix the typo in the localization entry for ent-CopperWire by
changing the value "Медная проволка" to "Медная проволока" (update the string
tied to the ent-CopperWire key); leave the .desc line unchanged.
In `@Resources/Locale/ru-RU/Imperial/DeadSector/posters.ftl`:
- Around line 43-44: В ключе ent-DeadSectorPoster15 в поле .desc нужно добавить
запятую перед причастным оборотом: измените текст в .desc у
ent-DeadSectorPoster15 так, чтобы фраза "вещества, существующие в мире и
какая-то информация." содержала запятую перед "существующие" (обновите строку
.desc соответствующим образом).
In `@Resources/Prototypes/Imperial/DeadSector/Ambient/ambient.yml`:
- Around line 128-141: В сущности AmbientCold1 удалите лишнюю пустую строку
между ключом components: и первым компонентом - type: AmbientSound, чтобы
компоненты (AmbientSound, TimedDespawn, Tag) шли подряд без пустой строки;
откройте блок, найдите идентификатор AmbientCold1 и уберите пустую строку сразу
после components: чтобы YAML был корректно структурирован.
- Around line 37-65: Сущности Ambientbirds2, Ambientbirds3 и Ambientbirds4
избыточно переопределяют поля volume и range, повторяя значения из родителя
Ambientbirds1; оставьте в этих дочерних сущностях только компонент AmbientSound
с полем sound.path (указывающим соответствующий .ogg), удалив повторяющиеся
volume и range строки, чтобы наследование от Ambientbirds1 работало корректно.
- Around line 67-69: The file contains excessively long separator comment lines
in ambient.yml (e.g., the repeated
“################################################################...” blocks
shown around the Ambient section), which hurt readability; replace each overlong
divider (occurrences near the shown blocks and also at the other noted spots)
with a shorter, consistent delimiter (for example a 40-character sequence like
"########################################" or a concise comment such as "###
---- SECTION ----") keeping the same comment style, and apply the change to all
mentioned occurrences so delimiters are uniform and not overly long.
In `@Resources/Prototypes/Imperial/DeadSector/cash_and_etc/spacecash.yml`:
- Around line 97-106: У сущности с id spacecash500 в компоненте Icon замените
поле state с неверного значения "spacecash100" на корректное "spacecash500"
чтобы 500-кредитная купюра отображалась правильно; правка касается блока
компонента Icon внутри определения entity (id: spacecash500, parent:
spacecash1).
- Around line 58-73: В текущем прототипе перепутаны id: поле Currency.price
ссылается на spacecashCredit, тогда как сам currency объявлен как id: spacecash,
а spacecashCredit — это stack; исправьте согласованность — либо переименуйте
currency id на spacecashCredit, либо (лучше) замените ключ в Currency.price на
spacecash так, чтобы он указывал на корректный currency id, а в блоке cash в
currency-прототипе (поле cash:) укажите id(ы) entity/stack прототипов, которые
реально являются купюрами (например spacecashCredit и любые другие номиналы),
чтобы механики store/withdraw ссылались на реальные entity/stack прототипы;
проверьте и при необходимости переименуйте stack-прототип spacecashCredit или
currency id чтобы все ссылки совпадали.
In `@Resources/Prototypes/Imperial/DeadSector/items/FoodPacket.yml`:
- Around line 8-33: В файле содержимого контейнера (EntityTableContainerFill ->
containers.storagebase) у вас пять предметов (DrinkWaterBottleFull x2,
TomatoCanDeadSector, FlareBlue x2) при физическом Storage.grid 2x2 (в компоненте
Storage и в Item.shape), что вмещает только 4 слота; исправьте либо увеличив
Storage.grid и Item.shape до 3x2/2x3 (или другой подходящей конфигурации), либо
уменьшив список children в containers.storagebase (удалить/объединить предметы,
например сократить количество Flare или DrinkWaterBottleFull) так чтобы число и
размеры элементов соответствовали доступным слотам; проверьте и обновите
соответствующие элементы: EntityTableContainerFill, контейнер с id storagebase,
Item.sprite/size/shape и Storage.grid чтобы всё согласовывалось.
In `@Resources/Prototypes/Imperial/DeadSector/items/ItemSale.yml`:
- Around line 53-55: Заполните/исправьте поле suffix у прототипа MoneyCard:
уберите неверные метки "ElysiumPrime, Structure" и замените их на корректную
категорию для предметов в DeadSector (например только "DeadSector, Item" или
просто "Item"), чтобы прототип MoneyCard (наследуемый от BaseItem) попал в
правильную категорию спавн-меню/редактора; найдите запись с id: MoneyCard и
отредактируйте значение suffix соответственно.
In `@Resources/Prototypes/Imperial/DeadSector/Structure/Antenns.yml`:
- Around line 26-55: В текущем Destructible-блоке оба порога (DamageTrigger
damage: 25 и damage: 125) содержат DoActsBehavior с актом "Destruction", из‑за
чего объект удаляется при 25 урона и порог 125 никогда не срабатывает; исправьте
это либо удалив DoActsBehavior (acts: ["Destruction"]) из порога с damage: 25,
либо переместив PlaySoundBehavior и SpawnEntitiesBehavior вместе с
DoActsBehavior в порог с damage: 125 (перечисленные типы: Destructible,
DamageTrigger, DoActsBehavior, PlaySoundBehavior, SpawnEntitiesBehavior).
In `@Resources/Prototypes/Imperial/DeadSector/Structure/Helicopter.yml`:
- Around line 11-20: Сущность использует Fixtures с slip-типом (SlipLayer) и
hard: false, что даёт некорректную скользящую/неблокирующую физику; либо
полностью удалите блок Fixtures если объект только визуально/звуковой маркер,
либо замените slip-конфигурацию на обычный fixture для структуры: уберите
SlipLayer, установите подходящие layer/mask для сценических объектов и сделайте
hard: true (или соответствующее поле для блокирующей коллизии) в секции fixtures
(см. поля Fixtures, slips, SlipLayer, hard), чтобы объект занимал место на карте
и корректно блокировал движение.
In `@Resources/Textures/Imperial/DeadSector/Structure/Helicopter.rsi/meta.json`:
- Around line 12-43: Удалите избыточное свойство "directions": 1, выровняйте
отступы внутри массива "delays" (уберите лишние пробелы в элементах и
перед/после вложенного массива) и удалите пустую строку перед закрывающей
фигурной скобкой, чтобы привести meta.json (свойства "directions" и "delays") к
единому аккуратному форматированию.
---
Outside diff comments:
In `@Resources/Audio/Imperial/ElysiumPrime/Music/attributions.yml`:
- Around line 31-39: The top-level attribution record is missing the required
source field (currently only sample.source exists), so add a top-level "source"
key with the same URL ("https://freesound.org/s/744013/") to the record that
contains "files: [\"Dire_Situation.ogg\"]" and "copyright: \"Dire Situation –
GoodShowOldChap (aka ahtelyahwat / Rick O'Shea)\"" and "license: \"CC-BY-4.0\"";
additionally either remove the unsupported "license_original" and "sample"
entries or keep them as non-required documentation, but ensure the
parser-required top-level "source" is present.
ℹ️ Review info
⚙️ Run configuration
Configuration used: Organization UI
Review profile: ASSERTIVE
Plan: Pro
Run ID: 35c6bd70-19d8-4df9-8ac0-c7d1811dacaf
⛔ Files ignored due to path filters (107)
Resources/Audio/Imperial/DeadSector/Sound/Ambient/Alive/Ambient-Tuman.oggis excluded by!**/*.oggResources/Audio/Imperial/DeadSector/Sound/Ambient/Alive/birds1.oggis excluded by!**/*.oggResources/Audio/Imperial/DeadSector/Sound/Ambient/Alive/birds2.oggis excluded by!**/*.oggResources/Audio/Imperial/DeadSector/Sound/Ambient/Alive/birds3.oggis excluded by!**/*.oggResources/Audio/Imperial/DeadSector/Sound/Ambient/Alive/birds4.oggis excluded by!**/*.oggResources/Audio/Imperial/DeadSector/Sound/Ambient/Alive/birdslong.oggis excluded by!**/*.oggResources/Audio/Imperial/DeadSector/Sound/Ambient/Alive/cold1.oggis excluded by!**/*.oggResources/Audio/Imperial/DeadSector/Sound/Ambient/Alive/cold2.oggis excluded by!**/*.oggResources/Audio/Imperial/DeadSector/Sound/Ambient/Alive/frogs.oggis excluded by!**/*.oggResources/Audio/Imperial/DeadSector/Sound/Ambient/Alive/labcreak.oggis excluded by!**/*.oggResources/Audio/Imperial/DeadSector/Sound/Ambient/Alive/labenginestop.oggis excluded by!**/*.oggResources/Audio/Imperial/DeadSector/Sound/Ambient/Alive/labfootsteps.oggis excluded by!**/*.oggResources/Audio/Imperial/DeadSector/Sound/Ambient/Alive/labgratefall.oggis excluded by!**/*.oggResources/Audio/Imperial/DeadSector/Sound/Ambient/Alive/labpsy.oggis excluded by!**/*.oggResources/Audio/Imperial/DeadSector/Sound/Ambient/Alive/labpsyambient.oggis excluded by!**/*.oggResources/Audio/Imperial/DeadSector/Sound/Ambient/Alive/labstone2fall.oggis excluded by!**/*.oggResources/Audio/Imperial/DeadSector/Sound/Ambient/Alive/labstonefall.oggis excluded by!**/*.oggResources/Audio/Imperial/DeadSector/Sound/Ambient/Alive/waterdrops1.oggis excluded by!**/*.oggResources/Audio/Imperial/DeadSector/Sound/Ambient/Blowout/Blowout-Defalut.oggis excluded by!**/*.oggResources/Audio/Imperial/DeadSector/Sound/Ambient/Blowout/Blowout-NotShoots.oggis excluded by!**/*.oggResources/Audio/Imperial/DeadSector/Sound/Ambient/Conversation/Break-Default.oggis excluded by!**/*.oggResources/Audio/Imperial/DeadSector/Sound/Ambient/Conversation/Break-MilitaryConversation.oggis excluded by!**/*.oggResources/Audio/Imperial/DeadSector/Sound/Ambient/Horror/limansk.oggis excluded by!**/*.oggResources/Audio/Imperial/DeadSector/Sound/Ambient/Music/INH.oggis excluded by!**/*.oggResources/Audio/Imperial/DeadSector/Sound/Ambient/Other/Strobosiren.oggis excluded by!**/*.oggResources/Audio/Imperial/DeadSector/Sound/Ambient/WarAmbient/Flying.oggis excluded by!**/*.oggResources/Audio/Imperial/DeadSector/Sound/Ambient/WarAmbient/Shooting-1.oggis excluded by!**/*.oggResources/Audio/Imperial/DeadSector/Sound/Ambient/WarAmbient/Shooting-2.oggis excluded by!**/*.oggResources/Audio/Imperial/DeadSector/Sound/Ambient/WarAmbient/Shooting-3.oggis excluded by!**/*.oggResources/Audio/Imperial/DeadSector/Sound/Ambient/WarAmbient/helicopter.oggis excluded by!**/*.oggResources/Audio/Imperial/ElysiumPrime/Music/Battle_of_Kings.oggis excluded by!**/*.oggResources/Audio/Imperial/ElysiumPrime/Music/Dark_Alley_Deals.oggis excluded by!**/*.oggResources/Audio/Imperial/ElysiumPrime/Music/Dead_Pilot.oggis excluded by!**/*.oggResources/Audio/Imperial/ElysiumPrime/Music/Destiny_of_Colonists.oggis excluded by!**/*.oggResources/Audio/Imperial/ElysiumPrime/Music/Run_Run_My_Darling.oggis excluded by!**/*.oggResources/Audio/Imperial/ElysiumPrime/Music/ST-FasterThanLight.oggis excluded by!**/*.oggResources/Audio/Imperial/ElysiumPrime/Music/ST-MachineAge.oggis excluded by!**/*.oggResources/Audio/Imperial/ElysiumPrime/Music/ST-Opening.oggis excluded by!**/*.oggResources/Audio/Imperial/ElysiumPrime/Music/ST-QuantumSoul.oggis excluded by!**/*.oggResources/Audio/Imperial/ElysiumPrime/Music/ST-QuantumSpawn.oggis excluded by!**/*.oggResources/Audio/Imperial/ElysiumPrime/Music/ST-SigmaTauri.oggis excluded by!**/*.oggResources/Audio/Imperial/ElysiumPrime/Music/Super_Nova_In_The_Catacombs.oggis excluded by!**/*.oggResources/Audio/Imperial/ElysiumPrime/Music/X4ToTheDeathForTheGlory.oggis excluded by!**/*.oggResources/Audio/Imperial/ElysiumPrime/Music/X4Winterblossom.oggis excluded by!**/*.oggResources/Textures/Imperial/DeadSector/Structure/Antenns.rsi/icon.pngis excluded by!**/*.pngResources/Textures/Imperial/DeadSector/Structure/Antenns.rsi/icon2.pngis excluded by!**/*.pngResources/Textures/Imperial/DeadSector/Structure/Grave.rsi/Grave1.pngis excluded by!**/*.pngResources/Textures/Imperial/DeadSector/Structure/Grave.rsi/Grave2.pngis excluded by!**/*.pngResources/Textures/Imperial/DeadSector/Structure/Helicopter.rsi/icon.pngis excluded by!**/*.pngResources/Textures/Imperial/DeadSector/Structure/Sandbags.rsi/Sandbags1.pngis excluded by!**/*.pngResources/Textures/Imperial/DeadSector/Structure/Sandbags.rsi/Sandbags2.pngis excluded by!**/*.pngResources/Textures/Imperial/DeadSector/Structure/Sandbags.rsi/Sandbags3.pngis excluded by!**/*.pngResources/Textures/Imperial/DeadSector/Structure/Sandbags.rsi/Sandbags4.pngis excluded by!**/*.pngResources/Textures/Imperial/DeadSector/Structure/Sign.rsi/icon.pngis excluded by!**/*.pngResources/Textures/Imperial/DeadSector/hands/Default.rsi/equipped-HAND.pngis excluded by!**/*.pngResources/Textures/Imperial/DeadSector/hands/Default.rsi/icon.pngis excluded by!**/*.pngResources/Textures/Imperial/DeadSector/hands/Green.rsi/equipped-HAND.pngis excluded by!**/*.pngResources/Textures/Imperial/DeadSector/hands/Green.rsi/icon.pngis excluded by!**/*.pngResources/Textures/Imperial/DeadSector/hands/Hazard.rsi/equipped-HAND.pngis excluded by!**/*.pngResources/Textures/Imperial/DeadSector/hands/Hazard.rsi/icon.pngis excluded by!**/*.pngResources/Textures/Imperial/DeadSector/items/Artifacts.rsi/Artifacts1.pngis excluded by!**/*.pngResources/Textures/Imperial/DeadSector/items/Artifacts.rsi/Artifacts2.pngis excluded by!**/*.pngResources/Textures/Imperial/DeadSector/items/Artifacts.rsi/Artifacts3.pngis excluded by!**/*.pngResources/Textures/Imperial/DeadSector/items/Artifacts.rsi/Artifacts4.pngis excluded by!**/*.pngResources/Textures/Imperial/DeadSector/items/Artifacts.rsi/Artifacts5.pngis excluded by!**/*.pngResources/Textures/Imperial/DeadSector/items/Cash.rsi/spacecash1.pngis excluded by!**/*.pngResources/Textures/Imperial/DeadSector/items/Cash.rsi/spacecash10.pngis excluded by!**/*.pngResources/Textures/Imperial/DeadSector/items/Cash.rsi/spacecash100.pngis excluded by!**/*.pngResources/Textures/Imperial/DeadSector/items/Cash.rsi/spacecash1000.pngis excluded by!**/*.pngResources/Textures/Imperial/DeadSector/items/Cash.rsi/spacecash10000.pngis excluded by!**/*.pngResources/Textures/Imperial/DeadSector/items/Cash.rsi/spacecash100000.pngis excluded by!**/*.pngResources/Textures/Imperial/DeadSector/items/Cash.rsi/spacecash1000000.pngis excluded by!**/*.pngResources/Textures/Imperial/DeadSector/items/Cash.rsi/spacecash20000.pngis excluded by!**/*.pngResources/Textures/Imperial/DeadSector/items/Cash.rsi/spacecash2500.pngis excluded by!**/*.pngResources/Textures/Imperial/DeadSector/items/Cash.rsi/spacecash30000.pngis excluded by!**/*.pngResources/Textures/Imperial/DeadSector/items/Cash.rsi/spacecash500.pngis excluded by!**/*.pngResources/Textures/Imperial/DeadSector/items/Cash.rsi/spacecash5000.pngis excluded by!**/*.pngResources/Textures/Imperial/DeadSector/items/ChainsawYellow.rsi/icon.pngis excluded by!**/*.pngResources/Textures/Imperial/DeadSector/items/ChainsawYellow.rsi/inhand-left.pngis excluded by!**/*.pngResources/Textures/Imperial/DeadSector/items/ChainsawYellow.rsi/inhand-right.pngis excluded by!**/*.pngResources/Textures/Imperial/DeadSector/items/ChainsawYellow.rsi/wielded-inhand-left.pngis excluded by!**/*.pngResources/Textures/Imperial/DeadSector/items/ChainsawYellow.rsi/wielded-inhand-right.pngis excluded by!**/*.pngResources/Textures/Imperial/DeadSector/items/FoodPacket.rsi/iconBlue.pngis excluded by!**/*.pngResources/Textures/Imperial/DeadSector/items/FoodPacket.rsi/iconGreen.pngis excluded by!**/*.pngResources/Textures/Imperial/DeadSector/items/Geiger.rsi/geiger_base.pngis excluded by!**/*.pngResources/Textures/Imperial/DeadSector/items/Geiger.rsi/geiger_on_ext.pngis excluded by!**/*.pngResources/Textures/Imperial/DeadSector/items/Geiger.rsi/geiger_on_high.pngis excluded by!**/*.pngResources/Textures/Imperial/DeadSector/items/Geiger.rsi/geiger_on_idle.pngis excluded by!**/*.pngResources/Textures/Imperial/DeadSector/items/Geiger.rsi/geiger_on_low.pngis excluded by!**/*.pngResources/Textures/Imperial/DeadSector/items/Geiger.rsi/geiger_on_med.pngis excluded by!**/*.pngResources/Textures/Imperial/DeadSector/items/Geiger.rsi/inhand-left.pngis excluded by!**/*.pngResources/Textures/Imperial/DeadSector/items/Geiger.rsi/inhand-right.pngis excluded by!**/*.pngResources/Textures/Imperial/DeadSector/items/IDCardDeadSector.rsi/ID1.pngis excluded by!**/*.pngResources/Textures/Imperial/DeadSector/items/IDCardDeadSector.rsi/ID2.pngis excluded by!**/*.pngResources/Textures/Imperial/DeadSector/items/ItemSale/Bottle.rsi/PotEmpty.pngis excluded by!**/*.pngResources/Textures/Imperial/DeadSector/items/ItemSale/Bottle.rsi/PotTrass.pngis excluded by!**/*.pngResources/Textures/Imperial/DeadSector/items/ItemSale/CopperWire.rsi/icon.pngis excluded by!**/*.pngResources/Textures/Imperial/DeadSector/items/ItemSale/Journals.rsi/icon.pngis excluded by!**/*.pngResources/Textures/Imperial/DeadSector/items/ItemSale/MoneyCard.rsi/icon.pngis excluded by!**/*.pngResources/Textures/Imperial/DeadSector/items/ItemSale/Rope.rsi/icon.pngis excluded by!**/*.pngResources/Textures/Imperial/DeadSector/items/ItemSale/Sim.rsi/icon.pngis excluded by!**/*.pngResources/Textures/Imperial/DeadSector/items/PlateDeadSector.rsi/icon.pngis excluded by!**/*.pngResources/Textures/Imperial/DeadSector/items/SeismicChargeDeadSector.rsi/icon.pngis excluded by!**/*.pngResources/Textures/Imperial/DeadSector/items/SeismicChargeDeadSector.rsi/inhand-left.pngis excluded by!**/*.pngResources/Textures/Imperial/DeadSector/items/SeismicChargeDeadSector.rsi/inhand-right.pngis excluded by!**/*.pngResources/Textures/Imperial/DeadSector/items/SeismicChargeDeadSector.rsi/primed.pngis excluded by!**/*.pngResources/Textures/Imperial/DeadSector/posters.rsi/Tablet.pngis excluded by!**/*.png
📒 Files selected for processing (47)
Resources/Audio/Imperial/ElysiumPrime/Music/attributions.ymlResources/Locale/ru-RU/Imperial/DeadSector/ItemSale.ftlResources/Locale/ru-RU/Imperial/DeadSector/Items.ftlResources/Locale/ru-RU/Imperial/DeadSector/Structure.ftlResources/Locale/ru-RU/Imperial/DeadSector/cash_and_etc/spacecash.ftlResources/Locale/ru-RU/Imperial/DeadSector/posters.ftlResources/Prototypes/Imperial/DeadSector/Ambient/ambient.ymlResources/Prototypes/Imperial/DeadSector/Structure/Antenns.ymlResources/Prototypes/Imperial/DeadSector/Structure/Grave.ymlResources/Prototypes/Imperial/DeadSector/Structure/Helicopter.ymlResources/Prototypes/Imperial/DeadSector/Structure/Sandbags.ymlResources/Prototypes/Imperial/DeadSector/Structure/Sign.ymlResources/Prototypes/Imperial/DeadSector/Structure/StrobeLSiren.ymlResources/Prototypes/Imperial/DeadSector/cash_and_etc/spacecash.ymlResources/Prototypes/Imperial/DeadSector/clothing/hands.ymlResources/Prototypes/Imperial/DeadSector/items/Artifacts.ymlResources/Prototypes/Imperial/DeadSector/items/ChainsawYellow.ymlResources/Prototypes/Imperial/DeadSector/items/FoodPacket.ymlResources/Prototypes/Imperial/DeadSector/items/Geiger.ymlResources/Prototypes/Imperial/DeadSector/items/IDCardDeadSector.ymlResources/Prototypes/Imperial/DeadSector/items/ItemSale.ymlResources/Prototypes/Imperial/DeadSector/items/PlateDeadSector.ymlResources/Prototypes/Imperial/DeadSector/items/SeismicChargeDeadSector.ymlResources/Prototypes/Imperial/DeadSector/posters.ymlResources/Textures/Imperial/DeadSector/Structure/Antenns.rsi/meta.jsonResources/Textures/Imperial/DeadSector/Structure/Grave.rsi/meta.jsonResources/Textures/Imperial/DeadSector/Structure/Helicopter.rsi/meta.jsonResources/Textures/Imperial/DeadSector/Structure/Sandbags.rsi/meta.jsonResources/Textures/Imperial/DeadSector/Structure/Sign.rsi/meta.jsonResources/Textures/Imperial/DeadSector/hands/Default.rsi/meta.jsonResources/Textures/Imperial/DeadSector/hands/Green.rsi/meta.jsonResources/Textures/Imperial/DeadSector/hands/Hazard.rsi/meta.jsonResources/Textures/Imperial/DeadSector/items/Artifacts.rsi/meta.jsonResources/Textures/Imperial/DeadSector/items/Cash.rsi/meta.jsonResources/Textures/Imperial/DeadSector/items/ChainsawYellow.rsi/meta.jsonResources/Textures/Imperial/DeadSector/items/FoodPacket.rsi/meta.jsonResources/Textures/Imperial/DeadSector/items/Geiger.rsi/meta.jsonResources/Textures/Imperial/DeadSector/items/IDCardDeadSector.rsi/meta.jsonResources/Textures/Imperial/DeadSector/items/ItemSale/Bottle.rsi/meta.jsonResources/Textures/Imperial/DeadSector/items/ItemSale/CopperWire.rsi/meta.jsonResources/Textures/Imperial/DeadSector/items/ItemSale/Journals.rsi/meta.jsonResources/Textures/Imperial/DeadSector/items/ItemSale/MoneyCard.rsi/meta.jsonResources/Textures/Imperial/DeadSector/items/ItemSale/Rope.rsi/meta.jsonResources/Textures/Imperial/DeadSector/items/ItemSale/Sim.rsi/meta.jsonResources/Textures/Imperial/DeadSector/items/PlateDeadSector.rsi/meta.jsonResources/Textures/Imperial/DeadSector/items/SeismicChargeDeadSector.rsi/meta.jsonResources/Textures/Imperial/DeadSector/posters.rsi/meta.json
| - type: EntityTableContainerFill | ||
| containers: | ||
| storagebase: !type:AllSelector | ||
| children: | ||
| - id: DrinkWaterBottleFull | ||
| amount: 2 | ||
| - id: TomatoCanDeadSector | ||
| - id: FlareBlue | ||
| amount: 2 | ||
| - type: Sprite | ||
| sprite: Imperial/DeadSector/items/FoodPacket.rsi | ||
| state: iconBlue | ||
| - type: Item | ||
| sprite: Imperial/DeadSector/items/FoodPacket.rsi | ||
| size: Large | ||
| shape: | ||
| - 0,0,2,2 | ||
| - type: Storage | ||
| grid: | ||
| - 0,0,2,2 | ||
| whitelist: | ||
| tags: | ||
| - DrinkBottle | ||
| - Meat | ||
| - Flare | ||
| - Radio |
There was a problem hiding this comment.
Увеличьте объём хранилища или сократите набор содержимого.
На Line 10-16 и Line 44-50 в каждую коробку кладётся пять отдельных предметов, а на Line 26-27 и Line 60-61 задана сетка 2x2, то есть только четыре слота. Даже если считать каждый предмет как 1x1, часть содержимого сюда уже не поместится.
Also applies to: 42-67
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.
In `@Resources/Prototypes/Imperial/DeadSector/items/FoodPacket.yml` around lines 8
- 33, В файле содержимого контейнера (EntityTableContainerFill ->
containers.storagebase) у вас пять предметов (DrinkWaterBottleFull x2,
TomatoCanDeadSector, FlareBlue x2) при физическом Storage.grid 2x2 (в компоненте
Storage и в Item.shape), что вмещает только 4 слота; исправьте либо увеличив
Storage.grid и Item.shape до 3x2/2x3 (или другой подходящей конфигурации), либо
уменьшив список children в containers.storagebase (удалить/объединить предметы,
например сократить количество Flare или DrinkWaterBottleFull) так чтобы число и
размеры элементов соответствовали доступным слотам; проверьте и обновите
соответствующие элементы: EntityTableContainerFill, контейнер с id storagebase,
Item.sprite/size/shape и Storage.grid чтобы всё согласовывалось.
| id: MoneyCard | ||
| name: MoneyCard | ||
| suffix: ElysiumPrime, Structure |
There was a problem hiding this comment.
Исправьте suffix у MoneyCard.
Здесь выбивается и зона, и тип: прототип лежит в DeadSector/items, наследуется от BaseItem, но помечен как ElysiumPrime, Structure. Это похоже на copy-paste и уводит предмет в неверную категорию спавн-меню/редактора.
Возможная правка
- suffix: ElysiumPrime, Structure
+ suffix: DeadSector, Other📝 Committable suggestion
‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.
| id: MoneyCard | |
| name: MoneyCard | |
| suffix: ElysiumPrime, Structure | |
| id: MoneyCard | |
| name: MoneyCard | |
| suffix: DeadSector, Other |
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.
In `@Resources/Prototypes/Imperial/DeadSector/items/ItemSale.yml` around lines 53
- 55, Заполните/исправьте поле suffix у прототипа MoneyCard: уберите неверные
метки "ElysiumPrime, Structure" и замените их на корректную категорию для
предметов в DeadSector (например только "DeadSector, Item" или просто "Item"),
чтобы прототип MoneyCard (наследуемый от BaseItem) попал в правильную категорию
спавн-меню/редактора; найдите запись с id: MoneyCard и отредактируйте значение
suffix соответственно.
| - type: Destructible | ||
| thresholds: | ||
| - trigger: | ||
| !type:DamageTrigger | ||
| damage: 125 | ||
| behaviors: | ||
| - !type:DoActsBehavior | ||
| acts: [ "Destruction" ] | ||
| - trigger: | ||
| !type:DamageTrigger | ||
| damage: 25 | ||
| behaviors: | ||
| - !type:PlaySoundBehavior | ||
| sound: | ||
| collection: MetalBreak | ||
| params: | ||
| volume: -6 | ||
| - !type:SpawnEntitiesBehavior | ||
| spawn: | ||
| SheetSteel1: | ||
| min: 1 | ||
| max: 8 | ||
| PartRodMetal1: | ||
| min: 1 | ||
| max: 2 | ||
| CableApcStack1: | ||
| min: 1 | ||
| max: 1 | ||
| - !type:DoActsBehavior | ||
| acts: [ "Destruction" ] |
There was a problem hiding this comment.
Порог на 25 урона сейчас уничтожает сущность раньше основного порога.
Во всех двух Destructible-блоках DoActsBehavior: Destruction висит и на 25, и на 125 урона. В итоге антенна удаляется уже на 25 урона, а порог 125 никогда не срабатывает. Если цель — ломать объект на 125, то PlaySoundBehavior/SpawnEntitiesBehavior нужно перенести в этот порог или убрать Destruction из порога 25.
Пример правки, если объект должен разрушаться на 125 урона
- type: Destructible
thresholds:
- trigger:
!type:DamageTrigger
damage: 125
behaviors:
- !type:DoActsBehavior
acts: [ "Destruction" ]
+ - !type:PlaySoundBehavior
+ sound:
+ collection: MetalBreak
+ params:
+ volume: -6
+ - !type:SpawnEntitiesBehavior
+ spawn:
+ SheetSteel1:
+ min: 1
+ max: 8
+ PartRodMetal1:
+ min: 1
+ max: 2
+ CableApcStack1:
+ min: 1
+ max: 1
- - trigger:
- !type:DamageTrigger
- damage: 25
- behaviors:
- - !type:PlaySoundBehavior
- sound:
- collection: MetalBreak
- params:
- volume: -6
- - !type:SpawnEntitiesBehavior
- spawn:
- SheetSteel1:
- min: 1
- max: 8
- PartRodMetal1:
- min: 1
- max: 2
- CableApcStack1:
- min: 1
- max: 1
- - !type:DoActsBehavior
- acts: [ "Destruction" ]Also applies to: 81-110
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.
In `@Resources/Prototypes/Imperial/DeadSector/Structure/Antenns.yml` around lines
26 - 55, В текущем Destructible-блоке оба порога (DamageTrigger damage: 25 и
damage: 125) содержат DoActsBehavior с актом "Destruction", из‑за чего объект
удаляется при 25 урона и порог 125 никогда не срабатывает; исправьте это либо
удалив DoActsBehavior (acts: ["Destruction"]) из порога с damage: 25, либо
переместив PlaySoundBehavior и SpawnEntitiesBehavior вместе с DoActsBehavior в
порог с damage: 125 (перечисленные типы: Destructible, DamageTrigger,
DoActsBehavior, PlaySoundBehavior, SpawnEntitiesBehavior).
| - type: Fixtures | ||
| fixtures: | ||
| slips: | ||
| shape: | ||
| !type:PhysShapeAabb | ||
| bounds: "-0.2,-0.2,0.2,0.2" | ||
| density: 2000 | ||
| hard: false | ||
| layer: | ||
| - SlipLayer |
There was a problem hiding this comment.
SlipLayer здесь задаёт неверную физику для структуры.
На Line 13-20 вертолёт помещается в SlipLayer и делается неблокирующим через hard: false. Этот слой в проекте используется для скользких поверхностей, а не для обычных декораций/структур, поэтому итоговое поведение будет неправильным: через сущность можно будет проходить, и коллизия будет работать не как у объекта сцены.
Если это только визуальный/звуковой маркер, Fixtures лучше убрать совсем. Если объект должен занимать место на карте, здесь нужен обычный fixture структуры с нормальными mask/layer, а не SlipLayer.
🛠️ Вариант исправления для чисто декоративного источника звука
components:
- type: Sprite
sprite: Imperial/DeadSector/Structure/Helicopter.rsi
state: icon
- - type: Fixtures
- fixtures:
- slips:
- shape:
- !type:PhysShapeAabb
- bounds: "-0.2,-0.2,0.2,0.2"
- density: 2000
- hard: false
- layer:
- - SlipLayer
- type: AmbientSound
volume: -3
range: 6
sound:
path: /Audio/Imperial/DeadSector/Sound/Ambient/WarAmbient/Flying.ogg📝 Committable suggestion
‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.
| - type: Fixtures | |
| fixtures: | |
| slips: | |
| shape: | |
| !type:PhysShapeAabb | |
| bounds: "-0.2,-0.2,0.2,0.2" | |
| density: 2000 | |
| hard: false | |
| layer: | |
| - SlipLayer | |
| - type: Sprite | |
| sprite: Imperial/DeadSector/Structure/Helicopter.rsi | |
| state: icon | |
| - type: AmbientSound | |
| volume: -3 | |
| range: 6 | |
| sound: | |
| path: /Audio/Imperial/DeadSector/Sound/Ambient/WarAmbient/Flying.ogg |
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.
In `@Resources/Prototypes/Imperial/DeadSector/Structure/Helicopter.yml` around
lines 11 - 20, Сущность использует Fixtures с slip-типом (SlipLayer) и hard:
false, что даёт некорректную скользящую/неблокирующую физику; либо полностью
удалите блок Fixtures если объект только визуально/звуковой маркер, либо
замените slip-конфигурацию на обычный fixture для структуры: уберите SlipLayer,
установите подходящие layer/mask для сценических объектов и сделайте hard: true
(или соответствующее поле для блокирующей коллизии) в секции fixtures (см. поля
Fixtures, slips, SlipLayer, hard), чтобы объект занимал место на карте и
корректно блокировал движение.
| "directions": 1, | ||
| "delays": [ | ||
| [ | ||
| 0.1, | ||
| 0.1, | ||
| 0.1, | ||
| 0.1, | ||
| 0.1, | ||
| 0.1, | ||
| 0.1, | ||
| 0.1, | ||
| 0.1, | ||
| 0.1, | ||
| 0.1, | ||
| 0.1, | ||
| 0.1, | ||
| 0.1, | ||
| 0.1, | ||
| 0.1, | ||
| 0.1, | ||
| 0.1, | ||
| 0.1, | ||
| 0.1, | ||
| 0.1, | ||
| 0.1, | ||
| 0.1, | ||
| 0.1 | ||
| ] | ||
| ] | ||
| } | ||
| ] | ||
|
|
There was a problem hiding this comment.
🧹 Nitpick | 🔵 Trivial
Незначительные замечания по форматированию.
- Свойство
"directions": 1избыточно — это значение по умолчанию. - Непоследовательный отступ в массиве delays (лишние пробелы в строках 15-38).
- Пустая строка 43 перед закрывающей фигурной скобкой.
Функционально файл корректен.
♻️ Опциональное исправление форматирования
{
"name": "icon",
- "directions": 1,
"delays": [
[
- 0.1,
- 0.1,
- 0.1,
- 0.1,
- 0.1,
- 0.1,
- 0.1,
- 0.1,
- 0.1,
- 0.1,
- 0.1,
- 0.1,
- 0.1,
- 0.1,
- 0.1,
- 0.1,
- 0.1,
- 0.1,
- 0.1,
- 0.1,
- 0.1,
- 0.1,
- 0.1,
- 0.1
- ]
+ 0.1, 0.1, 0.1, 0.1, 0.1, 0.1,
+ 0.1, 0.1, 0.1, 0.1, 0.1, 0.1,
+ 0.1, 0.1, 0.1, 0.1, 0.1, 0.1,
+ 0.1, 0.1, 0.1, 0.1, 0.1, 0.1
+ ]
]
}
]
-
}📝 Committable suggestion
‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.
| "directions": 1, | |
| "delays": [ | |
| [ | |
| 0.1, | |
| 0.1, | |
| 0.1, | |
| 0.1, | |
| 0.1, | |
| 0.1, | |
| 0.1, | |
| 0.1, | |
| 0.1, | |
| 0.1, | |
| 0.1, | |
| 0.1, | |
| 0.1, | |
| 0.1, | |
| 0.1, | |
| 0.1, | |
| 0.1, | |
| 0.1, | |
| 0.1, | |
| 0.1, | |
| 0.1, | |
| 0.1, | |
| 0.1, | |
| 0.1 | |
| ] | |
| ] | |
| } | |
| ] | |
| { | |
| "name": "icon", | |
| "delays": [ | |
| [ | |
| 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, | |
| 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, | |
| 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, | |
| 0.1, 0.1, 0.1, 0.1, 0.1, 0.1 | |
| ] | |
| ] | |
| } | |
| ] | |
| } |
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.
In `@Resources/Textures/Imperial/DeadSector/Structure/Helicopter.rsi/meta.json`
around lines 12 - 43, Удалите избыточное свойство "directions": 1, выровняйте
отступы внутри массива "delays" (уберите лишние пробелы в элементах и
перед/после вложенного массива) и удалите пустую строку перед закрывающей
фигурной скобкой, чтобы привести meta.json (свойства "directions" и "delays") к
единому аккуратному форматированию.
There was a problem hiding this comment.
Actionable comments posted: 1
🤖 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/Imperial/DeadSector/Ambient/ambient.yml`:
- Around line 100-118: The entity id contains a typo: change the id value
"TimedSpawnerAmbientbCold" to "TimedSpawnerAmbientCold" in the YAML (the entity
with id TimedSpawnerAmbientbCold whose parent is MarkerBase and component
TimedSpawner). After renaming, search for and update any references/usages of
TimedSpawnerAmbientbCold elsewhere to the corrected id to preserve links.
ℹ️ Review info
⚙️ Run configuration
Configuration used: Organization UI
Review profile: ASSERTIVE
Plan: Pro
Run ID: 5cee933f-5040-40de-ad49-96962274e750
📒 Files selected for processing (1)
Resources/Prototypes/Imperial/DeadSector/Ambient/ambient.yml
| - type: entity | ||
| id: TimedSpawnerAmbientbCold | ||
| parent: MarkerBase | ||
| suffix: DeadSector, SFX | ||
| components: | ||
| - type: Sprite | ||
| layers: | ||
| - sprite: Markers/cross.rsi | ||
| state: red | ||
| - state: timed | ||
| - type: Timer | ||
| - type: TimedSpawner | ||
| prototypes: | ||
| - AmbientCold1 | ||
| - AmbientCold2 | ||
| chance: 0.8 | ||
| intervalSeconds: 85 | ||
| minimumEntitiesSpawned: 1 | ||
| maximumEntitiesSpawned: 1 |
There was a problem hiding this comment.
Опечатка в id сущности: TimedSpawnerAmbientbCold → TimedSpawnerAmbientCold
В названии сущности лишняя буква b перед Cold. Это нарушает консистентность именования и может затруднить поиск сущности.
🔧 Предлагаемое исправление
- type: entity
- id: TimedSpawnerAmbientbCold
+ id: TimedSpawnerAmbientCold
parent: MarkerBase
suffix: DeadSector, SFX📝 Committable suggestion
‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.
| - type: entity | |
| id: TimedSpawnerAmbientbCold | |
| parent: MarkerBase | |
| suffix: DeadSector, SFX | |
| components: | |
| - type: Sprite | |
| layers: | |
| - sprite: Markers/cross.rsi | |
| state: red | |
| - state: timed | |
| - type: Timer | |
| - type: TimedSpawner | |
| prototypes: | |
| - AmbientCold1 | |
| - AmbientCold2 | |
| chance: 0.8 | |
| intervalSeconds: 85 | |
| minimumEntitiesSpawned: 1 | |
| maximumEntitiesSpawned: 1 | |
| - type: entity | |
| id: TimedSpawnerAmbientCold | |
| parent: MarkerBase | |
| suffix: DeadSector, SFX | |
| components: | |
| - type: Sprite | |
| layers: | |
| - sprite: Markers/cross.rsi | |
| state: red | |
| - state: timed | |
| - type: Timer | |
| - type: TimedSpawner | |
| prototypes: | |
| - AmbientCold1 | |
| - AmbientCold2 | |
| chance: 0.8 | |
| intervalSeconds: 85 | |
| minimumEntitiesSpawned: 1 | |
| maximumEntitiesSpawned: 1 |
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.
In `@Resources/Prototypes/Imperial/DeadSector/Ambient/ambient.yml` around lines
100 - 118, The entity id contains a typo: change the id value
"TimedSpawnerAmbientbCold" to "TimedSpawnerAmbientCold" in the YAML (the entity
with id TimedSpawnerAmbientbCold whose parent is MarkerBase and component
TimedSpawner). After renaming, search for and update any references/usages of
TimedSpawnerAmbientbCold elsewhere to the corrected id to preserve links.
Poeeno
left a comment
There was a problem hiding this comment.
Оформите шапку с типом правильно.
Resources/Audio/Imperial/DeadSector/Sound/Ambient/Blowout/Blowout-Defalut.ogg
Show resolved
Hide resolved
Resources/Audio/Imperial/DeadSector/Sound/Ambient/Blowout/Blowout-NotShoots.ogg
Show resolved
Hide resolved
Resources/Audio/Imperial/DeadSector/Sound/Ambient/Alive/Ambient-Tuman.ogg
Show resolved
Hide resolved
There was a problem hiding this comment.
Actionable comments posted: 1
🤖 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/ru-RU/Imperial/DeadSector/posters.ftl`:
- Around line 43-44: The new poster entry ent-DeadSectorPoster15 is missing the
.suffix field while entries ent-DeadSectorPoster1..14 include .suffix = {
"ElysiumPrime, Плакат" }; add the same .suffix line to the
ent-DeadSectorPoster15 block so it matches the other poster entries and
preserves admin/UI consistency, ensuring the field name is exactly ".suffix" and
the value matches the existing entries.
ℹ️ Review info
⚙️ Run configuration
Configuration used: Organization UI
Review profile: ASSERTIVE
Plan: Pro
Run ID: 7d3a77f2-be02-43b2-8bd4-f7b54fdd8dad
⛔ Files ignored due to path filters (12)
Resources/Audio/Imperial/DeadSector/Sound/Ambient/Alive/Ambient-Tuman.oggis excluded by!**/*.oggResources/Audio/Imperial/DeadSector/Sound/Ambient/Blowout/Blowout-Defalut.oggis excluded by!**/*.oggResources/Audio/Imperial/DeadSector/Sound/Ambient/Blowout/Blowout-NotShoots.oggis excluded by!**/*.oggResources/Audio/Imperial/DeadSector/Sound/Ambient/Horror/limansk.oggis excluded by!**/*.oggResources/Audio/Imperial/DeadSector/Sound/Ambient/Music/INH.oggis excluded by!**/*.oggResources/Audio/Imperial/DeadSector/Sound/Ambient/WarAmbient/helicopter.oggis excluded by!**/*.oggResources/Audio/Imperial/ElysiumPrime/Music/ST-FasterThanLight.oggis excluded by!**/*.oggResources/Audio/Imperial/ElysiumPrime/Music/ST-MachineAge.oggis excluded by!**/*.oggResources/Audio/Imperial/ElysiumPrime/Music/ST-Opening.oggis excluded by!**/*.oggResources/Audio/Imperial/ElysiumPrime/Music/ST-QuantumSoul.oggis excluded by!**/*.oggResources/Audio/Imperial/ElysiumPrime/Music/ST-QuantumSpawn.oggis excluded by!**/*.oggResources/Audio/Imperial/ElysiumPrime/Music/ST-SigmaTauri.oggis excluded by!**/*.ogg
📒 Files selected for processing (2)
Resources/Locale/ru-RU/Imperial/DeadSector/ItemSale.ftlResources/Locale/ru-RU/Imperial/DeadSector/posters.ftl
| ent-DeadSectorPoster15 = Лабораторная Таблица | ||
| .desc = В ней указаны вещества, существующие в мире и какая-то информация |
There was a problem hiding this comment.
Отсутствует поле .suffix.
Все остальные записи постеров в файле (1-14) имеют поле .suffix = { "ElysiumPrime, Плакат" }. Новая запись не содержит этого поля, что нарушает консистентность и может повлиять на отображение в админских инструментах.
🔧 Предлагаемое исправление
ent-DeadSectorPoster15 = Лабораторная Таблица
- .desc = В ней указаны вещества, существующие в мире и какая-то информация
+ .desc = В ней указаны вещества, существующие в мире и какая-то информация.
+ .suffix = { "ElysiumPrime, Плакат" }📝 Committable suggestion
‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.
| ent-DeadSectorPoster15 = Лабораторная Таблица | |
| .desc = В ней указаны вещества, существующие в мире и какая-то информация | |
| ent-DeadSectorPoster15 = Лабораторная Таблица | |
| .desc = В ней указаны вещества, существующие в мире и какая-то информация. | |
| .suffix = { "ElysiumPrime, Плакат" } |
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.
In `@Resources/Locale/ru-RU/Imperial/DeadSector/posters.ftl` around lines 43 - 44,
The new poster entry ent-DeadSectorPoster15 is missing the .suffix field while
entries ent-DeadSectorPoster1..14 include .suffix = { "ElysiumPrime, Плакат" };
add the same .suffix line to the ent-DeadSectorPoster15 block so it matches the
other poster entries and preserves admin/UI consistency, ensuring the field name
is exactly ".suffix" and the value matches the existing entries.
|
@coderabbitai Расскажи, пожалуйста, пользователю @Phantom4502 про то, что игра не поддерживает стерео и аудиофайлы должны быть в моно формате, подробно ему распиши. |
|
Tip For best results, initiate chat on the files or code changes.
Пожалуйста, обрати внимание на важное требование к аудиофайлам в Space Station 14. 🔊 Аудиофайлы должны быть в формате МОНО, не стерео!Почему это важно?Многие аудиофайлы бывают в стерео-формате, то есть имеют левый и правый канал. Однако OpenAL — библиотека воспроизведения звука, которую использует движок Robust Toolbox — не может воспроизводить стерео-аудио позиционно (в пространстве игрового мира). Это означает, что если ты добавишь стерео-файл:
Как конвертировать в моно?Вариант 1 — через Можно использовать ffmpeg -i input.ogg -ac 1 output_mono.oggДля массовой конвертации всех for f in *.ogg; do ffmpeg -i "$f" -ac 1 "mono_$f"; doneВариант 2 — через Audacity (графический интерфейс):
Проверить формат файла можно так:ffprobe -i myfile.oggВ выводе ищи строку вроде Пожалуйста, проверь все добавленные в этом PR аудиофайлы (в частности в 🧠 Learnings used |
О ПР`е
Тип: feat
Изменения: Ивентовый контент
Summary by CodeRabbit
Новые функции
Chores