]> git.smokeofanarchy.ru Git - space-station-14.git/commitdiff
fix magnet trigger for artifacts (#21213)
authorNemanja <98561806+EmoGarbage404@users.noreply.github.com>
Tue, 24 Oct 2023 06:18:46 +0000 (02:18 -0400)
committerGitHub <noreply@github.com>
Tue, 24 Oct 2023 06:18:46 +0000 (17:18 +1100)
Content.Server/Xenoarchaeology/XenoArtifacts/Triggers/Systems/ArtifactMagnetTriggerSystem.cs

index 0220c2ce1aeb0ba01fbd4168d6c53097dd747cba..f51d617df85aef613abca4147b60eff7367665b4 100644 (file)
@@ -6,7 +6,7 @@ using Content.Shared.Clothing;
 namespace Content.Server.Xenoarchaeology.XenoArtifacts.Triggers.Systems;
 
 /// <summary>
-/// This handles...
+/// This handles artifacts that are activated by magnets, both salvage and magboots.
 /// </summary>
 public sealed class ArtifactMagnetTriggerSystem : EntitySystem
 {
@@ -22,20 +22,20 @@ public sealed class ArtifactMagnetTriggerSystem : EntitySystem
     {
         base.Update(frameTime);
 
-        var artifactQuery = EntityQuery<ArtifactMagnetTriggerComponent, TransformComponent>().ToHashSet();
-        if (!artifactQuery.Any())
+        if (!EntityQuery<ArtifactMagnetTriggerComponent>().Any())
             return;
 
         List<EntityUid> toActivate = new();
 
         //assume that there's more instruments than artifacts
         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)
                 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))
                     continue;
@@ -43,7 +43,7 @@ public sealed class ArtifactMagnetTriggerSystem : EntitySystem
                 if (distance > trigger.Range)
                     continue;
 
-                toActivate.Add(uid);
+                toActivate.Add(artifactUid);
             }
         }