Chances are you're probably familiar with this, but I'm
going to include the help entries from TinyMUSH
although these features are present in newer versions of
TinyMUSH, PennMUSH, RhostMUSH, and TinyMUX in
basically the same form.
As of now, there are two parts to a room: The
Description, and the Contents/Exits list which are lumped
together. Most of the BT games (all of them really)
create room parents by setting the rooms dark (which
wipes the exit list), and making a parent that combines
the exits with the description. While it does work, it's a
bit cumbersome and may hiccup on rooms with large
descs or descs with a good bit of code in them.
For the sake of ease of use and the ability to write much
better room parents, I request that @conformat and
@exitformat be added as per implemented from the
above mentioned codebases. Below you will find help
files and an elaboration.
----
Command: @exitformat <object> = <list of exits format>
Attribute: ExitFormat
Replaces the usual "Obvious Exits:" format when an
object is looked at, by a player-specified exits format.
This is evaluated as if it were a description or similar
message on the room, and is passed no special
parameters. The list of exits can be obtained
through 'lexits(me)', though note that this does no
hecking for what the viewing player should and shouldn't
see.
One could change the format to 'Exits: Exit1 Exit2 Exit3'
through '@exitformat here = Exits: [iter(lexits(me),name
(##))]', for example.
Or, to imitate a PennMUSH-style room
RANSPARENT "long exits" format: 'Obvious Exits:[iter
(lexits(me),%r [name(##)] leads to [name(loc(##))].'
-----
Command: @conformat <object> = <contents format>
Attribute: ConFormat
Replaces the usual "Contents:" or "Carrying:" format
when an object is looked at, by a player-specified
contents format. This is evaluated as if it were a
description or other similar message on the room, and is
passed no special parameters. The list of room contents
can be obtained through 'lcon(me)', though note that
this does no checking for what the viewing player should
and shouldn't see.
One could change the format to 'Contents: Object1
Object2 Object3' through '@conformat here = Contents:
[iter(lcon(me),name(##))]', for example. More complex
things are, obviously, possible.
----
This basically makes the @desc completely seperate
from the exits and content listing, meaning rooms no
longer need to be set DARK, and the code can be split
up in to chunks for much easier management.
@exitformat isn't a huge deal as long as we have some
way to set the stuff below the @desc since a large
majority of the room parents I'm aware of sort the
players and the objects in different columns which is a
softcode thing.