using System.Linq; using Robust.Shared.Serialization; namespace Content.Shared.InteractionVerbs.Requirements; /// /// A requirement that combines multiple other requirements. /// [Serializable, NetSerializable] public sealed partial class ComplexRequirement : InteractionRequirement { [DataField] public List Requirements = new(); /// /// If true, all requirements must pass (boolean and). Otherwise, at least one must pass (boolean or). /// [DataField] public bool RequireAll = true; public override bool IsMet(InteractionArgs args, InteractionVerbPrototype proto, InteractionAction.VerbDependencies deps) { return RequireAll ? Requirements.All(r => r.IsMet(args, proto, deps)) : Requirements.Any(r => r.IsMet(args, proto, deps)); } }