PhasingArtifactSystem.cs 1.1 KB

123456789101112131415161718192021222324252627282930313233343536
  1. using Content.Server.Xenoarchaeology.XenoArtifacts.Effects.Components;
  2. using Content.Server.Xenoarchaeology.XenoArtifacts.Events;
  3. using Content.Shared.Physics;
  4. using Robust.Shared.Physics;
  5. using Robust.Shared.Physics.Components;
  6. using Robust.Shared.Physics.Dynamics;
  7. using Robust.Shared.Physics.Systems;
  8. namespace Content.Server.Xenoarchaeology.XenoArtifacts.Effects.Systems;
  9. /// <summary>
  10. /// Handles allowing activated artifacts to phase through walls.
  11. /// </summary>
  12. public sealed class PhasingArtifactSystem : EntitySystem
  13. {
  14. [Dependency] private readonly SharedPhysicsSystem _physics = default!;
  15. /// <inheritdoc/>
  16. public override void Initialize()
  17. {
  18. base.Initialize();
  19. SubscribeLocalEvent<PhasingArtifactComponent, ArtifactActivatedEvent>(OnActivate);
  20. }
  21. private void OnActivate(EntityUid uid, PhasingArtifactComponent component, ArtifactActivatedEvent args)
  22. {
  23. if (!TryComp<FixturesComponent>(uid, out var fixtures))
  24. return;
  25. foreach (var fixture in fixtures.Fixtures.Values)
  26. {
  27. _physics.SetHard(uid, fixture, false, fixtures);
  28. }
  29. }
  30. }