Expedition tweaks 14#4516
Conversation
|
Note Reviews pausedIt looks like this branch is under active development. To avoid overwhelming you with review comments due to an influx of new commits, CodeRabbit has automatically paused this review. You can configure this behavior by changing the Use the following commands to manage reviews:
Use the checkboxes below for quick actions:
📝 WalkthroughWalkthroughPR вводит систему доступа Pirate, добавляет связанные локализации и прототипы дверей/кнопок/windoor, упаковку chameleon hardsuit и хранилище, вносит массовые правки карт антагонистов, расширяет NPC loot и правит ряд прототипов (гарнитуры, орудия, мобы, карты). ChangesPirate Faction System
Sequence Diagram(s)sequenceDiagram
participant Card as ID Card
participant Door as Airlock/Windoor/Hatch
participant Electronics as DoorElectronicsPirate
participant Reader as AccessReader
Card->>Door: попытка открыть
Door->>Electronics: проверить доступ
Electronics->>Reader: разрешить "Pirate"?
Reader-->>Electronics: результат проверки
Electronics-->>Door: открыть/закрыть
Door-->>Card: успех/ошибка доступа
Estimated code review effort🎯 4 (Complex) | ⏱️ ~50 minutes Suggested reviewers
Poem
✨ Finishing Touches🧪 Generate unit tests (beta)
|
There was a problem hiding this comment.
Actionable comments posted: 5
Caution
Some comments are outside the diff and can’t be posted inline due to platform limitations.
⚠️ Outside diff range comments (1)
Resources/Maps/_Sunrise/Shuttles/Antag/falcon.yml (1)
3360-3609:⚠️ Potential issue | 🟠 Major | ⚡ Quick winСинхронизируйте доступ у
LockableButtonPirateс пиратским контуром.На Line 3570 в
accessListsOriginalвсё ещё стоитNuclearOperative. После перевода кнопки на пиратский прототип это ломает ожидаемую доступность для пиратского доступа.💡 Предлагаемая правка
- type: AccessReader accessListsOriginal: - - - NuclearOperative + - - Pirate🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the rest with a brief reason, keep changes minimal, and validate. In `@Resources/Maps/_Sunrise/Shuttles/Antag/falcon.yml` around lines 3360 - 3609, В прототипе LockableButtonPirate исправьте список доступа у компонента AccessReader: найдите entity с uid 468 и в его accessListsOriginal замените значение "NuclearOperative" на пиратскую роль (например "Pirate" или имя группы, используемой в проекте для пиратского доступа) чтобы синхронизировать доступ кнопки с пиратским контуром.
🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.
Inline comments:
In `@Resources/Maps/_Sunrise/Shuttles/Antag/falcon.yml`:
- Line 663: Run the YAML linter and attach the Content.YAMLLinter output for the
changed .yml files; then fix the access conflict for uid 468 in falcon.yml by
aligning the AccessReader.accessListsOriginal with the pirate-locked prototypes
(AirlockExternalGlassShuttlePirateLocked and AirlockHatchPirateLocked) — either
replace [NuclearOperative] with the appropriate pirate access list(s) used
elsewhere (e.g., Pirate/Privateer role names) or add a compatible pirate access
group so the airlock prototypes and AccessReader agree; ensure the file passes
the YAML linter after the change and include the linter output in the PR.
In `@Resources/Maps/_Sunrise/Shuttles/Antag/mothership.yml`:
- Around line 4817-4826: В точке pos: 1.5,2.5 есть конфликт: оставьте только
один объект-кнопку (либо сохранить SignalButtonDirectional, либо
SignalButtonUlan) и удалите дублирующий описатель; перенесите все компоненты
DeviceLinkSource и их linkedPorts на выбранный экземпляр кнопки (если
DeviceLinkSource сейчас на SignalButtonDirectional — убедитесь, что его
linkedPorts сохранены и прописаны у оставшейся сущности), а у удалённой кнопки
удалите/очистите связующие поля (например linkedPorts) чтобы исключить
дублирующую интеракцию. Сделайте минимальное изменение в YAML — либо удалите
блок сущности для SignalButtonUlan на pos 1.5,2.5, либо удалите/перенесите
DeviceLinkSource из SignalButtonDirectional в SignalButtonUlan, сохранив
правильные linkedPorts у единственной оставшейся кнопки.
In `@Resources/Prototypes/_Sunrise/Entities/Clothing/Ears/headsets.yml`:
- Around line 265-271: Add short English explanatory comments next to the new
locked and disableEject settings in the ItemSlots -> cell_slot block (the
cell_slot that sets startingItem: PowerCellSmallNuclear) clarifying that
disableEject prevents player removal of the power cell and locked makes the slot
non-interactable/locked by default; also add the same brief comment to the other
similar ItemSlots/cell_slot YAML block in the same file so both occurrences
document the non-removable/locked behavior.
In `@Resources/Prototypes/_Sunrise/Entities/Clothing/OuterClothing/softsuits.yml`:
- Around line 246-303: The damaged EVA child prototypes
(ClothingOuterEVASuitPirateArmoredDamaged,
ClothingOuterEVASuitPirateArmoredAltDamaged, ClothingOuterHardsuitScafDamaged
and the top-level damaged full-body Tag block) override the Tag component and
drop the inherited SuitEVA tag; restore EVA classification by adding "SuitEVA"
to each Tag.tags array in those damaged entities (i.e., include SuitEVA
alongside the existing MonkeyWearable/FullBodyOuter/WhitelistChameleon or
FullBodyOuter/WhitelistChameleon entries) so the child Tag components explicitly
contain the SuitEVA entry.
In `@Resources/Prototypes/Entities/Clothing/Ears/headsets.yml`:
- Around line 301-309: Replace the Russian inline comment and the non-canonical
Sunrise markers with an English comment and the canonical Sunrise marker format
in each affected block: in
Resources/Prototypes/Entities/Clothing/Ears/headsets.yml (301-309) change the
Russian comment and the "Sunrise edit start" / "Sunrise edit end" markers to an
English comment (e.g. "Sunrise edit - non-removable nuclear battery for
antagonist headsets") and canonical markers (e.g. "Sunrise edit: start" and
"Sunrise edit: end") surrounding the ItemSlots block; do the same for the second
block in Resources/Prototypes/Entities/Clothing/Ears/headsets.yml (340-348) and
for both blocks in Resources/Prototypes/Entities/Clothing/Ears/headsets_alt.yml
(137-145 and 163-171), ensuring the content inside each block is unchanged and
only the comment text and marker lines are updated.
---
Outside diff comments:
In `@Resources/Maps/_Sunrise/Shuttles/Antag/falcon.yml`:
- Around line 3360-3609: В прототипе LockableButtonPirate исправьте список
доступа у компонента AccessReader: найдите entity с uid 468 и в его
accessListsOriginal замените значение "NuclearOperative" на пиратскую роль
(например "Pirate" или имя группы, используемой в проекте для пиратского
доступа) чтобы синхронизировать доступ кнопки с пиратским контуром.
🪄 Autofix (Beta)
Fix all unresolved CodeRabbit comments on this PR:
- Push a commit to this branch (recommended)
- Create a new PR with the fixes
ℹ️ Review info
⚙️ Run configuration
Configuration used: Path: .coderabbit.yaml
Review profile: ASSERTIVE
Plan: Pro
Run ID: aeb1eac2-2277-4be9-b7c5-811677008a3d
📒 Files selected for processing (41)
Resources/Locale/en-US/_prototypes/_sunrise/access/accesses.ftlResources/Locale/en-US/_prototypes/_sunrise/catalog/fills/boxes/syndicate.ftlResources/Locale/en-US/_prototypes/_sunrise/catalog/fills/lockers/suit_storage.ftlResources/Locale/en-US/_prototypes/_sunrise/entities/objects/devices/electronics/door_access.ftlResources/Locale/en-US/_prototypes/_sunrise/entities/structures/doors/airlocks/access.ftlResources/Locale/en-US/_prototypes/_sunrise/entities/structures/doors/windoors/windoor.ftlResources/Locale/en-US/_prototypes/_sunrise/entities/structures/wallmounts/switches/switch.ftlResources/Locale/ru-RU/_prototypes/_sunrise/access/accesses.ftlResources/Locale/ru-RU/_prototypes/_sunrise/catalog/fills/boxes/syndicate.ftlResources/Locale/ru-RU/_prototypes/_sunrise/catalog/fills/lockers/suit_storage.ftlResources/Locale/ru-RU/_prototypes/_sunrise/entities/clothing/outerclothing/hardsuits.ftlResources/Locale/ru-RU/_prototypes/_sunrise/entities/clothing/outerclothing/softsuits.ftlResources/Locale/ru-RU/_prototypes/_sunrise/entities/objects/devices/electronics/door_access.ftlResources/Locale/ru-RU/_prototypes/_sunrise/entities/structures/doors/airlocks/access.ftlResources/Locale/ru-RU/_prototypes/_sunrise/entities/structures/doors/windoors/windoor.ftlResources/Locale/ru-RU/_prototypes/_sunrise/entities/structures/wallmounts/switches/switch.ftlResources/Maps/_Sunrise/Dungeon/pirate_base.ymlResources/Maps/_Sunrise/Shuttles/Antag/assaultops.ymlResources/Maps/_Sunrise/Shuttles/Antag/falcon.ymlResources/Maps/_Sunrise/Shuttles/Antag/infiltrator_dropship.ymlResources/Maps/_Sunrise/Shuttles/Antag/infiltrator_dropship_soviet.ymlResources/Maps/_Sunrise/Shuttles/Antag/mothership.ymlResources/Maps/_Sunrise/Shuttles/Antag/rust_brass.ymlResources/Prototypes/Entities/Clothing/Ears/headsets.ymlResources/Prototypes/Entities/Clothing/Ears/headsets_alt.ymlResources/Prototypes/Entities/Structures/Machines/Computers/computers.ymlResources/Prototypes/_Sunrise/Access/pirate.ymlResources/Prototypes/_Sunrise/Catalog/Fills/Boxes/syndicate.ymlResources/Prototypes/_Sunrise/Catalog/Fills/Lockers/suit_storage.ymlResources/Prototypes/_Sunrise/Catalog/uplink_catalog.ymlResources/Prototypes/_Sunrise/Entities/Clothing/Ears/headsets.ymlResources/Prototypes/_Sunrise/Entities/Clothing/OuterClothing/hardsuits.ymlResources/Prototypes/_Sunrise/Entities/Clothing/OuterClothing/softsuits.ymlResources/Prototypes/_Sunrise/Entities/Objects/Devices/Electronics/door_access.ymlResources/Prototypes/_Sunrise/Entities/Structures/Doors/Airlocks/access.ymlResources/Prototypes/_Sunrise/Entities/Structures/Doors/Windoors/windoor.ymlResources/Prototypes/_Sunrise/Entities/Structures/Shuttles/cannons.ymlResources/Prototypes/_Sunrise/Entities/Structures/Wallmounts/Switches/switch.ymlResources/Prototypes/_Sunrise/NPCs/PirateNPC/npc_loot_pirate.ymlResources/Prototypes/_Sunrise/NPCs/SiliconNPC/mob_hostile_rogue_silicons.ymlResources/Prototypes/_Sunrise/NPCs/pirates.yml
👮 Files not reviewed due to content moderation or server errors (1)
- Resources/Maps/_Sunrise/Dungeon/pirate_base.yml
|
RSI Diff Bot; head commit 9c1d69d merging into 7181ade Resources/Textures/_Sunrise/Structures/Machines/salvage.rsi
|
There was a problem hiding this comment.
Actionable comments posted: 2
Caution
Some comments are outside the diff and can’t be posted inline due to platform limitations.
⚠️ Outside diff range comments (1)
Resources/Prototypes/_Sunrise/Entities/Mobs/NPCs/regalrat.yml (1)
1-8:⚠️ Potential issue | 🟠 MajorПротиворечие “No Guard” и
maxGuardCount: 1вMobRatKingNoGuard
MobRatKingNoGuardиспользуется спавнером ghost-роляSpawnPointGhostRatKingNoGuard, при этом вRatKingSystemохранники можно призывать, покаlivingGuards < component.MaxGuardCount; сmaxGuardCount: 1вариант фактически не “без охраны” (допускается наличие/призыв как минимум 1 стража), что конфликтует сsuffix: No Guardи комментарием “without guards”. Либо установитеmaxGuardCount: 0, либо синхронизируйте ID/комментарий/suffixс новым смыслом.🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the rest with a brief reason, keep changes minimal, and validate. In `@Resources/Prototypes/_Sunrise/Entities/Mobs/NPCs/regalrat.yml` around lines 1 - 8, The MobRatKingNoGuard entity currently declares suffix: "No Guard" but sets the RatKing component's maxGuardCount: 1, which allows spawning guards; update this to match the intended semantics by either setting maxGuardCount: 0 in the RatKing component on MobRatKingNoGuard (to truly disable guards) or renaming the entity/ suffix/ comment (and the spawner SpawnPointGhostRatKingNoGuard usage) to reflect that one guard is allowed; locate and edit the MobRatKingNoGuard definition (the RatKing component) and, if you choose the renaming approach, update the ID/suffix and any references such as SpawnPointGhostRatKingNoGuard and any logic in RatKingSystem that checks component.MaxGuardCount to keep names and behavior consistent.
🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.
Inline comments:
In `@Resources/Maps/_Sunrise/Nonstations/nukieplanet.yml`:
- Around line 11095-11102: The MetaData block for entity uid 2473 contains
Russian literal strings in fields name and desc; remove those literals by moving
the Russian text into the localization (FTL) files and replace the YAML values:
set MetaData.name and MetaData.desc to English fallback strings that match the
English localization (or to the appropriate localization keys if your system
expects keys in YAML), and add corresponding Russian entries in the localization
files so the original Russian copy is served via FTL rather than embedded in the
YAML.
In `@Resources/Prototypes/_Sunrise/Roles/role_types.yml`:
- Around line 5-6: Add missing primary role type entries for CorporateAligned
and TSFAligned to the RoleTypes.xml listing of primary role types (ensure the
entries use the exact IDs CorporateAligned and TSFAligned). Update both copies
of RoleTypes.xml that define primary role types so the IDs are present and
identical between the files, or alternatively change the code/consumers to use
the IDs that already exist; ensure no duplicate IDs and that the new entries
follow the same XML entry schema used by existing role types.
---
Outside diff comments:
In `@Resources/Prototypes/_Sunrise/Entities/Mobs/NPCs/regalrat.yml`:
- Around line 1-8: The MobRatKingNoGuard entity currently declares suffix: "No
Guard" but sets the RatKing component's maxGuardCount: 1, which allows spawning
guards; update this to match the intended semantics by either setting
maxGuardCount: 0 in the RatKing component on MobRatKingNoGuard (to truly disable
guards) or renaming the entity/ suffix/ comment (and the spawner
SpawnPointGhostRatKingNoGuard usage) to reflect that one guard is allowed;
locate and edit the MobRatKingNoGuard definition (the RatKing component) and, if
you choose the renaming approach, update the ID/suffix and any references such
as SpawnPointGhostRatKingNoGuard and any logic in RatKingSystem that checks
component.MaxGuardCount to keep names and behavior consistent.
🪄 Autofix (Beta)
Fix all unresolved CodeRabbit comments on this PR:
- Push a commit to this branch (recommended)
- Create a new PR with the fixes
ℹ️ Review info
⚙️ Run configuration
Configuration used: Path: .coderabbit.yaml
Review profile: ASSERTIVE
Plan: Pro
Run ID: 0e3c1c4e-b8be-4f6e-ac13-e8d2512292d0
⛔ Files ignored due to path filters (10)
Resources/Textures/_Sunrise/Structures/Machines/salvage.rsi/salvage-magnet-o0.pngis excluded by!**/*.pngResources/Textures/_Sunrise/Structures/Machines/salvage.rsi/salvage-magnet-o1.pngis excluded by!**/*.pngResources/Textures/_Sunrise/Structures/Machines/salvage.rsi/salvage-magnet-o2.pngis excluded by!**/*.pngResources/Textures/_Sunrise/Structures/Machines/salvage.rsi/salvage-magnet-o3.pngis excluded by!**/*.pngResources/Textures/_Sunrise/Structures/Machines/salvage.rsi/salvage-magnet-o4.pngis excluded by!**/*.pngResources/Textures/_Sunrise/Structures/Machines/salvage.rsi/salvage-magnet-ready-blinking.pngis excluded by!**/*.pngResources/Textures/_Sunrise/Structures/Machines/salvage.rsi/salvage-magnet-ready.pngis excluded by!**/*.pngResources/Textures/_Sunrise/Structures/Machines/salvage.rsi/salvage-magnet-unready-blinking.pngis excluded by!**/*.pngResources/Textures/_Sunrise/Structures/Machines/salvage.rsi/salvage-magnet-unready.pngis excluded by!**/*.pngResources/Textures/_Sunrise/Structures/Machines/salvage.rsi/salvage-magnet.pngis excluded by!**/*.png
📒 Files selected for processing (17)
Content.Server/Salvage/SalvageSystem.Runner.csResources/Locale/en-US/_strings/mind/role-types.ftlResources/Locale/ru-RU/_strings/_sunrise/mind/role-types.ftlResources/Locale/ru-RU/_strings/mind/role-types.ftlResources/Maps/_Sunrise/Nonstations/nukieplanet.ymlResources/Maps/_Sunrise/Shuttles/Salvage/oredozer.ymlResources/Prototypes/Roles/role_types.ymlResources/Prototypes/_Starlight/Entities/Objects/Weapons/Guns/Pistols/pistols.ymlResources/Prototypes/_Starlight/Entities/Objects/Weapons/Guns/Projectiles/hitscan.ymlResources/Prototypes/_Sunrise/Entities/Mobs/NPCs/regalrat.ymlResources/Prototypes/_Sunrise/Entities/Structures/Machines/salvage.ymlResources/Prototypes/_Sunrise/Entities/Structures/Wallmounts/wallmount_radar.ymlResources/Prototypes/_Sunrise/NPCs/SiliconNPC/mob_hostile_rogue_silicons.ymlResources/Prototypes/_Sunrise/Procedural/salvage_factions.ymlResources/Prototypes/_Sunrise/Roles/MindRoles/mind_roles.ymlResources/Prototypes/_Sunrise/Roles/role_types.ymlResources/Textures/_Sunrise/Structures/Machines/salvage.rsi/meta.json
💤 Files with no reviewable changes (2)
- Resources/Locale/ru-RU/_strings/mind/role-types.ftl
- Resources/Prototypes/Roles/role_types.yml
There was a problem hiding this comment.
Actionable comments posted: 1
🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.
Inline comments:
In `@Resources/Prototypes/_Sunrise/Catalog/Fills/Boxes/syndicate.yml`:
- Line 461: The item ID in the SpawnItemsOnUse configuration contains a typo:
ClothingOuterHardsuitChameleo should be corrected to
ClothingOuterHardsuitChameleon. Fix the spelling by changing "Chameleo" to
"Chameleon" in the item ID to ensure the box properly spawns the correct
hardsuit item when opened.
🪄 Autofix (Beta)
Fix all unresolved CodeRabbit comments on this PR:
- Push a commit to this branch (recommended)
- Create a new PR with the fixes
ℹ️ Review info
⚙️ Run configuration
Configuration used: Path: .coderabbit.yaml
Review profile: ASSERTIVE
Plan: Pro
Run ID: d27d9a00-e530-401a-a418-5d5866c887a9
📒 Files selected for processing (10)
Resources/Locale/en-US/_prototypes/_sunrise/catalog/fills/boxes/syndicate.ftlResources/Locale/ru-RU/_prototypes/_sunrise/catalog/fills/boxes/syndicate.ftlResources/Maps/_Sunrise/Shuttles/Salvage/asteroidcracker.ymlResources/Prototypes/Entities/Objects/Specific/Research/anomaly.ymlResources/Prototypes/Entities/Objects/Weapons/Melee/mining.ymlResources/Prototypes/_Sunrise/Catalog/Fills/Boxes/syndicate.ymlResources/Prototypes/_Sunrise/Catalog/uplink_catalog.ymlResources/Prototypes/_Sunrise/NPCs/PirateNPC/SovietNPC/npc_loot_soviet.ymlResources/Prototypes/_Sunrise/NPCs/PirateNPC/npc_loot_pirate.ymlResources/Prototypes/_Sunrise/Procedural/salvage_factions.yml
There was a problem hiding this comment.
Actionable comments posted: 2
🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.
Inline comments:
In `@Resources/Maps/_Sunrise/Shuttles/DSO/ERT/ERT-Small-Red.yml`:
- Around line 1-27: Rename the grid file from ERT-Small-Red.yml to
ert_small_red.yml to conform to the project's snake_case naming convention for
map files. Additionally, before merging, run the Content.YAMLLinter tool locally
to validate the integrity of the grid file, ensuring all tile mappings and
entity definitions are correctly formatted and there are no structural issues in
the YAML.
In `@Resources/Prototypes/_Sunrise/GameRules/unknown_shuttles.yml`:
- Line 23: The gridPath value references a YAML file name that violates the
snake_case naming convention required by the repository. The file path currently
points to ERT-Small-Red.yml which uses kebab-case, but YAML file names must
follow snake_case format. Rename the referenced shuttle map file from
ERT-Small-Red.yml to ert_small_red.yml and update the gridPath value in
unknown_shuttles.yml to point to the renamed file with the correct snake_case
name in the full path.
🪄 Autofix (Beta)
Fix all unresolved CodeRabbit comments on this PR:
- Push a commit to this branch (recommended)
- Create a new PR with the fixes
ℹ️ Review info
⚙️ Run configuration
Configuration used: Path: .coderabbit.yaml
Review profile: ASSERTIVE
Plan: Pro
Run ID: 6d758795-80e2-4c4d-8dd3-5156eda1e56d
📒 Files selected for processing (5)
Resources/Maps/_Sunrise/Shuttles/DSO/ERT/ERT-Small-Red.ymlResources/Prototypes/Roles/Jobs/CentComm/emergencyresponseteam.ymlResources/Prototypes/_Sunrise/Catalog/Fills/Boxes/syndicate.ymlResources/Prototypes/_Sunrise/GameRules/unknown_shuttles.ymlResources/Prototypes/_Sunrise/NPCs/pirates_despawn.yml










Краткое описание | Short description
Добавлены повреждённые варианты пиратских EVA/скафандров без защиты от космоса.
Повреждённые пиратские скафандры добавлены в пиратские лут-пулы как утешительный дроп.
Добавлен пиратский доступ, электроника шлюза и локализация доступа.
Добавлены пиратские варианты шлюзов, виндура и кнопки с пиратским доступом.
На пиратских шаттлах заменены nukeops/syndicate шлюзы, виндуры и кнопки на пиратские варианты.
Обычный хамелеон-скафандр в аплинке заменён на развёртываемую коробку чтобы не путались.
Добавлено хранилище
SuitStorageSyndieChameleonс баллонами, чёрным джетпаком и коробкой хамелеон-скафандра.На шаттле ДО заменено хранилище скафандра на вариант с хамелеон-скафандром.
Хамелеон-скафандру снижено замедление передвижения.
Антагонистическим гарнитурам добавлены несъёмные ядерные батареи.
На некоторых антагонистических картах медвендоры заменены на синдикатские. ( Interdyne )
Всякое
Ссылка на багрепорт/Предложение | Related Issue/Bug Report
Медиа (Видео/Скриншоты) | Media (Video/Screenshots)
Changelog
🆑 KaiserMaus
Summary by CodeRabbit