Encyclopedia Galactica
Rules & Guidelines
   
 

 

FURSCAPE BUILDERS GUIDE

Updated May 1, 2000

 

BUILDER BITS

Before you can create or build anything, you need a BUILDER bit. On Furscape we encourage just about everyone to build, so if you don't have a builder bit, it's probably due to an oversight. Just ask a wizard for help.


BASIC ROOM CREATION

The basic command for creating rooms is @dig. For example, let us suppose you want to create a cave for yourself. You can type:

@dig My Cave

It creates the room named "My Cave" and gives you a dbref number, which you can use to access the room. Let us say, just for example, that the number of your room was #4567. To get there, you can go two ways:

@tel me=#4567 or... tel #4567

Once you have gotten into your room, try running the EDITROOM program! This program is menu-driven and allows you to adjust many properties on your room. Everything that EDITROOM does could also be done with individual commands, one at a time, so the choice of using EDITROOM or other commands is one of personal preference and experience.

There is a more advanced program called NEWEDITROOM or NEW-EDITROOM. It has all the same functions as the regular program, plus some new ones. Some people like it, all are welcome to try it.


FINDING LOST ROOMS

If you have a room that isn't linked to anything and you have forgotten the dbref number, you can find it using this command:

@find *=R

It will show a list of all rooms that you own, along with their dbrefs. Then you can use @tel or tel commands to reach them, and proceed from there.


MAKING PATHS VISIBLE

If you are new to building, one of the first things you should do in your room is make paths (and exits) visible. That can be done with EDITROOM. This is not required, but it makes building easier when you can see what you are doing. If you want to make the paths invisible later (so that other players don't know what they are), you can toggle them off again. Leaving the paths visible is usually a good idea, unless you have some reason in mind why other players shouldn't see them (like in a maze, maybe). For building in public areas, visible paths are practically a requirement.

Also note... If you want most paths (or exits) in a room to be visible, but want to hide a particular one, you can set it dark:

@set <exit>=DARK or... @pdark <path>


HIDDEN EXITS POLICY

If you are a creating a role-playing or puzzle area with hidden exits, you should make them reasonably findable. A good rule of thumb is that the exit name should at least be a word appearing somewhere in the room desc, unless you have prepared some other clue for the players. If you have an exit that is really private and others are not intended to use, it is a very good idea to @lock it. The management cannot guarantee players won't be able to detect your exit by some means, so putting @lock on your private exits or paths is just common sense.


LINKING ROOMS WITH PATHS

Paths are the usual way of moving from one room to another. They are created using the @path command. The general form is:

@path <direction>=<#dbref>,<exitname>

For example...

@path north=#2345=North Beach

Please note that the direction "north" is what the player will type to go that way. The name "North Beach" is only for looks. It will appear in the exit list as: North Beach (N)

There is a list of *suggested* directions you can use with @path. These are:

north, south, east, west, up, down, in, out, nw, sw, ne, se, or a number from 1 to 10

If your path uses a direction from this list, the path will automatically try to match abbreviations. For example... If your direction is NW, the path will automatically understand that NORTHWEST should also work when a player types it. It understands that O equals OUT, I equals IN, and so forth.

You are not required to use directions from the standard list. You can do something like this:

@path k=#2345=Kitchen

If you do this, the player can type "k" to enter the kitchen. However, the path won't automatically understand that "kitchen" is the same thing. To make it understand your own abbreviations, you can separate them with semicolons (;) like this:

@path k;ki;kitchen=#2345=Kitchen

Using this example, the user could type "k" or "ki" or "kitchen" to enter the room! When using semicolons this way, the first direction listed is the one shown in the rooms visible exits list. So, it would look to the players like this: Kitchen (K)

The other matches for "ki" and "kitchen" aren't visible, but they will still work.

Note that exits can also be used to link rooms together, but paths are preferred because they consume much less RAM in the system. Exits may be used for special purposes, such as linking to programs.


USING @PDIG

With @pdig you can create a room, create a path to it, and create a path back from it, all in one command. It looks like this:

@pdig <room name>=<path name>/<direction>=<path name>/<direction>

Here's an example...

@pdig Inside the Cage=Enter Cage/in=Exit Cage/out

If you use cardinal directions, the direction and the pathname can be the same value. For example...

@pdig Sandy Beach=North=South

When doing this, it's best to type the direction names in full rather than try to abbreviate them.


DESCRIPTIONS AND FORMATTED TEXT

Some players may use client programs with text displays of greatly varying si
ze. On older computers this was often determined by their screen display res
olution. On newer ones it tends to vary even more because they can be operat
ed with various sizes of windows and fonts. As a result, it's hard to presen
t text in descriptions that fits neatly on their display without getting word
s clipped at the ends of lines, just like in this paragraph you are reading r
ight now.

Fortunately, we have some guidelines to reduce this problem. Basically, we want everything to be word-wrapped or formatted to the size of the user's display. This can be done three different ways. First, it can be done by the user's own client software. The more advanced clients now have options to word-wrap text. Secondly, those who don't have word-wrap software can use the @wrap command which tells our MUCK how to word-wrap text for them. Thirdly, you can format your descs manually to 78 columns width. This last is the *least* preferred option.

If you type your descs straight into the MUCK using lsedit, the easiest way to get flowed text is to simply type it that way -- don't press return at the end of each line.

However, there is a limit to the size of paragraphs you can create this way. Also, if you are creating your text with a text editor on your home computer and then pasting it into lsedit, your software might not let you paste flowed text. Here's another way of getting the same result...

First put your text into a proplist using:

lsedit here=redesc
<paste your lines of text in here>
.end


Enter the text in whatever format width is convenient for you, it won't matter. Then put this MPI code onto your room or object:

@desc here={concat:redesc}

It will be flowed into one long string, which can then be word-wrapped either by the user's client software or by the MUCK using @wrap.

If you want to break your description into paragraphs (I tend to do this), you can use the MPI code {nl} to put in newlines. For example...

lsedit here=redesc
This is paragraph one.
{nl}
{nl}This is paragraph two.
.end
@desc here={eval:{concat:redesc}}


Descriptions produced in this way will be automagically adapted to the user's display, whether it is wide or small. That is what we prefer for descriptions on Furscape. However, there may be some times when you need hard-formatted descriptions.

If you are presenting information in a chart or table, or if you are presenting ASCII art or some sort of map, then you should limit the width to 78 characters. We assume that most (if not all) players have software that can display 78 column width. Here is how you might enter such a desc:

lsedit here=redesc
<paste your 78-column lines of text>
.end
@desc here={list:redesc}


Note that the {list:} function doesn't flow the lines together the way {concat:} does.

We also have a {format:} macro on Furscape, which lets you auto-format text into whatever width you specify. However, it should be needed only for very ususual purposes. It also has some quirks when trying to work with ANSI color, because the line-breaks it inserts into text tend to kill ANSI codes. Text wrapped by @wrap shows no such problem.


CONTAINERS

You can create container objects which are able to hold other objects in them. This could be something as simple as a backpack. Unlike some other MUCKs, you cannot use any random object as a container on Furscape. To make a thing into a container, use this command:

put #setup <thing>

You can also control who is able to put things into your container or take things out of it using the @conlock command, like this:

@conlock <container>=<lockstring>

Please see the section on locks if you aren't sure how they work.


FAKE CONTENTS

You can set a property on your container:

@set <container>=_/co:<fake contents>

This will show the property value to anyone who looks at the container instead of the actual contents. Note that you can use MPI code on this property to generate your own custom contents listing. It is also possible to set this property on yourself or on a room.


LOCKS

A lock is really a test that a character must pass before he can do something, such as go through an exit or pick up a thing. We have special programs for setting different kinds of locks on Furscape, but they all work pretty much the same way. Let's start with the example of locking a box...

@lock box=me

After doing this, only you will be able to pick the box up. Let's suppose you want your friend Mina to be able to pick it up also...

@lock box=me|*Mina

In this example, the "|" character means OR. In other words, to pass the test and take the box, the character must be "me OR Mina". The "*" character in front of Mina is used to make sure the lock understands Mina is a character. It tracks Mina's DBREF number, so even if Mina were to change her name, the lock would still refer to her. You can lock an object to as many different characters as you want this way.

Now let's imagine you want anybody to be able to take the box -- except one character named Joel. Here's how you do it...

@lock box=!*Joel

The exclamation point "!" means NOT. To pass the test, the character picking up the box must be "NOT Joel". Note again... If Joel changes his name, he's still locked out.

Now... You might assume that "box" is a container, and the lock will keep people from putting things in it or taking things out. That's not so. The lock only keeps characters from picking it up. To lock a container you must do something like:

@conlock box=!*Joel

It works the same way, but this time we are locking access to the contents instead of the thing itself.

You can also lock exits and paths. Let's assume you have a path leading into your closet, and you want to lock out other characters.

@plock closet=me

It is possible to lock objects to properties instead of characters. For example:

@plock closet=closet-key?:yes

To pass this test, you must have a property "closet-key?:yes" set on your character, or set on something your character is carrying. So, you could create things like this:

@create gold key
@set gold key=closet-key?:yes


Then hand out the keys only to those furs who are allowed in your closet.

It is also possible to create special locks using MUF programs. However, that is an advanced technique. In such cases you should refer to the MUF's instructions to see how it must be set up.


ENVIRONMENT ROOMS

If you are building an area with more than two or three rooms, you can benefit a lot from setting up a "parent" or "environment" room. It's a room that contains your other rooms. Why? It allows you to set actions that will affect all your sub-rooms, so that you don't have to set up the same actions in each one. Many programs also look for environment properties. For example, if you want to prevent characters from teleporting into your area, you can go to your parent room and do:

@set here=_tel/in?:no

You only have to set this in the parent room, you don't have to set it on each sub-room. BANISH is another program that recognizes parent rooms. So, you can banish someone from the parent, and they are automatically kept out of the sub-rooms too.

Another neat trick is your ability to ENTER and EXIT rooms. If you are in a sub-room, you can "exit" into the parent. There you can see your sub-rooms listed and easily "enter" one of them. This is very handy when building large areas and working on many rooms.

You can use EDITROOM to change the parent of a room you have built. When making a new room, the default parent is the same parent of the room you were already in. This means once you've created a parent room and your first sub-room, you can build with @pdig and all the new rooms will go under the same parent.

Finally you can use @tel to change the parent of a room. For example, let's say you have created a parent room for your apartment. You already have made a kitchen and you want to set the parent for it:

@tel <dbref of kitchen>=<dbref of parent>

or if you are standing in the parent room...

@tel <dbref of kitchen>=here

We do not require, but do strongly encourage, the use of environment rooms.


FAKE OBJECTS AND LOOK-TRAPS

The @object command is used to manage fake objects and look-traps. You can enter "@object #help" for a summary of the options. The only difference between a fake object and a look-trap is that the fake object is listed in the room contents, while a look-trap is not. With either kind of fake, the description can include MPI code. Take note... When looking at your own room, you will see fake objects listed in the room contents, but they have a "(fake)" tag beside them, and look-traps will show "(fake) [Dark]". These tags are NOT seen by others who don't control your room.

And yes, you can put look-traps or fake objects on yourself.



@CHOWN PERMISSIONS

The MUCK keeps track of the owner of each object. Objects can only be modified or deleted by someone who "controls" the object, which means the owner or a wizard. There are special rules for passing ownership of an object from one player to another. This is mostly done using @chown.

Let's say you have a keychain you want to give to your friend. You can hand it to him... But it still belongs to you -- you still control it. How do we really make it his?

@set keychain=CHOWN_OK or... @set keychain=C

Then give it to your friend and have him do this:

@chown keychain

If the CHOWN_OK or C flag is set on an object, anybody may use @chown to take possession of it. It would probably be a good idea for your friend to type this too:

@set keychain=!CHOWN_OK or... @set keychain=!C

That removes the flag so the object can no longer be claimed by anyone who holds it.

What if you want to leave something for your friend Mina to claim, but nobody else? You can use a lock for this. The command is @chlock. Here's how it works:

@set keychain=C
@chlock keychain=*Mina


Now, any other characters but Mina will fail the lock test and be unable to claim the thing. This can be very useful if you are cooperating with someone on a building project. Let's say for example that you are working with Mina and Joel to build an area. You could set the rooms like this:

@set here=C
@chlock here=me|*Mina|*Joel


Now any of you three can @chown the room and work on it, but others cannot. Keep in mind, you are extending trust to these people. Either of them could clear the C flag and simply keep the room, then you would have no way to get it back.


SPECIAL RULES FOR EXITS, ACTIONS, AND PATHS

There are special rules for control of paths, exits, and actions. If you own a thing or room and it has an action attached to it that belongs to someone else, you can @echown the action -- even if it wasn't set C. This is helpful when passing a thing or a room to another player, so you don't have to set C and @chlock permissions on every action.

Also, if some other player has an exit linked to your room, you can @echown the exit and modify or delete it. This means you can modify the entrance to your home or even unlink it from somebody else's area without having to get help from them.


MPI POLICY

MPI is a programming language most often used for creating complex descriptions, although it can be used for much more. Explaining how to program with MPI is beyond the scope of this guide, but there are a few policy matters to note: Anyone is allowed to use MPI code. It is possible that the wizards could forbid a player from using MPI if he has abused it, but this would be highly unusual. If any wizards have a problem with something you have created in MPI code, they can ask you to remove the offending code from service, and you will be expected to comply.

For more information about MPI programming, I suggest:
http://www.yiff.org/services/mpi.html


MUF POLICY

MUF is a powerful Forth-based language which most of the MUCK's programs are written in. Players may be allowed to program MUF, but this involves an extension of trust. If you want to program with MUF, you must ask a MUF wizard for a special flag. You will most likely be given an M1 flag first, which allows MUF programming with restrictions similar to MPI. M1 flags are given for the purpose of learning MUF with a view toward graduating to M2 at some later date. If you are given M2, you will be able to create MUF programs with few restrictions. Abusing MUF to spy on other players or tamper with their possesions is a serious offense, and will result in the loss of your MUF programming flags -- at the very least. Access to MUF programming higher than M2 is given only to programmers who are both trusted and have special needs.

For more information about MUF, you could start here:
http://mufden.pkunk.net/


AREA THEMES

Furscape is intended to have both a social, OOC-friendly environment for chatting plus specially themed areas where role-playing is encouraged. Our central theme is science-fiction oriented. That doesn't mean magical or mythical characters and areas are banned, but it does mean they should be kept apart from the hard-SF stuff. For example... If you want to build a high-fantasy gaming environment with swords and sorcery, that is fine, but please talk to a building wiz and figure out where it belongs in the MUCK. Don't simply link it into Alpha Dome or part of the lunar surface! We want the MUCK's layout to make some kind of sense, not turn into a hodgepodge of stuff randomly kludged together.

Owners of RP areas can post special rules for visitors. For example, if the owner of a cyberpunk themed area tells you magic doesn't work there, then it doesn't work. If you have a magical character and want to visit the area, you should be prepared to make some concessions. The converse would also be true, if a high-tech character went to a place where high technology isn't allowed. (If you want to play in the area very much, it could be an even better idea to create an appropriate character or zombie for that purpose.)

1 AUG 2000 - UPDATE: We now have a special command to help you post information about your area. The command is 'realm', and you can get information on how to use it by typing:

@view #3699

There are special rules for "adult" or erotic-themed areas. If you want to build such an area, you MUST speak with a building wiz and get it linked into an approved zone. Our policy on these areas is still evolving, but you should be prepared for some reasonable restrictions on players accessing your area. Furscape is not primarily an adult-oriented MUCK, so we are simply interested in keeping these areas from degrading our general theme and atmosphere, not stepping on your fun.

1 AUG 2000 - UPDATE: We have a new program to help control access to these areas. If you are building such an area, just ask a wizard to help you set it up.


Back