public sealed class CompositeRequirementContextSeveral contexts asked as one, because a character's state is not one object.
Remarks
Doc 28's requirement example needs this to be true. [ Level >= 80, HasTag(Profession.Smithing), NotHasTag(State.InCombat), Currency.Gold >= 500 ] asks four questions of four owners: the level and the profession are a ProgressionState's, the combat state is a GameplaySubject's effects, and the currency is a durable row's. There is no single object that answers all four, and the alternative — one god context a game has to assemble and keep current — is the thing that makes "can I do this" bespoke again.
⚠ First answer wins for a value; any context suffices for a tag. A value is a fact about one owner, so the order the contexts were given decides who is authoritative when two claim the same name — which is why the order is the caller's. A tag is not owned by anybody: having State.InCombat from an effect and having it from a zone rule are the same fact to a rule.
Fields and properties (1)
public int CountHow many contexts it asks.
Methods (3)
public CompositeRequirementContext(params IRequirementContext?[] contexts)Asks these, in this order.
public bool HasTag(GameplayTagRange range)Whether the subject has anything under a prefix.
public bool TryGetValue(AttributeId subject, out float value)A number the subject can be asked for.
Used by (2)
- CollectionRecordVixen.Gameplay.Collections
- EventBusTestsVixen.Gameplay.Quests.Tests