Restriction Tag Expression
Context: HL Kit … Kit Reference … Tag Expression Types
The role of the Restriction tag expression is to further limit the set of things or picks that are made available for selection through a portal. It is always used in conjunction with a Candidate tag expression and ensures that an item is only ever added to a specific table a single time. The Restriction tag expression is tested against all objects that are valid candidates for selection. If any of those objects also satisfies the Restriction tag expression and already exists within the table, they are precluded from being added to the table a second time and dropped from the selection list. This makes it possible to limit the user to only add an item once without having to designate the thing as unique.
The Restriction tag expression is always applied against the pick/thing itself. The tag expression is compared against all of the tags possessed by the object. For picks, this includes the effects of all dynamically assigned and deleted tags. The Restriction tag expression is only invoked when the user triggers the portal to display the list of options to choose from. Consequently, the tags used for picks are the final set of tags after evaluation completes. This also means that picks can dynamically change their state and change whether they appear as valid choices within a given portal.
An excellent example of where the Restriction tag expression comes in handy is with the d20 System. In d20, spells may be memorized multiple times, so the spells cannot be designated as unique. However, a wizard's spellbook will only possess a single instance of each spell the wizard knows. A Restriction tag expression on the spellbook table ensures that spells are unique within the spellbook.