using Content.Shared.EntityTable.EntitySelectors; using Robust.Shared.Prototypes; namespace Content.Shared.EntityTable.Conditions; /// /// Condition for checking that selector is not going to spawn entity that is marked in current context as excluded . /// Can be used to keep spawns unique (if no selector rolls more than 1). /// public sealed partial class ExcludeEntitiesFromContextCondition : EntityTableCondition { /// /// Context key used to track which entity prototypes should not be spawned. /// Value should be . /// public const string EntitiesToExclude = "EntitiesToExclude"; /// > protected override bool EvaluateImplementation( EntityTableSelector root, IEntityManager entMan, IPrototypeManager proto, EntityTableContext ctx ) { if (!ctx.TryGetData>(EntitiesToExclude, out var used)) return true; if (root is not EntSelector entSelector) return true; return !used.Contains(entSelector.Id); } }