fix: способность фантома не убирает его полёт по окончанию
This commit is contained in:
@@ -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;
|
||||||
|
}
|
||||||
@@ -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))
|
||||||
|
|||||||
Reference in New Issue
Block a user