.SH Basic Creation
.LP
Having had a quick look at what floats around the AberMUD game universe, it
is now time to have a look at how you get it there in the first place.
.LP
Words are added and deleted with two sets of commands. The first add<type>
eg addverb, adds a word to the game vocabulary. The second del<type> removes
a word from the vocabulary.
.LP
.I Addverb <text> <value>
.LP
Adds a verb to the games vocabulary. As with all sorts of words two
words of the same value and type are synonyms. Verbs with value below 200 are 
system verbs - for example addverb itself. If you miss out the value the game
will pick a suitable unused one.
.LP
.I Addordinate <text> <value>
.LP
Add an ordinate (n'th) word - such as 1st , 2nd etc. For ordinates the
value parameter is the degree of the ordinate - thus 1st is 1, 2nd is 2 and so
on.
.LP
.I Addpreposition <text> <value>
.LP
Add a preposition (joining word) to the game database. With these words
the value is used to indicate synonyms. If no value is given an unused one is
selected.
.LP
.I Addadjective <text> <value>
.LP
Add an adjective to the game system. Adjectives are primarily used to
specify items more precisely. The value is used to determine synonyms only. If
no value is given then an unused one is selected.
.LP
.I Addnoun <text> <value>
.LP
Add a noun to the game system. Nouns are primarily used to associate
words with items in the game. The value is used to determine synonyms. Values of
10000 or higher are reserved for use by the game system internally. If no value
is given a suitable one is selected.
.LP
The game uses words 10000+ to add words itself when a player enters the
game.
.LP
.I Addpronoun <text> <value>
.LP
Add a pronoun to the game system. The value for pronouns is used to
indicate the behaviour of the pronoun. While the behaviours available are
sufficient for English, if occasionally wrong in application, they may well
not be sufficient for foreign language games. The behaviours are:-
.IP 1 5
Me
.IP 2
It
.IP 3
Them
.IP 4
Him
.IP 5
Her
.IP 6
There
.SP 2
.LP
.I Delverb <text>
.br
.I Delnoun <text>
.br
.I Deladjective <text>
.br
.I Delprep <text>
.br
.I Delpronoun <text>
.br
.I Delordinate <text>
.LP
Delete a word from the game database. If the word is in use you will
not be warned and items using that word will report <UNSET> for its text. It
is generally a bad idea to remove a word that is in use. It is possible to
do delverb addverb. I wouldn't recommend it.....
.SP 2
.SH Miscellaneous Commands
.IP abort 20
Aborts the game driver, anything you are editing is lost.
.IP "saveuniverse <name>" 20
Save the game to the given name. The previous copy is backed
up as <name>.bak in case the save fails and is incomplete.
.IP users 20
See who is connected to the game.
.IP status 20
Get a status summary.
.IP statme 20
See memory status (only if using dlibs fast malloc).
.IP quit 20
Leave the game.
.LP
Normally the game database will override these for players. An archwizard however
can always type a : at the start of the line to force it to use only the system 
words. This is vital in case you redefine everything by mistake!
.SP 2
.SH Items
.LP
Once you have added adjectives and nouns, it is then possible to create
an item using them. When you create an item it acquires an adjective and a noun.
The game system fills in the other properties of the item to suitable initial
defaults. The properties of a basic item are:
.LP
.IP Property 20
Set With		
.br
.br
.IP Adjective 20
rename <adj> <no> {to} <adj> <no>
.IP Noun 20
rename <adj> <no> {to} <adj> <no>
.IP Name 20
setname <adj> <no> text
.IP Parent 20
place <item> {at} <item>
.IP Next 20
place <item> {at} <item>
.IP Child 20
place <item> {at} <item>
.IP State 20
setstate <item> <0-3>
.IP Perception 20
setperception <item> <value>
.IP Lock 20
Not directly alterable
.IP Actor 20
setactor <item> <tablename>
.IP Action 20
setaction <item> <tablename>
.IP Classes 20
bexxxx
.IP ClassFlags 20
setclass <item> <class>
.IP Superclass 20
setsuper
.LP
The important properties here are the adjective and noun which govern what words
match the item. It is a very good idea to make the name match the vocabulary.
For normal items use lower case for the name - eg 'the small axe'. The system
knows the basic rules for capitalising names and also provides actions for
doing so.
.LP
The Parent, Child and Next fields are maintained by the system as objects move
around. They control and describe the location of each item. You can place
an item where you like with place <item> <location>. If you have several identical
items even down to the adjective and noun, the system provides a syntax that
can be used with the game editing commands such as place. Each identical item
is #1 adj noun , #2 adj noun etc. #1 is always the most recently created. This
is for convenience. Most people find that knowing the most recent are #1 and #2
is easier to work with.
.LP
The state of an item is a value that can be changed as properties of an item 
change. It is used in several places by the system. In paticular light sources
are normally lit in state 0. A door is open in state 0 , closed in state 1 and
locked in state 2. A container is closed in state 1. You can arbitarily set 
this using setstate. setstate is slightly special in some ways, and this will
be explained later (section 10) when we discuss chaining.
.LP
The perception is the minimum level required to be able to see or refer to
an item. It allows you to implement invisible things, and also to hide
system objects from users.
.LP
The Lock value is the number of references to this item. While this item is
referred to or has contents it cannot be destroyed. 
.LP
Actor is the name of the list of database instructions that will be executed when
a command is entered by a user. This is normally 0.
Action is the name of the list used when an item is sent a message by another item.
For players this defaults to 2.
.LP
Classes is a list of things an item can be - this includes Room, Player, Object, 
and Container - which we will deal with later on.
.LP
Superclass is used for object based inheritance. Basically when a user types a command
like 'get axe' the system first looks at the axe to see if it has a get rule. If it does
not it looks at its superclass and sees if that has a get rule and so on until there is
not a superclass. If it still hasn't found a rule it will try the actor table of the user.
Finally it will give up and display 'I don't understand.'.
The superclassing is controlled with the commands
.IP "setsuper <item> <superclass>" 30
Set the superclass of an item. Setting it to itself clears
the superclass
.IP "showsuper <item>" 30
Shows the full inheritance heirarchy of an item -eg
big axe -> generic-axe -> generic-sharp-weapon -> weapon
.LP
ClassFlags confusingly enough has nothing to do with the classes like Room, Player. It is
a set of user definable flags that can be set on an item - for example to indicate if it
is magical. These flags are controlled with the following commands.
.SP 1
.IP listclass 25
List the classes available.
.IP "nameclass <num> <name>" 25
Name a class.
.IP "setclass <item> <class>" 25
Make an item a member of a class.
.IP "unsetclass <item> <class>" 25
Make an item not a member of a class.
.SP
.LP
To create an item you type 'create adjective noun'. This will create a new
item. The properties are defaulted as follows.
.IP Parent: 16
NULL (nowhere)
.IP Name: 16
the <adjective> <noun>
.IP State: 16
0
.IP Action: 16
0
.IP Actor: 16
0
.IP Classes: 16
None
.IP SuperClass: 16
None
.LP
Having created an item you don't want, you will need to delete it. The system only allows
you to delete an item that is not in use. An item is in use if it is a player, if it has
contents, if it has a type - such as Object, Room etc, if an exit leads to it, or if it
is referred to anywhere else in the database. The Locks count will show you the number of
times an item is in use. To perform the deletion you type
.LP
.I delete <itemname>
.LP
If the item is in use you will be told so, and it will not be deleted.