6.19 PERMISSIONS

Our permissions system, which is, or will be, used in multiple places, allows one to specify exactly who can access something, or who is affected by something. For instance, the manse system (HELP MANSES) uses it to decide who can and cannot enter a manse.

The permissions are actually called 'boolean expressions', but don't let this scare you - all it means is that they are either true or false. A permission might look like this (capitalization unnecessary): RANK 10 OF ROARK. That permission would mean that people who are rank 10 in the Order of Roark pass the permissions test. You can also combine multiple permissions, to, for instance, let in everybody on your allies list, everybody from your guild, and everybody from your city higher than, say, rank 2.

To get even more elaborate, you can also use the 'not' modifier to take the opposite of a permission string when specifying whom to let in.

Once you have specified who is allowed in using the above, you can define exceptions to these rules using 'except' clauses. Exceptions only work to narrow down the list of people to whom you have granted permission, and if you have not granted explicit permission to anyone then exception clauses don't make sense.

An example of a set of permissions using everything you've learned so far could be:
NOT ENEMY
RANK 10 OF ROARK
NOT MEMBER OF CELEST
EXCEPT GUILDMASTER OF INFERNALS
EXCEPT NOT RANK 3 OF MAGNAGORA
EXCEPT ESTARRA

So, in total, the following would pass the permissions test:
  - People who aren't your enemies. (Note that this is most people.)
      OR
  - People who are rank 10 in Roark's order.
      OR
  - Everyone who is NOT a member of Celest.

It would prevent people from opening the door who matched one of the following, even if they pass the above tests:
  - The Guildmaster of the Infernals.
      OR
  - Less than city rank 3 in Magnagora.
      OR
  - Is the goddess Estarra.

Obviously this is a bit of a silly set of permissions, but it shows how elaborate you can get. The following are the specific permissions that you can use:

ANYONE
  - Allow anyone in. Useful in conjunction with 'except' clauses if all you
    want to do is exclude people. Grant permission to ANYONE and then define
    your exceptions.

<person>
  - A specific person.

ALLY
  - Your allies.

ENEMY
  - Your enemies.

MEMBER OF <organization>
  - A member of an organization, including clans, guilds, orders, cities,
    communes, etc.

ENEMY OF <organization>
  - An enemy of an organization.

COUNCIL_MEMBER OF <organization>
  - A member of the ruling council of a city or commune.

SECRETARY OF <guild>
  - Any member of the guild with the 'ledger' privilege.
    See HELP GUILDPRIVILEGE for details.

LEADER/GUILDMASTER OF <organization>
  - A city leader, a Guildmaster, or the leader of a clan.

RANK <x> OF <organization>
  - At least rank <x> in cities, communes, guilds, or orders.

<ministry> OF <organization>
  - A minister of a city/commune. For instance: SECURITY OF MAGNAGORA

<ministry>_AIDES OF <organization>
  - A minister and his/her aides. For instance: SECURITY_AIDES OF MAGNAGORA