More artifact effects (#13300)

This commit is contained in:
Kara
2023-01-03 17:13:10 -06:00
committed by GitHub
parent bd9d744682
commit b170b823eb
12 changed files with 168 additions and 4 deletions

View File

@@ -0,0 +1,10 @@
namespace Content.Server.Xenoarchaeology.XenoArtifacts.Effects.Components;
/// <summary>
/// Removes the masks/layers of hard fixtures from the artifact when added, allowing it to pass through walls
/// and such.
/// </summary>
[RegisterComponent]
public sealed class ClearFixturesArtifactComponent : Component
{
}

View File

@@ -0,0 +1,36 @@
using Content.Server.Xenoarchaeology.XenoArtifacts.Effects.Components;
using Content.Server.Xenoarchaeology.XenoArtifacts.Events;
using Content.Shared.Physics;
using Robust.Shared.Physics;
using Robust.Shared.Physics.Dynamics;
namespace Content.Server.Xenoarchaeology.XenoArtifacts.Effects.Systems;
/// <summary>
/// Handles allowing activated artifacts to phase through walls.
/// </summary>
public sealed class ClearFixturesArtifactSystem : EntitySystem
{
/// <inheritdoc/>
public override void Initialize()
{
base.Initialize();
SubscribeLocalEvent<ClearFixturesArtifactComponent, ArtifactActivatedEvent>(OnActivate);
}
private void OnActivate(EntityUid uid, ClearFixturesArtifactComponent component, ArtifactActivatedEvent args)
{
if (!TryComp<FixturesComponent>(uid, out var fixtures))
return;
foreach (var (_, fixture) in fixtures.Fixtures)
{
if (!fixture.Hard)
continue;
fixture.CollisionLayer = (int) CollisionGroup.None;
fixture.CollisionMask = (int) CollisionGroup.None;
}
}
}