|
Here is a concise account of all the normal rules concerning
all the library's attributes, except that: rules about how
the parser sorts out ambiguities are far too complicated to
include here, but should not concern designers anyway; and the
definitions of 'scope' and 'darkness' are given in
Section 28 and Section 17 respectively. These rules are the result
of pragmatism and compromise, but are all easily
modifiable.
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''.
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. This is left
free to mean something different for each object: often used by
programmers for something like "the puzzle for this object has been
solved''.
light
"Is giving off light.'' (See Section 17.) 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 unmoved.
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 this
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.
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 that very few attributes sensibly apply to rooms: only really
light, scored and visited, together with general if you
choose to use it. Note also that an object cannot be both a
container and a supporter; and that the old attribute autosearch,
which was in earlier releases, has been withdrawn as obsolete.
|