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]
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;
}

View File

@@ -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<VisibilityComponent>(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<VisibilityComponent>(uid, out var visibility))