diff --git a/Content.Server/_White/IncorporealSystem/IncorporealComponent.cs b/Content.Server/_White/IncorporealSystem/IncorporealComponent.cs index 20ad3856fd..aa2eba7a8e 100644 --- a/Content.Server/_White/IncorporealSystem/IncorporealComponent.cs +++ b/Content.Server/_White/IncorporealSystem/IncorporealComponent.cs @@ -1,8 +1,15 @@ -namespace Content.Server._White.IncorporealSystem; +using Content.Shared.Physics; + +namespace Content.Server._White.IncorporealSystem; [RegisterComponent] public sealed partial class IncorporealComponent : Component { - [DataField("movementSpeedBuff")] - public float MovementSpeedBuff = 1.5f; -} + [DataField] public float MovementSpeedBuff = 1.5f; + + [DataField] public int CollisionMask = (int) CollisionGroup.GhostImpassable; + [DataField] public int CollisionLayer = 0; + + public int StoredMask; + public int StoredLayer; +} \ No newline at end of file diff --git a/Content.Server/_White/IncorporealSystem/IncorporealSystem.cs b/Content.Server/_White/IncorporealSystem/IncorporealSystem.cs index 50839db10d..637342cb7c 100644 --- a/Content.Server/_White/IncorporealSystem/IncorporealSystem.cs +++ b/Content.Server/_White/IncorporealSystem/IncorporealSystem.cs @@ -31,8 +31,11 @@ public sealed class IncorporealSystem : EntitySystem { var fixture = fixtures.Fixtures.First(); - _physics.SetCollisionMask(uid, fixture.Key, fixture.Value, (int) CollisionGroup.GhostImpassable, fixtures); - _physics.SetCollisionLayer(uid, fixture.Key, fixture.Value, 0, fixtures); + component.StoredMask = fixture.Value.CollisionMask; + component.StoredLayer = fixture.Value.CollisionLayer; + + _physics.SetCollisionMask(uid, fixture.Key, fixture.Value, component.CollisionMask, fixtures); + _physics.SetCollisionLayer(uid, fixture.Key, fixture.Value, component.CollisionLayer, fixtures); } if (TryComp(uid, out var visibility)) @@ -54,8 +57,8 @@ public sealed class IncorporealSystem : EntitySystem { var fixture = fixtures.Fixtures.First(); - _physics.SetCollisionMask(uid, fixture.Key, fixture.Value, (int) (CollisionGroup.MobMask | CollisionGroup.GhostImpassable), fixtures); - _physics.SetCollisionLayer(uid, fixture.Key, fixture.Value, (int) CollisionGroup.MobLayer, fixtures); + _physics.SetCollisionMask(uid, fixture.Key, fixture.Value, component.StoredMask, fixtures); + _physics.SetCollisionLayer(uid, fixture.Key, fixture.Value, component.StoredLayer, fixtures); } if (TryComp(uid, out var visibility))