DM4 §A1: Library attributes

## §A1 Library attributes

`absent`
  A ‘floating object’ (one with a `found_in` property, which can appear in many different rooms) which is `absent` will in future no longer appear in the game. Note that you cannot make a floating object disappear merely by giving it `absent`, but must explicitly `remove` it as well.
`animate`
  “Is alive (human or animal).” Can be spoken to in “richard, hello” style; matches the `creature` token in grammar; picks up “him” or “her” (according to gender) rather than “it”, likewise “his”; an object the player is changed into becomes `animate`; some messages read “on whom”, etc., instead of “on which”; can't be taken; its subobjects “belong to” it rather than “are part of” it; messages don't assume it can be “touched” or “squeezed” as an ordinary object can; the actions `Attack`, `ThrowAt` are diverted to `life` rather than rejected as being ‘futile violence’.
`clothing`
  “Can be worn.”
`concealed`
  “Concealed from view but present.” The player object has this; an object which was the player until `ChangePlayer` happened loses this property; a `concealed door` can't be entered; does not appear in room descriptions.
`container`
  Affects scope and light; object lists recurse through it if `open` (or `transparent`); may be described as closed, open, locked, empty; a possession will give it a `LetGo` action if the player tries to remove it, or a `Receive` if something is put in; things can be taken or removed from it, or inserted into it, but only if it is `open`; likewise for “transfer” and “empty”; room descriptions describe using `when_open` or `when_closed` if given; if there is no defined description, an `Examine` causes the contents to be searched (i.e. written out) rather than a message “You see nothing special about…”; `Search` only reveals the contents of containers, otherwise saying “You find nothing”. Note: an object cannot be both a `container` and a `supporter`.
`door`
  “Is a door or bridge.” Room descriptions describe using `when_open` or `when_closed` if given; and an `Enter` action becomes a `Go` action. If a `Go` has to go through this object, then: if `concealed`, the player “can't go that way”; if not `open`, then the player is told either that this cannot be ascended or descended (if the player tried “up” or “down”), or that it is in the way (otherwise); but if neither, then its `door_to` property is consulted to see where it leads; finally, if this is zero, then it is said to “lead nowhere” and otherwise the player actually moves to the location.
`edible`
  “Can be eaten” (and thus removed from game).
`enterable`
  Affects scope and light; only an `enterable` on the floor can be entered. If an `enterable` is also a `container` then it can only be entered or exited if it is `open`.
`female`
  This object has a feminine name. In games written in English, this makes her a female person, though in other languages it might be inanimate. The parser uses this information when considering pronouns like “her”. (In English, anything `animate` is assumed to be male unless `female` or `neuter` is set.)
`general`
  A general-purpose attribute, defined by the library but never looked at or altered by it. Available for designers to use if they choose to do so.
`light`
  “Is giving off light.” (See §19.) Also: the parser understands “lit”, “lighted”, “unlit” using this; inventories will say “(providing light)” of it, and so will room descriptions if the current `location` is ordinarily dark; it will never be automatically put away into the player's `SACK_OBJECT`, as it might plausibly be inflammable or the main light source.
`lockable`
  Can be locked or unlocked by a player holding its key object, which is given by the property `with_key`; if a `container` and also `locked`, may be called “locked” in inventories.
`locked`
  Can't be opened. If a `container` and also `lockable`, may be called “locked” in inventories.
`male`
  This object has a masculine name. In games written in English, this makes him a male person, though in other languages it might be inanimate. The parser uses this information when considering pronouns like “him”. (In English, anything `animate` is assumed to be male unless `female` or `neuter` is set.)
`moved`
  “Has been or is being held by the player.” Objects (immediately) owned by the player after `Initialise` has run are given it; at the end of each turn, if an item is newly held by the player and is `scored`, it is given `moved` and `OBJECT_SCORE` points are awarded; an object's `initial` message only appears in room descriptions if it is un`moved`.
`neuter`
  This object's name is neither masculine nor feminine. (In English, anything without `animate` is assumed neuter, because only people and higher animals have gender. Anything `animate` is assumed `male` unless `female` or `neuter` is set. A robot, for instance, might be an `animate` object worth making `neuter`.)
`on`
  “Switched on.” A `switchable` object with `on` is described by `with_on` in room descriptions; it will be called “switched on” by `Examine`.
`open`
  “Open door or container.” Affects scope and light; lists (such as inventories) recurse through an `open container`; if a `container`, called “open” by some descriptions; things can be taken or removed from an `open container`; similarly inserted, transferred or emptied. A `container` can only be entered or exited if it is both `enterable` and `open`. An `open door` can be entered. Described by `when_open` in room descriptions.
`openable`
  Can be opened or closed, unless `locked`.
`pluralname`
  This single object's name is in the plural. For instance, an object called “seedless grapes” should have `pluralname` set. The library will then use the pronoun “them” and the indefinite article “some” automatically.
`proper`
  Its short name is a proper noun, and never preceded by “the” or “The”. The player's object must have this (so something changed into will be given it).
`scenery`
  Not listed by the library in room descriptions; “not portable” to be taken; “you are unable to” pull, push, or turn it.
`scored`
  The player gets `OBJECT_SCORE` points for picking it up for the first time; or, if a room, `ROOM_SCORE` points for visiting it for the first time.
`static`
  “Fixed in place” if player tries to take, remove, pull, push or turn.
`supporter`
  “Things can be put on top of it.” Affects scope and light; object lists recurse through it; a possession will give it a `LetGo` action if the player tries to remove it, or a `Receive` if something is put in; things can be taken or removed from it, or put on it; likewise for transfers; a player inside it is said to be “on” rather than “in” it; room descriptions list its contents in separate paragraphs if it is itself listed. Note: an object cannot be both a `container` and a `supporter`.
`switchable`
  Can be switched on or off; listed as such by `Examine`; described using `when_on` or `when_off` in room descriptions.
`talkable`
  Player can talk to this object in “thing, do this” style. This is useful for microphones and the like, when `animate` is inappropriate.
`transparent`
  “Contents are visible.” Affects scope and light; a `transparent` container is treated as if it were `open` for printing of contents.
`visited`
  “Has been or is being visited by the player.” Given to a room immediately after a `Look` first happens there: if this room is `scored` then `ROOM_SCORE` points are awarded. Affects whether room descriptions are abbreviated or not.
`workflag`
  Temporary flag used by Inform internals, also available to outside routines; can be used to select items for some lists printed by `WriteListFrom`.
`worn`
  “Item of clothing being worn.” Should only be an object being immediately carried by player. Affects inventories; doesn't count towards the limit of `MAX_CARRIED`; won't be automatically put away into the `SACK_OBJECT`; a `Drop` action will cause a `Disrobe` action first; so will `PutOn` or `Insert`.

Note. The only library attributes which it's useful to apply to locations are `light`, `scored` and `visited`.