[PORT] Adiciona a cápsula de assalto dos Agentes Nucleares#842
[PORT] Adiciona a cápsula de assalto dos Agentes Nucleares#842Struater wants to merge 56 commits into
Conversation
WalkthroughO PR adiciona um sistema completo de lançamento de drop pods por beacons, incluindo contratos compartilhados, console cliente, validações e impactos no servidor, integração com estações, mapas, protótipos, recursos visuais, áudio e traduções. ChangesLançamento direcionado de drop pods
Estimated code review effort: 5 (Critical) | ~120 minutes Sequence Diagram(s)sequenceDiagram
participant Operator
participant DropPodConsoleBui
participant DropPodConsoleSystem
participant NukeDropPod
participant StationGrid
Operator->>DropPodConsoleBui: seleciona beacon e pressiona deploy
DropPodConsoleBui->>DropPodConsoleSystem: envia DropPodConsoleDeployMessage
DropPodConsoleSystem->>NukeDropPod: valida alvo, custo e cooldown
DropPodConsoleSystem->>NukeDropPod: inicia FTL para coordenadas seguras
NukeDropPod->>StationGrid: chega, aplica impacto e mescla o grid
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: 5
🧹 Nitpick comments (2)
Content.Client/ADT/Shuttles/DropPodConsoleBui.cs (1)
102-103: 🚀 Performance & Scalability | 🔵 Trivial | 💤 Low value
RebuildBeaconList()é executado duas vezes por atualização de estado.
UpdateStatechamaRebuildBeaconList()na Line 102 e, em seguida,RefreshState()(Line 103) volta a chamá-lo na Line 304. A chamada da Line 102 é redundante.🤖 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 `@Content.Client/ADT/Shuttles/DropPodConsoleBui.cs` around lines 102 - 103, Remove the redundant RebuildBeaconList() call from UpdateState, leaving RefreshState() to perform the rebuild through its existing call. Preserve the surrounding state-update flow unchanged.Content.Server/ADT/Shuttles/DropPodConsoleSystem.cs (1)
469-513: 📐 Maintainability & Code Quality | 🔵 Trivial | ⚡ Quick winDuas fontes de verdade para o estado de guerra.
O bloqueio por guerra é avaliado duas vezes: nas Linhas 469-489 com base em
comp.WarDeclaredTimee nas Linhas 496-513 com base emnukeops.WarDeclaredTime. Os dois usam bases de tempo diferentes e podem divergir (comp.WarDeclaredTimesó é atualizado emOnWarDeclared/UpdateUiState, ficando potencialmente obsoleto em relação à regra Nukeops). Como o segundo bloco (496-513) já enforça o cooldown a partir da regra Nukeops — que também define o custo — o primeiro bloco é redundante. Considere manter apenas a checagem baseada emNukeopsRuleComponentcomo fonte única, eliminando o bloco 469-489.🤖 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 `@Content.Server/ADT/Shuttles/DropPodConsoleSystem.cs` around lines 469 - 513, Remove the initial war cooldown block that checks comp.WarDeclaredTime and computes warNukieArriveDelay before GetTcInSlot. Keep the later launchBlockedByWar check based on NukeopsRuleComponent.WarDeclaredTime and WarNukieArriveDelay as the sole war-state enforcement path.
🤖 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 `@Content.Client/ADT/Shuttles/DropPodConsoleBui.cs`:
- Around line 57-82: Remove the redundant nested _warStatusLabel null check in
the status-label update block, keeping a single guard around the existing
IsAtWar, WarCooldownRemaining, text, and FontColorOverride logic. Preserve the
current behavior and conditions inside the remaining guard.
In `@Content.Shared/ADT/Shuttles/Components/DropPodConsoleComponent.cs`:
- Around line 65-69: Atualize o comentário XML de WarCost para remover
“discounted” e descrever corretamente que o custo de lançamento durante a guerra
é maior que o custo em tempos de paz, mantendo o valor e os atributos existentes
inalterados.
In `@Resources/Locale/en-US/ADT/ui/drop-pod-console.ftl`:
- Line 17: Adicione a chave de tradução drop-pod-console-war-ready em
Resources/Locale/en-US/ADT/ui/drop-pod-console.ftl nas linhas 17-17, com a
tradução em inglês correspondente, e em
Resources/Locale/ru-RU/ADT/ui/drop-pod-console.ftl nas linhas 17-17, com a
tradução em russo correspondente.
In `@Resources/Maps/ADTMaps/Nonstation/nukeplanet_adt.yml`:
- Around line 11006-11025: Remova as entidades de construção duplicadas,
mantendo apenas uma por posição: em
Resources/Maps/ADTMaps/Nonstation/nukeplanet_adt.yml:11006-11025, preserve uma
Grille entre os uids 1736-1739; em :14098-14102, remova uma das WallPlastitanium
2224/2225; em :14119-14127, remova uma das WallPlastitanium 2229/2230; e em
Resources/Maps/Shuttles/infiltrator.yml:1124-1133, remova uma das
CableApcExtension 83/84.
In
`@Resources/Prototypes/ADT/Entities/Structures/Machines/Computers/drop_pod_console.yml`:
- Around line 44-51: Remove the duplicate DefaultStationBeaconNuclear entry from
the beaconBlacklist in the drop pod console configuration, keeping the existing
single entry and leaving the surrounding blacklist entries unchanged.
---
Nitpick comments:
In `@Content.Client/ADT/Shuttles/DropPodConsoleBui.cs`:
- Around line 102-103: Remove the redundant RebuildBeaconList() call from
UpdateState, leaving RefreshState() to perform the rebuild through its existing
call. Preserve the surrounding state-update flow unchanged.
In `@Content.Server/ADT/Shuttles/DropPodConsoleSystem.cs`:
- Around line 469-513: Remove the initial war cooldown block that checks
comp.WarDeclaredTime and computes warNukieArriveDelay before GetTcInSlot. Keep
the later launchBlockedByWar check based on NukeopsRuleComponent.WarDeclaredTime
and WarNukieArriveDelay as the sole war-state enforcement 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: Repository UI
Review profile: CHILL
Plan: Pro
Run ID: 8ad8a722-c893-4c07-8c8b-2596dfd18075
⛔ Files ignored due to path filters (10)
Resources/Audio/_Dumont/Eventos/Droppod/alpha_predator.oggis excluded by!**/*.oggResources/Audio/_Dumont/Eventos/Droppod/colliding_stars.oggis excluded by!**/*.oggResources/Audio/_Dumont/Eventos/Droppod/corporate_rats.oggis excluded by!**/*.oggResources/Audio/_Dumont/Eventos/Droppod/frontal_attack.oggis excluded by!**/*.oggResources/Audio/_Dumont/Eventos/Droppod/razormind.oggis excluded by!**/*.oggResources/Audio/_Dumont/Eventos/Droppod/shots_fired.oggis excluded by!**/*.oggResources/Audio/_Dumont/Eventos/Droppod/the_insurgency's_end.oggis excluded by!**/*.oggResources/Textures/ADT/Effects/droppod_target.rsi/targeting.pngis excluded by!**/*.pngResources/Textures/Structures/Machines/computers.rsi/request-syndie.pngis excluded by!**/*.pngResources/Textures/Structures/Machines/computers.rsi/syndie_generic_keys.pngis excluded by!**/*.png
📒 Files selected for processing (32)
Content.Client/ADT/Shuttles/DropPodConsoleBui.csContent.Client/ADT/Shuttles/DropPodNavMapControl.csContent.IntegrationTests/Tests/PrototypeSaveTest.csContent.Server/ADT/Shuttles/DropPodConsoleSystem.csContent.Server/Destructible/Thresholds/Behaviors/SpawnEntitiesBehavior.csContent.Shared/ADT/Shuttles/Components/DropPodBeaconInfo.csContent.Shared/ADT/Shuttles/Components/DropPodConsoleBuiState.csContent.Shared/ADT/Shuttles/Components/DropPodConsoleComponent.csContent.Shared/ADT/Shuttles/Components/DropPodConsoleDeployMessage.csContent.Shared/ADT/Shuttles/Components/DropPodTargetStationComponent.csContent.Shared/ADT/Shuttles/Components/DropPodWarSyncEvent.csContent.Shared/ADT/Shuttles/Components/NukeDropPodComponent.csContent.Shared/Destructible/DroppodSuppressedComponent.csResources/Audio/_Dumont/Eventos/Droppod/attributions.ymlResources/Locale/en-US/ADT/ui/drop-pod-console.ftlResources/Locale/pt-BR/_Dumont/ui/drop-pod-console.ftlResources/Locale/pt-BR/communications/communications-console-component.ftlResources/Locale/pt-BR/nukeops/war-declarator.ftlResources/Locale/ru-RU/ADT/drop-pode-console.ftlResources/Locale/ru-RU/ADT/ui/drop-pod-console.ftlResources/Maps/ADTMaps/Nonstation/nukeplanet_adt.ymlResources/Maps/ADTMaps/Shuttles/nuke_dropod.ymlResources/Maps/Shuttles/infiltrator.ymlResources/Maps/_Dumont/Nonstations/nukieplanet.ymlResources/Prototypes/ADT/Entities/Effects/droppod_target.ymlResources/Prototypes/ADT/Entities/Stations/base.ymlResources/Prototypes/ADT/Entities/Structures/Machines/Computers/drop_pod_console.ymlResources/Prototypes/Entities/Stations/nanotrasen.ymlResources/Prototypes/GameRules/roundstart.ymlResources/Prototypes/_Dumont/Audio/drop_pod_music.ymlResources/Textures/ADT/Effects/droppod_target.rsi/meta.jsonResources/Textures/Structures/Machines/computers.rsi/meta.json



Sobre a PR
Adiciona o Pod de Assalto dos Agentes Nucleares do SS13
200 TC para ser usado em tempos de paz e 300 em guerra
Por quê? / Balanceamento
AdventureTimeSS14/space_station_ADT#2837
Detalhes Técnicos
Anexos
Requerimentos
Changelog
🆑 Struater