From 0a1485a99d74e72cf881e93976d30325a62207ed Mon Sep 17 00:00:00 2001 From: Nemanja <98561806+EmoGarbage404@users.noreply.github.com> Date: Fri, 30 Dec 2022 12:03:16 -0500 Subject: [PATCH] Fix possible error in artifact node generation (#13231) --- .../XenoArtifacts/ArtifactSystem.Nodes.cs | 13 ++++++------- 1 file changed, 6 insertions(+), 7 deletions(-) diff --git a/Content.Server/Xenoarchaeology/XenoArtifacts/ArtifactSystem.Nodes.cs b/Content.Server/Xenoarchaeology/XenoArtifacts/ArtifactSystem.Nodes.cs index 45ff20ac80..1712c7a218 100644 --- a/Content.Server/Xenoarchaeology/XenoArtifacts/ArtifactSystem.Nodes.cs +++ b/Content.Server/Xenoarchaeology/XenoArtifacts/ArtifactSystem.Nodes.cs @@ -81,29 +81,28 @@ public sealed partial class ArtifactSystem private ArtifactTriggerPrototype GetRandomTrigger(EntityUid artifact, ref ArtifactNode node) { - var allTriggers = _prototype.EnumeratePrototypes().ToList(); + var allTriggers = _prototype.EnumeratePrototypes() + .Where(x => (x.Whitelist?.IsValid(artifact, EntityManager) ?? true) && (!x.Blacklist?.IsValid(artifact, EntityManager) ?? true)).ToList(); var validDepth = allTriggers.Select(x => x.TargetDepth).Distinct().ToList(); var weights = GetDepthWeights(validDepth, node.Depth); var selectedRandomTargetDepth = GetRandomTargetDepth(weights); var targetTriggers = allTriggers - .Where(x => x.TargetDepth == selectedRandomTargetDepth) - .Where(x => (x.Whitelist?.IsValid(artifact, EntityManager) ?? true) && (!x.Blacklist?.IsValid(artifact, EntityManager) ?? true)).ToList(); - + .Where(x => x.TargetDepth == selectedRandomTargetDepth).ToList(); return _random.Pick(targetTriggers); } private ArtifactEffectPrototype GetRandomEffect(EntityUid artifact, ref ArtifactNode node) { - var allEffects = _prototype.EnumeratePrototypes().ToList(); + var allEffects = _prototype.EnumeratePrototypes() + .Where(x => (x.Whitelist?.IsValid(artifact, EntityManager) ?? true) && (!x.Blacklist?.IsValid(artifact, EntityManager) ?? true)).ToList(); var validDepth = allEffects.Select(x => x.TargetDepth).Distinct().ToList(); var weights = GetDepthWeights(validDepth, node.Depth); var selectedRandomTargetDepth = GetRandomTargetDepth(weights); var targetEffects = allEffects - .Where(x => x.TargetDepth == selectedRandomTargetDepth) - .Where(x => (x.Whitelist?.IsValid(artifact, EntityManager) ?? true) && (!x.Blacklist?.IsValid(artifact, EntityManager) ?? true)).ToList(); + .Where(x => x.TargetDepth == selectedRandomTargetDepth).ToList(); return _random.Pick(targetEffects); }