Next Previous Contents

3. World Creation


3.1 Creating a new room

If the room you want to create doesn't already exist, create it with the @NEW ROOM <room number> command. Go into the room you just created with the GOTO command. Please use your virtual numbers assigned to you in order. Don't leave large gaps between used virtual numbers.

< O:-1 M:-1 R:1200 > @new room 14000
Ok.

< O:-1 M:-1 R:1200 > goto 14000
A new room created by Mobius. [14000] 
Null description.
Obvious exits:
None.
----

< O:-1 M:-1 R:14000 >

3.2 Setting the zone number

Set the zone number of the room for your zone with the @ZONE HERE <zone number> command, which is zone 1400. You might not have to do this in every room.

< O:-1 M:-1 R:14000 > @zone here 1400
Zone number of room [14000] set to 1400.

< O:-1 M:-1 R:14000 >

3.3 Describing rooms

This room is going to be a path leading up to a citadel, which is a kind of fortress. This path is through a field and is outside so we will need to describe and flag it as such. Remember, paths go in two directions, toward and away something. We don't want to assume which direction the reader is heading in.

First, let's give the room a name. Room names are what appear at the very top of the room description and are always seen when entering a room even with the BRIEF setting on. Room names are like chapter titles in a book. They are phrases, not complete sentences and do not have punctuation. We will name the room using the @NAME HERE <room name> command:

< O:-1 M:-1 R:14000 >@name here Path through a field
Ok.
< O:-1 M:-1 R:14000 >

Now we need to describe the room using the @DESCRIBE HERE command which opens up the multi-line editor. There are several things to keep in mind when writing room descriptions. First, always indent your first line with 3 spaces. Second, do NOT assume anything about the player reading the room description. This means do not use the word "you". Describe what they see without using the word "you". You should not use "you" because it is literally redundant. Of course they're looking at the room, they know that, they typed "look." Third, use grammatically complete sentences that are logical. Fourth, mind your spelling. Use the @SPELL HERE command after completing a room description. Fifth, end your lines before column 80 so it doesn't wrap in terminals. Sixth, keep your descriptions short and to the point. 3 to 5 sentences is enough to get your point across.

< O:-1 M:-1 R:14000 > @describe here
Old description:
Null description.

Enter text, end with a '@' on a line by itself.
]    This path runs north and south cutting a thin line through a wide field
] of tall green grass. Far to the north the top of a citadel can be seen. To
] the south the path lingers down a hill to the rolling surf.
] @
< O:-1 M:-1 R:14000 >

Let's check the spelling of the room with the @SPELL HERE command. If the spell checker doesn't find anything it will only display the version of the software. Keep in mind the spell check does not check grammar. You'll have to proof read your rooms yourself.

< O:-1 M:-1 R:14000 > @spell here
@(#) International Ispell Version 3.1.20 10/10/95
< O:-1 M:-1 R:14000 >

3.4 Assigning sector flags

The difference between the sector flags is that they use more movement points when traversing from room to room - INSIDE uses the least (also isn't affected by day/night transition), MOUNTAIN uses the most. The water sectors have to do with what positions and actions are allowed in the room, for example you can't sleep on water. and the WATER-NOSWIM means players have to either be affected by waterwalking or be carrying a boat to enter.

Since this location is outside we will need to change the INSIDE sector flag to a sector more logical using the @FLAG SECTOR <sector flag> command. After checking the list of available sector flags in the description of the @FLAG SECTOR command (you can also see a list by just typing @FLAG SECTOR) we see that the flag FIELD is more appropriate.

< O:-1 M:-1 R:14000 >@flag sector field
Flag is SET.

< O:-1 M:-1 R:14000 >

3.5 Sector flags explained

Type @FLAG SECTOR to see a list of available sector flags. Each room can have one sector flag. Sector flags determine how many movement points it takes to enter or leave that room, what information is displayed to the occupants, special requirements for entering the room, and what actions are allowed in the room.

Sector flags are also used in conjunction with the @ZONE RANDOM command to place objects and mobiles in a random fashion for sector types.

sector type movement
points
properties
inside 1 no weather messages
spells dependent on weather conditions not effective (eg "control weather", "call lightning")
city 2 no weather messages
room is always lit
field 2 weather messages
forest 3 weather messages
hills 4 weather messages
mountains 6 weather messages
water-swim 4 weather messages
cannot rest/sit/sleep
warriors cannot bash or kick
no tracks left behind for players or mobiles
water-noswim 4 boat object or water-walk spell affect required to enter or leave water-noswim room
weather messages
cannot rest/sit/sleep if affected by water-walk
warriors cannot bash or kick if using boat object
no tracks left behind for players or mobiles

3.6 Linking rooms

If the room you are going to connect to doesn't already exist, create it with the @NEW ROOM <number> command. To create exits between rooms that don't already have exits in the direction you want to go, use the @DIG <direction> [<room number>] command. Since we're heading towards a citadel to the north, we need to start linking rooms together in that direction. Room 14001 already exists but doesn't have any exits so we'll use the @DIG <direction> [<room number>] command:

< O:-1 M:-1 R:14000 > @dig north 14001
Ok, exit and links created.

< O:-1 M:-1 R:14000 >

Detailing is encouraged. One of the things we can do to detail our areas is describe room exits. We can describe the exit north we just created with the @DESCRIBE <direction> command which opens up the multi-line editor. Exit descriptions should not be indented and should be complete sentences. Typically they are brief, 1 or two sentences. The exit descriptions are seen when a player is not in BRIEF mode and moves in that direction. It is also seen when a player looks in that direction.

< O:-1 M:-1 R:14000 > @describe north
Old description:

Enter text, end with a '@' on a line by itself.
] The path through the field leads up to a giant white citadel.
] @
< O:-1 M:-1 R:14000 >

3.7 Linking rooms with existing exits and creating one-way exits

If a direction already exists in the room you want to link to you'll have to @DIG <direction> (without a room number argument!) first, then @LINK <direction> <room number> to get there. You can link as many exits into a single direction in a target room, but a room can only have one exit going out of a direction.

You can also create one-way exits from a room to another room with the @DIG <direction> and @LINK <direction> <room number> combo. When travelling through one-way exits, players will see the following message: ""

< O:-1 M:-1 R:14000 > @dig south
Ok, exit created.

< O:-1 M:-1 R:14000 > @link south 13999
Ok.

< O:-1 M:-1 R:14000 >

3.8 Describing directions with no exits

If you just want to create a direction for description purposes, use the @DIG direction command without the [<room number>] argument. Then use the @describe <direction> to attach a description to that direction that players can see when they look in that direction. If there is no link to another room in that direction, players will not be able to go in that direction.

< O:-1 M:-1 R:14000 > @dig west
Ok, exit created.

< O:-1 M:-1 R:14000 > @describe west
Old description:

Enter text, end with a '@' on a line by itself.
] Rolling waves of green grass undulate far to the west.
] @

< O:-1 M:-1 R:14000 > look west
Rolling waves of green grass undulate far to the west.

< O:-1 M:-1 R:14000 > west
Alas, you cannot go that way.

< O:-1 M:-1 R:14000 >

3.9 Destroying room links and directions

You can remove an existing room links and directions with the @DESTROY <direction> command. This command will completely remove the link inside the room and all its flags/descriptions/settings. This command will only destroy the link inside the room the command is executed in. If the link has a corresponding exit from another room into that room to destroyed link it will NOT be destroyed as well. You will have to go to the corresponding room and destroy the link from there to remove both ends of the link.

Directions that are not links that were created for descriptive purposes can also be removed with this command.

< O:-1 M:-1 R:14000 > look west
Rolling waves of green grass undulate far to the west.

< O:-1 M:-1 R:14000 > @destroy west
Ok.

< O:-1 M:-1 R:14000 > look west
Nothing special there...

< O:-1 M:-1 R:14000 >

3.10 Examining room settings

This room is completed and let's take a look at what the players would see with the look command and what the actual room settings are with the @EXAMINE HERE command:

< O:-1 M:-1 R:14000 > look
Path through a field [14000] (dark)
   This path runs north and south cutting a thin line through a wide field
of tall green grass. Far to the north the top of a citadel can be seen. To
the south the path lingers down a hill to the rolling surf.
Obvious exits:
North  - A new room created by Mobius.  [14001] 
----
South from A new room created by Mobius.        [14001]

< O:-1 M:-1 R:14000 > @examine here
#14000     Last modified by: Mobius
   --- descriptions ---
Path through a field~
   This path runs north and south cutting a thin line through a wide field
of tall green grass. Far to the north the top of a citadel can be seen. To
the south the path lingers down a hill to the rolling surf.
~

   --- room flags ---
NO-BITS

ZONE        : 1400
SECTOR TYPE : FIELD

   --- exit north ---
~
The path through the field leads up to a giant white citadel.
~
EXIT INFO : NOTHING 
KEY       : -1
TO ROOM   : 14001
WEIGHT    : -1
< O:-1 M:-1 R:14000 >

3.11 Copying rooms

You can either walk north or use the GOTO command to enter room 14001. Using the @DUPLICATE <room number> command, we can save a lot of creation time by copying room settings from a similar room. It is very important to note that one should not just blindly duplicate rooms and maintain the same room description. This gets tedious and boring to the player reading descriptions. It is okay to have a couple rooms in a row with the same description, but typically they should different in some way. In this case we are going to copy room 14000.

< O:-1 M:-1 R:14001 > @duplicate 14000
Room 'Path through a field' [14000] copied.

< O:-1 M:-1 R:14001 >

The room is going to be in front of the citadel so we need to name and describe it as such.

< O:-1 M:-1 R:14001 > @name here Path before the white citadel
Ok.

< O:-1 M:-1 R:14001 > @describe here
Old description:
   This path runs north and south cutting a thin line through a wide field
of tall green grass. Far to the north the top of a citadel can be seen. To
the south the path lingers down a hill to the rolling surf.

Enter text, end with a '@' on a line by itself.
]    The path leads right up to the large stone gate of the tall white citadel
] to the north. The path continues south towards a silvery beach of rolling surf.
] @
< O:-1 M:-1 R:14001 >

3.12 Linking rooms with keyless doors

Now we need to create the gate. The gate will be a "door" between the room 14001 and the room north of 14001 which will be 14002. Doors need to be created in both rooms the door is the link between. First, we need to create the the exit north with the @DIG <direction> [<room number>] command. Then we will flag the direction as a door with the @FLAG <direction> <door flag> command setting the flag IS-DOOR. Use the @FLAG <direction> without the flag argument to see the list of all available door flags. Next we will give the "door" a name with the @NAME <direction> <keyword(s)> command. Keep in mind that the game recognizes all keywords for operating the door but only displays the first one, so make the first one logical, not something like "white". Finally we will link the a key with the door at the same time as setting the door weight with the @LINK <key number> <direction> [<door weight>] command. Using the key value of -1 sets the key to nothing meaning it isn't lockable. For good measure, we're also going to describe the direction with the @DESCRIBE <direction> command. Remember! We have to do these commands to both sides of the door in room 14001 and 14002.

< O:-1 M:-1 R:14001 > @dig north 14002
Ok, exit and links created.

< O:-1 M:-1 R:14001 > @name north gate stone
Ok.

< O:-1 M:-1 R:14001 > @flag north is-door
Flag is SET.

< O:-1 M:-1 R:14001 > @link -1 north -1
Ok.

< O:-1 M:-1 R:14001 > @describe north
Old description:

Enter text, end with a '@' on a line by itself.
] The large white stone gate stands proud and strong.
] @

< O:-1 M:-1 R:14001 > look north
The large white stone gate stands proud and strong.
The gate is open.

< O:-1 M:-1 R:14001 >

Now we go do the other side of the door in room 14002 south to 14001. We don't need to dig south from 14002 to 14001 because the exit already exists between the two rooms.

< O:-1 M:-1 R:14002 > @name south gate stone
Ok.

< O:-1 M:-1 R:14002 > @flag south is-door
Flag is SET.

< O:-1 M:-1 R:14002 > @link -1 south -1
Ok.

< O:-1 M:-1 R:14002 > @describe south
Old description:

Enter text, end with a '@' on a line by itself.
] The large white stone gate stands proud and strong.
] @

< O:-1 M:-1 R:14002 > look south
The large white stone gate stands proud and strong.
The gate is open.

< O:-1 M:-1 R:14002 >

3.13 Linking rooms with keyed doors

Now were going to create a locked door north of here to room 14003 and set a key (object virtual number 14030) to be associated with the door using the @LINK <key number> <direction> [<door weight>] command. This means that the door can only be opened with the key 14030, picked by a thief or the "knock" mage spell. We could flag the exit "pickproof" or "wizard-locked" to give it further protection against picking and spells. We're also going to give it some weight so that only players with certain strength or greater can open it. Don't forget to do both sides of the door.

Creating a door and binding a key is enough to establish a lockable door in the game, but in order for the door to be closed and locked when the game starts and the zone resets, we'll need to add a zone command entry. Use the @ZONE DOOR ("open" | "close" | "lock") <direction> command to set the state of the door. This MUST be done to both sides of the door. Using the "lock" action on the door will close it as well as locking it.

< O:-1 M:-1 R:14002 > @dig north 14003
Ok, exit and links created.

< O:-1 M:-1 R:14002 > @name north door
Ok.

< O:-1 M:-1 R:14002 > @flag north is-door
Flag is SET.

< O:-1 M:-1 R:14002 > @link 14030 north 15
Ok.

< O:-1 M:-1 R:14002 > @describe north
Old description:

Enter text, end with a '@' on a line by itself.
] The small white door gate stands in the northern wall of the gatehouse.
] @

< O:-1 M:-1 R:14002 > look north
The small white door gate stands in the northern wall of the gatehouse.
The door is open.

< O:-1 M:-1 R:14002 > @zone door lock north
TODO: add response here

< O:-1 M:-1 R:14002 > north
A new room created by Mobius. [14003] 
Null description.
Obvious exits:
South  - A new room created by Mobius.  [14002] 
----
South from Gatehouse        [14002]

< O:-1 M:-1 R:14003 > @name south door
Ok.

< O:-1 M:-1 R:14003 > @flag south is-door
Flag is SET.

< O:-1 M:-1 R:14003 > @link 14030 south 15
Ok.

< O:-1 M:-1 R:14003 > @describe south
Old description:

Enter text, end with a '@' on a line by itself.
] The small white door gate stands in the southern end of the hall.
] @

< O:-1 M:-1 R:14003 > look south
The small white door gate stands in the southern end of the hall.
The door is open.

< O:-1 M:-1 R:14003 > @zone door lock south
TODO: add response here

< O:-1 M:-1 R:14003 >

3.14 Direction (door) flags explained

Type @flag <direction> to get a list of the currently available door flags. Doors can have more than one direction flag. Unwanted door flags can be removed by calling the @FLAG <direction> <door flag&t; command with an "!" placed in front of the flag to be removed. Door contribute to the behavior of a door. Doors should be set for "open", "closed", "locked" with zone command entries. Doors do not necessarily need a key to be locked or wizard locked. See @ZONE DOOR for more information.

direction flag effects
is-door Must be set for the exit to have any door-like behaviors.
pickproof If door is locked and pickproof, it cannot be picked by thief skill picklock.
secret Door name and description not listed in exits display or even when looking in that direction. Door keyword must be found with a successful skill "search" in the room.
closed Game flag for setting the value of the door as closed. Door must be physically opened to allow passage through.
locked Game flag for setting the value of the door as locked. Door must be unlocked with proper key, picked by successful thief skill "pick lock" or affect by successfull wizard spell "knock".
wizard-locked Game flag for setting the value of the door as affected by mage spell "wizard lock".
is-object Unused?
is-window Unused?
knockproof Door cannot be unlocked by the mage spell "knock".
is-stadium Door echos movement to some other room or something. Do not use without expressed implementor permission.

3.15 Assigning room flags

Room 14002 is the first room inside of the citadel which is a building of sorts. To the point, it is inside so we will need to flag the sector as such with the @FLAG SECTOR <sector flag> as well as the room flag INDOORS using the @FLAG HERE <room flag> command. Also, because there are no light sources inside the citadel, we'll flag it as dark so players will need to have a light source or infravision to see the room.

< O:-1 M:-1 R:14002 > @flag sector inside
Flag is SET.

< O:-1 M:-1 R:14002 > @flag here indoors
Flag is SET.

< O:-1 M:-1 R:14002 > @flag here dark
Flag is SET.

< O:-1 M:-1 R:14002 > 

3.16 Room flags explained

Type @FLAG HERE <room flag> to see a list of available room flags. Rooms can have more than one room flag. Unwanted room flags can be removed by calling the @FLAG HERE command with an "!" placed in front of the flag to be removed. Room flags contribute further properties to the room.

room flag effects
dark room will always be dark no matter what time of day, usually used in conjunction with sector type "inside" and room flag "indoors"
room descriptions and contents will be visible to those affected by infravision
exposure of an object that is flagged "lit" or affected by "remove darkness" spell will allow the room to be viewed as if not affected by room flag "dark"
death Mortals will die upon entry into to the room and will not produce a corpse but all the equipment will be left in the room. Please does not lose any experience points for the death. (Requires implementor assistance.)
no_mob Mobiles cannot wander into the room through regular movement. This flag is often used to separate different sections of an area where you don't want mobiles that aren't sentinel to leave.
indoors Similar to the sector flag and often used in conjunction. No weather messages are displayed and spells dependent on outdoors such as control weather and call lightning are not usable.
lawful Unused
neutral Unused
chaotic Unused
no_magic Spoken magical spells cannot be cast including scrolls. Staves and potions can still be used.
tunnel Movement through tunnel rooms is single file, first in first out for all directions except last in first out for the returning direction the room was entered in by.
private No more than two players can enter the room at anyone time. Gods are not affected by this.
healing Players regenerate hit/mana/movement points at a faster rate while inside a healing room.
underwater Unless affected by water breathing spell, players will begin to take hitpoint damage relative to the length of time spent underwater unable to breathe.
air Unused
silence Players will not see nor can they participate in any of the communication channels including socials.
no_track Players and mobiles will not leave tracks through the room.
arena Players killed in arena rooms are sent back to start of arena with no loss incurred from death. Arena needs to be defined in order for this flag to function properly. (Requires implementor assistance.)
dump Objects left inside this room will disappear from the game after a delay. (Requires implementor assistance.)
god Only immortals are allowed to enter into this room.
save Unknown
recall Used in conjunction with defined cities. Players who origin is set to a city will end up in a room flagged recall when "word of recall" is cast upon them. (Requires implementor assistance.)
no_teleport_in Players will not be able to teleport (with or without error), metastasis, or be summoned into the room.
no_teleport_out Players will not be able to teleport(with or without error), metastasis, or be summoned out of the room.
restore Players entering the room will be restored to full health, mana, and move. Do not use without expressed implementor permission.
no_camp Players cannot encamp in this room.

3.17 Creating and describing extra room items

Now we will quickly describe and name the room. We're also going to create and describe an extra room item with the keyword crank using the @CREATE ITEM_HERE <item keyword(s)> command and the @DESCRIBE <item keyword(s)> command. If you want to re-edit the description of the extra room item by calling the @DESCRIBE <item keyword(s)> command. You can remove extra room items with the @DESTROY <item keyword(s)> command. Players can see the description you enter in by typing "look <item keyword(s)>". Extra room item descriptions are not indented and are typically one or two sentences long. There can be more than one group of keywords for separate room items.

< O:-1 M:-1 R:14002 > @name here Gatehouse
Ok.

< O:-1 M:-1 R:14002 > @describe here
Old description:
Null description.

Enter text, end with a '@' on a line by itself.
]    This spacious room houses the large gate that is used to close off the
] exit to the south. To the north a small white door blocks the way to the
] rest of the citadel. A large crank stands near the gate opening.
] @

< O:-1 M:-1 R:14002 > @create item_here crank
Ok.

< O:-1 M:-1 R:14002 > @describe crank
Old description:

Enter text, end with a '@' on a line by itself.
] The crank handle is padded and the wheel glides smoothly around the axle
] without resistance.
] @

< O:-1 M:-1 R:14002 > look crank
The crank handle is padded and the wheel glides smoothly around the axle
without resistance.

< O:-1 M:-1 R:14002 > 

3.18 Finding unused rooms

Sometimes when creating large areas, the virtual number you left off at can become lost. You can find unused room virtual numbers with the @FIND command.

< O:-1 M:-1 R:14003 > @find room 14003
There are TODO: finish output here

< O:-1 M:-1 R:14002 > 

3.19 Executing commands across multiple rooms

Use the @NUMBERS ROOM command to execute a single command across multiple rooms. This is useful when forgetting a room flag that needs to placed in all rooms in a given section of your area. A command response will be returned for each command executed.

< O:-1 M:-1 R:14002 > @numbers room 14000 14003 @flag here no_mob
Ok...
Flag is SET.
Flag is SET.
Flag is SET.
Flag is SET.

< O:-1 M:-1 R:14002 > 

3.20 Saving your changes

Don't forget to save the world after your work using the @SAVE world command. Saving the world file takes a while and uses a lot of system resources. Save often but not too often.

< O:-1 M:-1 R:14002 > @save world
Saving world index to file.

< O:-1 M:-1 R:14002 > 


Next Previous Contents