Skip to content

Commit 850790a

Browse files
so like theoretically
1 parent 39138b4 commit 850790a

3 files changed

Lines changed: 18 additions & 7 deletions

File tree

Content.Client/Atmos/EntitySystems/AtmosPipeAppearanceSystem.cs

Lines changed: 8 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
1+
using System.Linq;
12
using Content.Client.SubFloor;
23
using Content.Shared.Atmos;
34
using Content.Shared.Atmos.Components;
@@ -30,7 +31,11 @@ private void OnInit(EntityUid uid, PipeAppearanceComponent component, ComponentI
3031
var numberOfPipeLayers = GetNumberOfPipeLayers(uid, out _);
3132

3233
// Starlight START
33-
_sprite.LayerMapTryGet((uid, sprite), PipeVisualLayers.Pipe, out var pipeIndex, false);
34+
// Prefer inserting the generated connections directly after the main pipe layer. If a prototype does not
35+
// have one, fall back to appending them like LayerMapReserve would instead of using an invalid layer index.
36+
var insertionIndex = sprite.AllLayers.Count();
37+
if (_sprite.LayerMapTryGet((uid, sprite), PipeVisualLayers.Pipe, out var pipeIndex, false))
38+
insertionIndex = pipeIndex + 1;
3439
// Starlight END
3540

3641
foreach (var layerKey in Enum.GetValues<PipeConnectionLayer>())
@@ -40,10 +45,10 @@ private void OnInit(EntityUid uid, PipeAppearanceComponent component, ComponentI
4045
var layerName = layerKey.ToString() + i.ToString();
4146

4247
// Starlight START
43-
// The generated layer should go directly after the main pipe layer, not at the end, hence the pipeIndex+1.
48+
// The generated layer should go directly after the main pipe layer when it exists, not at the end.
4449
if (!_sprite.LayerMapTryGet((uid, sprite), layerName, out var layer, false))
4550
{
46-
layer = pipeIndex + 1;
51+
layer = insertionIndex;
4752
_sprite.AddBlankLayer((uid, sprite), layer);
4853
_sprite.LayerMapSet((uid, sprite), layerName, layer);
4954
}

Resources/Prototypes/Entities/Structures/Piping/Atmospherics/unary.yml

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -222,6 +222,10 @@
222222
placement:
223223
mode: AlignAtmosPipeLayers # starlight
224224
components:
225+
# Starlight start
226+
- type: SandboxCopyOverride
227+
override: GasOutletInjector
228+
# Starlight end
225229
- type: Sprite
226230
drawdepth: FloorObjects
227231
sprite: _Carpmosia/Structures/Piping/Atmospherics/outletinjector.rsi # Carpmosia-edit - 5 pipe layers
@@ -491,6 +495,10 @@
491495
placement:
492496
mode: SnapgridCenter
493497
components:
498+
# Starlight start
499+
- type: SandboxCopyOverride
500+
override: BaseGasCondenser
501+
# Starlight end
494502
- type: Sprite
495503
sprite: Structures/Piping/Atmospherics/condenser.rsi
496504
snapCardinals: true

Resources/Prototypes/_Starlight/Partials/Entities/Structures/Piping/Atmospherics/unary.yml

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -4,17 +4,15 @@
44
- GasVentPump
55
- GasPassiveVent
66
- GasVentScrubber
7-
- GasOutletInjector
7+
# GasOutletInjector and BaseGasCondenser define this component inline instead.
8+
# Adding it through a partial would replace their first component, Sprite, due to index-based sequence merging.
89
- GasThermoMachineFreezer
910
- GasThermoMachineFreezerEnabled
1011
- GasThermoMachineHeater
1112
- GasThermoMachineHeaterEnabled
1213
- GasThermoMachineHellfireFreezer
1314
- GasThermoMachineHellfireHeater
14-
- BaseGasCondenser
1515
components:
1616
- type: SandboxCopyOverride
1717
override: !type:CreateVariants
1818
values: *protos
19-
20-

0 commit comments

Comments
 (0)