add: Переносной бумбокс с батарейкой, карго и лодаут для музыкантов - #420
add: Переносной бумбокс с батарейкой, карго и лодаут для музыкантов#420ultradyper wants to merge 3 commits into
Conversation
|
RSI Diff Bot; head commit 0abaef2 merging into 1f46142 Resources/Textures/_Ganimed/Objects/Devices/boombox.rsi
|
|
Warning Review limit reached
Next review available in: 59 minutes You've used all free OSS reviews for now. Wait for the free limit to reset to keep reviewing this public repository. How can I continue?After more reviews become available, a review can be triggered using the To avoid repeated limits, reduce automatic review volume by pausing incremental auto-reviews earlier, using label-based review opt-in, excluding WIP or generated PR titles, or requesting reviews manually when the PR is ready. If your team needs uninterrupted high-volume reviews, an organization admin can enable usage-based reviews. How do review limits work?CodeRabbit enforces per-developer PR review limits for each organization. Most developers receive the normal plan review availability. For paid Pro and Pro+ PR reviews, CodeRabbit uses adaptive limits for sustained high-volume activity. When a developer's recent PR review activity reaches the 95th percentile or higher among CodeRabbit users, additional reviews become available more gradually as earlier reviews age out of the rolling window. Please refer docs for additional details. Review details⚙️ Run configurationConfiguration used: Repository UI Review profile: CHILL Plan: Pro Plus Run ID: 📒 Files selected for processing (2)
📝 WalkthroughSummary by CodeRabbit
WalkthroughДобавлен переносной бумбокс с отдельным компонентом, батарейным питанием и локализованным интерфейсом. Созданы прототипы предмета и ящика, cargo-продукт, loadout музыканта и ресурсы спрайтов. ChangesФункциональность бумбокса
Estimated code review effort: 3 (Moderate) | ~20 minutes Sequence Diagram(s)sequenceDiagram
participant JukeboxSystem
participant BoomboxSystem
participant SharedPowerCellSystem
participant Battery
JukeboxSystem->>BoomboxSystem: начинает воспроизведение
BoomboxSystem->>SharedPowerCellSystem: включает расход батареи
Battery-->>BoomboxSystem: сообщает о разрядке
BoomboxSystem->>SharedPowerCellSystem: отключает расход батареи
BoomboxSystem->>JukeboxSystem: отправляет JukeboxStopMessage
Possibly related PRs
Suggested labels: Suggested reviewers: 🚥 Pre-merge checks | ✅ 5✅ Passed checks (5 passed)
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: 1
ℹ️ Review info
⚙️ Run configuration
Configuration used: Repository UI
Review profile: CHILL
Plan: Pro Plus
Run ID: 529cf5e5-02a0-423d-8cc1-6c59719dd92c
⛔ Files ignored due to path filters (5)
Resources/Textures/_Ganimed/Objects/Devices/boombox.rsi/icon.pngis excluded by!**/*.pngResources/Textures/_Ganimed/Objects/Devices/boombox.rsi/inhand-left.pngis excluded by!**/*.pngResources/Textures/_Ganimed/Objects/Devices/boombox.rsi/inhand-right.pngis excluded by!**/*.pngResources/Textures/_Ganimed/Objects/Devices/boombox.rsi/off.pngis excluded by!**/*.pngResources/Textures/_Ganimed/Objects/Devices/boombox.rsi/on.pngis excluded by!**/*.png
📒 Files selected for processing (11)
Content.Client/Audio/Jukebox/JukeboxBoundUserInterface.csContent.Server/_Ganimed/Boombox/BoomboxSystem.csContent.Shared/_Ganimed/Boombox/BoomboxComponent.csResources/Locale/en-US/_Ganimed/boombox.ftlResources/Locale/ru-RU/_Ganimed/boombox.ftlResources/Prototypes/Loadouts/loadout_groups.ymlResources/Prototypes/_Ganimed/Catalog/Cargo/boombox.ymlResources/Prototypes/_Ganimed/Entities/Objects/Devices/boombox.ymlResources/Prototypes/_Ganimed/Entities/Structures/Storage/Crates/boombox.ymlResources/Prototypes/_Ganimed/Loadouts/Jobs/Civilian/musician.ymlResources/Textures/_Ganimed/Objects/Devices/boombox.rsi/meta.json
📜 Review details
⏰ Context from checks skipped due to timeout. (5)
- GitHub Check: check-maps
- GitHub Check: Test Packaging
- GitHub Check: build (ubuntu-latest)
- GitHub Check: YAML Linter
- GitHub Check: YAML map schema validator
🧰 Additional context used
🧠 Learnings (2)
📚 Learning: 2026-01-28T21:02:49.548Z
Learnt from: HyperB1
Repo: ss14-ganimed/Ganimed14 PR: 350
File: Resources/Locale/en-US/_Harmony/game-ticking/game-presets/preset-conspirator.ftl:14-14
Timestamp: 2026-01-28T21:02:49.548Z
Learning: Verify that locale FTl files under Resources/Locale maintain consistency with control keycodes. If a fork modifies a keycode (e.g., 'o' → 'г' in radio_channels.yml for a specific channel), the English (en-US) locale should be updated to reflect the intended behavior or explicitly document the exception. Ensure the English instruction uses the same keycode as the default/original behavior unless the fork’s logic requires a deliberate change, to avoid localization discrepancies.
Applied to files:
Resources/Locale/ru-RU/_Ganimed/boombox.ftlResources/Locale/en-US/_Ganimed/boombox.ftl
📚 Learning: 2026-04-24T02:25:23.374Z
Learnt from: HyperB1
Repo: ss14-ganimed/Ganimed14 PR: 287
File: Resources/Prototypes/Roles/Jobs/Wildcards/psychologist.yml:0-0
Timestamp: 2026-04-24T02:25:23.374Z
Learning: In the SS14 (Ganimed14) loadout config YAML files, `loadoutGroup.minLimit` defaults to `1` when not explicitly set. During code review, treat loadout groups as mandatory-by-default: if a `startingGear` item is replaced with a corresponding `loadoutGroup` entry and that group does not set `minLimit` explicitly, it will still require at least one item to be spawned (so players should not spawn without the required gear item). Only flag spawn/starting-gear removal risks if the target `loadoutGroup` sets `minLimit` to `0` (or otherwise permits empty selection) or the mapping to the loadout group is incorrect.
Applied to files:
Resources/Prototypes/Loadouts/loadout_groups.yml
🔇 Additional comments (12)
Content.Client/Audio/Jukebox/JukeboxBoundUserInterface.cs (2)
1-6: LGTM!
29-33: LGTM!Resources/Locale/en-US/_Ganimed/boombox.ftl (1)
1-1: LGTM!Resources/Locale/ru-RU/_Ganimed/boombox.ftl (1)
1-1: LGTM!Resources/Prototypes/_Ganimed/Entities/Structures/Storage/Crates/boombox.yml (1)
1-9: LGTM!Resources/Prototypes/_Ganimed/Catalog/Cargo/boombox.yml (1)
1-9: LGTM!Resources/Prototypes/_Ganimed/Loadouts/Jobs/Civilian/musician.yml (1)
20-32: LGTM!Resources/Prototypes/Loadouts/loadout_groups.yml (1)
953-953: LGTM!Resources/Textures/_Ganimed/Objects/Devices/boombox.rsi/meta.json (1)
1-28: LGTM!Content.Shared/_Ganimed/Boombox/BoomboxComponent.cs (1)
5-14: LGTM!Content.Server/_Ganimed/Boombox/BoomboxSystem.cs (1)
18-18: 🎯 Functional CorrectnessAPI для
PowerCellкорректен.
Content.Shared/PowerCell/SharedPowerCellSystem.csопределяетSharedPowerCellSystemи методSetDrawEnabled; изменения не нужны.> Likely an incorrect or invalid review comment.Resources/Prototypes/_Ganimed/Entities/Objects/Devices/boombox.yml (1)
31-33: 🎯 Functional CorrectnessНалог изменений не нужен.
Прототип
PowerCellDrawиспользуетdrawRate, а системный код применяетSetDrawEnabled, что соответствует текущему APIPowerCell.> Likely an incorrect or invalid review comment.
|
До апстрима не принимать. |
|
Замечание CodeRabbit исправлено: расход батареи включается только если выбрана песня (JukeboxComponent.SelectedSongId), иначе трек не запустится, а батарея не тратится. |
|
Ни у кого нет 100 часов на музыканте, лучше подобрать более вменяемое число. |
|
Предлагаю поставить время столько же, сколько на суперсинтезатор. |
|
Спасибо! |






Описание PR
Добавлен переносной бумбокс на базе системы музыкального автомата: тот же список треков и окно управления (play/pause/stop, громкость, повтор), но предмет можно носить в руках, ставить на пол и убирать в рюкзак.
Работает от батарейки: заряд тратится только пока играет музыка, при пустой или вынутой батарейке воспроизведение останавливается, без заряда окно не открывается. Дальность звука и каталог треков те же, что у музыкального автомата.
Бумбокс доступен в карго (категория Fun) и в лодауте музыкантов с 100+ часами игры за профессию.
Технические детали
Boombox(BaseItem):Jukebox+PowerCellSlot(стартовая PowerCellMedium) +PowerCellDraw(drawRate 1, useRate 5) +ActivatableUI+ActivatableUIRequiresPowerCell.BoomboxComponent(маркер) иBoomboxSystemвContent.*/_Ganimed/Boombox/: включают расход батарейки при play, выключают при pause/stop, останавливают музыку при опустошении или извлечении ячейки.Ganimed-Edit: у бумбокса свой заголовок окна (boombox-menu-title), стационарный автомат не затронут.Textures/_Ganimed/Objects/Devices/boombox.rsi(CC0-1.0, автор Boomer), состояния icon/on/off/inhand.BoomboxLoadoutдобавлен в группу Instruments (требование: 100 часов за музыканта).Медиа
Скриншоты добавлю отдельным комментом.
Чек-лист
Список изменений
🆑