fix magnet trigger for artifacts (#21213)

This commit is contained in:
Nemanja
2023-10-24 02:18:46 -04:00
committed by GitHub
parent 0e0ac5fcc5
commit ddf1fd98ff

View File

@@ -6,7 +6,7 @@ using Content.Shared.Clothing;
namespace Content.Server.Xenoarchaeology.XenoArtifacts.Triggers.Systems; namespace Content.Server.Xenoarchaeology.XenoArtifacts.Triggers.Systems;
/// <summary> /// <summary>
/// This handles... /// This handles artifacts that are activated by magnets, both salvage and magboots.
/// </summary> /// </summary>
public sealed class ArtifactMagnetTriggerSystem : EntitySystem public sealed class ArtifactMagnetTriggerSystem : EntitySystem
{ {
@@ -22,20 +22,20 @@ public sealed class ArtifactMagnetTriggerSystem : EntitySystem
{ {
base.Update(frameTime); base.Update(frameTime);
var artifactQuery = EntityQuery<ArtifactMagnetTriggerComponent, TransformComponent>().ToHashSet(); if (!EntityQuery<ArtifactMagnetTriggerComponent>().Any())
if (!artifactQuery.Any())
return; return;
List<EntityUid> toActivate = new(); List<EntityUid> toActivate = new();
//assume that there's more instruments than artifacts //assume that there's more instruments than artifacts
var query = EntityQueryEnumerator<MagbootsComponent, TransformComponent>(); var query = EntityQueryEnumerator<MagbootsComponent, TransformComponent>();
while (query.MoveNext(out var uid, out var magboot, out var magXform)) while (query.MoveNext(out _, out var magboot, out var magXform))
{ {
if (!magboot.On) if (!magboot.On)
continue; continue;
foreach (var (trigger, xform) in artifactQuery) var artiQuery = EntityQueryEnumerator<ArtifactMagnetTriggerComponent, TransformComponent>();
while (artiQuery.MoveNext(out var artifactUid, out var trigger, out var xform))
{ {
if (!magXform.Coordinates.TryDistance(EntityManager, xform.Coordinates, out var distance)) if (!magXform.Coordinates.TryDistance(EntityManager, xform.Coordinates, out var distance))
continue; continue;
@@ -43,7 +43,7 @@ public sealed class ArtifactMagnetTriggerSystem : EntitySystem
if (distance > trigger.Range) if (distance > trigger.Range)
continue; continue;
toActivate.Add(uid); toActivate.Add(artifactUid);
} }
} }