Attributes

If Objects are the core of the MysteryMachine scheme , then attributes are the workhorse. Attributes contain all the text and data which pulls a MysteryMachine System together.

Attributes have an informal type system ( this may change -see TypeSystem) and a structure all to themselves inside MysteryMachine.

For the most part attributes are the basic containers of the text which is used to create the documents which MysteryMachine generates, attributes are also the atomic unit of data reference in the system. Attributes are substituted into different contexts by the use of links..

Currently I have these different attribute types.
  1. Relationship. (Not currently implemented)

    A relationship attribute defines a type of link between other Objects in the System, uniquely a relationship attribute is an Object in it's own right. Technically Relationships should probably be a Category in their own right. Currently however they are a special case.

  2. Reference.

    A reference attribute is a reference to one of the other Objects in the system. This can be useful with say items cards or similar to specify which character they start the game with.

  3. BasicText.

    This type is formatted text, including substitutions of text from other attributes.

  4. WARNING: `ExtendedText`:trac: is not a valid TracLink
    
    . (Not currently implemented)

    This extension of basic text , is the same as the above but includes a set of changes made to the final substituted text of the attribute

This final type has the unique property that it can be made Invalid, that is the attribute is made to fail Validation by an edit of another attribute belonging to a the same or a different object. This although perhaps counter intuitive to the user, allows editing of data in the System to which may be included in multiple places in different forms (say via ExtendedText Attributes). MysteryMachine will be able to either apply the changes correctly, or flag up the problem (Validation failure) for the user to manually correct

(Developers see AttributeInternals )