From 6efdbba72bef52aafd2124cc125d0fc8504c9080 Mon Sep 17 00:00:00 2001 From: Remuchi Date: Wed, 17 Apr 2024 13:46:55 +0700 Subject: [PATCH] =?UTF-8?q?fix:=20=D1=81=D0=BF=D0=BE=D1=81=D0=BE=D0=B1?= =?UTF-8?q?=D0=BD=D0=BE=D1=81=D1=82=D1=8C=20=D1=84=D0=B0=D0=BD=D1=82=D0=BE?= =?UTF-8?q?=D0=BC=D0=B0=20=D0=BD=D0=B5=20=D1=83=D0=B1=D0=B8=D1=80=D0=B0?= =?UTF-8?q?=D0=B5=D1=82=20=D0=B5=D0=B3=D0=BE=20=D0=BF=D0=BE=D0=BB=D1=91?= =?UTF-8?q?=D1=82=20=D0=BF=D0=BE=20=D0=BE=D0=BA=D0=BE=D0=BD=D1=87=D0=B0?= =?UTF-8?q?=D0=BD=D0=B8=D1=8E?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../IncorporealSystem/IncorporealComponent.cs | 15 +++++++++++---- .../_White/IncorporealSystem/IncorporealSystem.cs | 11 +++++++---- 2 files changed, 18 insertions(+), 8 deletions(-) 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))