fix: способность фантома не убирает его полёт по окончанию

This commit is contained in:
Remuchi
2024-04-17 13:46:55 +07:00
parent 69d7ec9438
commit 6efdbba72b
2 changed files with 18 additions and 8 deletions

View File

@@ -1,8 +1,15 @@
namespace Content.Server._White.IncorporealSystem; using Content.Shared.Physics;
namespace Content.Server._White.IncorporealSystem;
[RegisterComponent] [RegisterComponent]
public sealed partial class IncorporealComponent : Component public sealed partial class IncorporealComponent : Component
{ {
[DataField("movementSpeedBuff")] [DataField] public float MovementSpeedBuff = 1.5f;
public float MovementSpeedBuff = 1.5f;
} [DataField] public int CollisionMask = (int) CollisionGroup.GhostImpassable;
[DataField] public int CollisionLayer = 0;
public int StoredMask;
public int StoredLayer;
}

View File

@@ -31,8 +31,11 @@ public sealed class IncorporealSystem : EntitySystem
{ {
var fixture = fixtures.Fixtures.First(); var fixture = fixtures.Fixtures.First();
_physics.SetCollisionMask(uid, fixture.Key, fixture.Value, (int) CollisionGroup.GhostImpassable, fixtures); component.StoredMask = fixture.Value.CollisionMask;
_physics.SetCollisionLayer(uid, fixture.Key, fixture.Value, 0, fixtures); 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<VisibilityComponent>(uid, out var visibility)) if (TryComp<VisibilityComponent>(uid, out var visibility))
@@ -54,8 +57,8 @@ public sealed class IncorporealSystem : EntitySystem
{ {
var fixture = fixtures.Fixtures.First(); var fixture = fixtures.Fixtures.First();
_physics.SetCollisionMask(uid, fixture.Key, fixture.Value, (int) (CollisionGroup.MobMask | CollisionGroup.GhostImpassable), fixtures); _physics.SetCollisionMask(uid, fixture.Key, fixture.Value, component.StoredMask, fixtures);
_physics.SetCollisionLayer(uid, fixture.Key, fixture.Value, (int) CollisionGroup.MobLayer, fixtures); _physics.SetCollisionLayer(uid, fixture.Key, fixture.Value, component.StoredLayer, fixtures);
} }
if (TryComp<VisibilityComponent>(uid, out var visibility)) if (TryComp<VisibilityComponent>(uid, out var visibility))