[help concept]
------------------------=======+=======----------------------------
 
1. A wizard can extend the game.
 
2. The game can be extended on fly, without rebooting the mud.
 
3. There are no differences between objects. Rooms, players and
things are just objects.
 
4. All objects are specified in interpreted C. The specifications
are compiled (loaded) first time they are referenced.
 
5. There are no player parser. All commands are defined by the
objects. For example, the knife defines the command 'wield',
and the leather jacket defines 'wear'. An object defines a
command by associating it with a local function, defined in
the object. When the user types that command, the corresponding
function will be called. If the user types 'wear jacket',
then jacket will be sent as an argument to the wear function
in the jacket object. If the user types 'wear plate', the argument
'plate' does not equal jacket and the jacket's wear function will
return false. Then, another 'wear' command is tried, until success.
When the user drops an object, all commands are removed that
was associated with that object.
 
6. The rooms are just objects that defines some commands like 'look',
'east', 'north' and such things. When the user then types 'north',
the room function will do something to the player.
 
7. An object may define a function heart_beat. It will be called
every third second. This can be used for automoving monsters,
torches burning down and time delayed traps, etcetera.
 
8. The most complex object is the player object. It defines commands
get, drop, and kill.
 
9. When a player becomes wizard, he will get a small portable castle.
He can drop this anywhere, and it will grow and become a full scale
castle. He can then rename it and extend it. It is okay to rename
it to 'entrance to area' or something thematic with the area.
 
10. The language that defines objects are similar to C. It is an
interpreted language called LPC named after its creator.