On-Line Builder's Guide

THE TIME OF THE SHADOWS BUILDER'S MANUAL
All You Need To Create Ycour Own Virtual World

Summary: This document describes how to create The Time of the Shadows areas, and specifies the file formats for worlds, mobiles, objects, shops, and zones, as well as providing examples of each. All information necessary to build worlds can be found in this documen

--------------------Table of Contents--------------------


1. Introduction 2. The Mechanics of World Building  3. World (Room) Files  4. Mobile (Monster) Files 5. Object Files  6. Zone Files  7. Shop Files 
5.0. Class Restrictions  6.1. The Format of a Zone File 
1.1. Your Job as a Builder in The Time of the Shadows 2.1. How World Files and Index Files Work  3.1. The Format of a Room  4.1a. Guidlines for mobs  5.1a. Some guidelines and information  6.2. Zone Commands 
4.1b. The Format of a Mobile  5.1b. The Format of an Object  6.3. Zone File Example
1.2. Learning By Example  2.2. Using Bitvectors 3.2. The Direction Field  4.2. Type S Mobiles  5.2. Object Value Definitions 
1.3. Game Balance  3.3. Room Extra Descriptions  4.3. Type S Mobile Example  5.3. Object Extra Descriptions 
1.4. Making Your Areas Interesting 3.4. World File Example  4.4. Type E Mobiles  5.4. Object Affect Fields 
3.5. Traps 4.5. Type E Mobile Example  5.5. Object File Example
4.6. E-Spec Keywords Valid in CircleMUD 3.00
7.1. CircleMUD v3.0 Shop Format

7.2. Item Name Lists for 3.0 Shops

7.3. The DikuMUD Gamma and CircleMUD 2.20 Shop Format

Appendix A: Numbers

Appendix B: Item Values for Drink Containers

1. Introduction

1.1. Your Job as a Builder in The Time of the Shadows

Wow, you finally got permission to build, and now you want to create a world to fit all of those stories you have running around your head. As a builder, your job is to create areas for players to roam around in, solve puzzles, and gain experience.

MUDs may have many different ways of coding things, but in general, most people tend to judge them on the number and quality of areas that they possess. The areas are what tend to make a MUD original. For example, one MUD could be based upon a magic-rich world and the code and areas would reflect this, while another could revolve around cities and thieves. Each of these MUDs would have its areas designed in such a way to flesh out this theme. In essence, building an area is like writing a book. It needs to have a plot, needs to be descriptive, and needs to be populated with memorable people and places.

1.2. Learning By Example

The formats of the world files are sufficiently complex that you will probably not gain a complete understanding of them merely by reading the documentation. This document is designed to be a reference manual and therefore may not serve as a particularly good tutorial. While there are examples provided at the end of each section, they are only meant to be representative, not comprehensive examples of all possible ways to use the features that will be described. The most effective way is to learn by example: examine some of the areas that come with CircleMUD and try to figure out the meanings of the numbers in different rooms, objects, mobiles, and zone files, using this manual as a guide. Once you're proficient at reading world files, you'll find that creating them is a much easier task.

1.3. Game Balance

'Game Balance' is a term that brings a different thing to mind for every person that hears it. What is most important about game balance is to keep in mind who each area is designed for and to try to balance the objects available in that zone for characters of those levels. Most players do not like to be given piles upon piles of treasure with no difficulty in getting them, but on the other hand, nobody likes to fight the most difficult mobile on the MUD and get nothing for doing it. Your job as either the chief coder or chief builder of your MUD is to find a happy medium between these two extremities. Once again, because everyone finds a different medium, this makes your MUD original.

The main thing that affects 'game balance' is the world and the areas that make it up. Because of this, each area should be checked against the others to ensure that one area is not impossibly hard or far too easy and rewarding relative to the rest of the world. Each implementor or group thereof should check over the world they start with and attempt to balance it to their satisfaction. Each new area that becomes part of the world should also be balanced in a like fashion. Many builders have a tendency to want people to visit their zones and as such tend to make the rewards a little better than other ones available on the MUD, and too much of this eventually leads to what is essentially the MUD equivalent of an arms race.

An area's balance should be an integral part of the design process, not something to be tacked on as an afterthought. Too often, an area will be designed with outrageously good weapons and armor which throws off the balance of the game, causing implementors to have to go back later and tone back the stats on objects that already exist within the MUD. By that point, however, the damage has already been done: since the rent system saves hitrolls, damrolls, and ac-apply's, veteran players will be able to hold on to their old, spectacular equipment unless it is explicitly taken from them. This does nothing but generate bad feelings on all sides. The moral of the story is to make sure that your area is correctly balanced before it is implemented in the production MUD. You'll find it's not acceptable to "let the players balance the area" by unleashing an unbalanced area on them and watching to see what people flock to.

1.4. Making Your Areas Interesting

An interesting area will always attract more players than a bland one. There are many ways to make an area interesting. Try to be as descriptive as possible; don't hold back on writing extra descriptions. Players are so used to not having richly described areas that finding an extra description can often be a real treat. Also, one oft forgotten thing to describe are the door exits. Describing all of these can give a feel of standing out in a field and looking off to the north and seeing something like:

The fields stretch off towards the large hills on the horizon. Far to the north you see what appears to be a plume of smoke.

With door descriptions like these, an area will feel more fleshed out to the player, and many players (both experienced and first timers) read the descriptions carefully the first time they walk through somewhere, and having many extra little descriptions helps them fill out their idea of what things actually look like.

One thing that should never be done is to have room descriptions that look like "You stand in a big room. It is very dark." Descriptions like these detract in general from the rest of the world, and if they are found room after room can bore a player to tears. That description could be better written as:

You stand in a room of very large size. Shadows cower along the walls and almost seem to be moving as you look around yourself. The floor is made of heavy stones which are very dark in color. The ceiling is quite some distance above you, but you can still make out objects hanging from it, ruining the smoothness that is characteristic of the rest of the room.

Another thing that can be done to make an area interesting is to create some sort of plot line for it, or a coherent theme, rather than a bunch of haphazardly related rooms. This plot can be complex like infiltrating a castle to garner the war plans of the evil Lord Zygol, simple like ridding the caves of goblins, or anything in between. Often the plot in an area can be advanced by some fairly simple puzzles or descriptions. With the help of special procedures written in C, involved puzzles of Zork-like complexity can be readily created.

Not all mobs have to be designed to be killed, nor does every shop keeper have to buy or sell something, they could just be created so that they refuse to trade with any player characters. The players will then wonder why the shopkeeper exists. Perhaps giving him a jewel will make him more friendly. In this way, an area can be made infinitely more exciting by coding some special procedures for it. Perhaps random teleporters throughout the area, perhaps some procedures that have mobiles respond to questions from players.

All in all, the best way to make an area interesting is to use variety, intelligence, and imagination in building. Try to imagine what it would be like for you to walk through and what you might try looking at or doing, and then try to incorporate that into your area. Show your area to others and take their advice. By taking all of this extra effort in creating your area, you will be rewarded with a lasting memory in the minds of many players.

2. The Mechanics of World Building

2.1. How World Files and Index Files Work

CircleMUD's world is defined by five types of files: world (rooms), mobiles (monsters), objects, shops, and zones. World files (*.wld) define the actual rooms which contain all other mobiles, objects, and players. Mobiles (*.mob) are the monsters which inhabit the MUD. Objects (*.obj) are the weapons, armor, treasure, and other objects manipulated by players and monsters. Shop files (*.shp) define the MUD's shopkeepers, controlling what they buy, sell, and say. Finally, Zone files (*.zon) bring all the previous elements together, telling the MUD how monsters should be equipped, where monsters should be placed, where objects on the ground should be, which doors should be locked, etc. These five types of files are collectively referred to as "the world", or sometimes the "tinyworld files."

CircleMUD uses "split world files" to make the world easier to manipulate. Instead of all the rooms being lumped together in a single, cumbersome file, the rooms are split into many different files, one file for each area of the world. All five types of files are split in a similar manner. Circle has one directory for the room files (lib/world/wld), one directory for the object files (lib/world/obj), and so forth. Also in each of these directories is a file called 'index' that tells the server which files from that directory should be loaded when the server boots.

The index files make adding new areas easy. Instead of cutting and pasting huge chunks of area files, simply add the new areas to the appropriate directories and add their names to the index files. Make sure that the files listed in the index appear in numeric order.

Every world file used by Circle (including the index files) must be terminated by the dollar sign ($) to tell the server that the file has ended. Without the dollar sign, the server will not boot properly.

2.2. Using Bitvectors

When learning about the formats of CircleMUD world files, you'll frequently see references to "bitvectors". A bitvector is a group of flags which each can be either on or off. Bitvectors and their flags are used in many ways within CircleMUD, such as to define the personality of mobiles, the characteristics of rooms, etc. Understanding how to use bitvectors is essential if you want to build a CircleMUD world.

At every point where this document says a bitvector is required, it will be accompanied by a table describing the flags which you can use with that bitvector. The table will look something like this:

1 a DIRTY The room is dirty. 2 b STINKY The room stinks. 4 c MUSHY The floor of the room feels mushy. 8 d SWAMPY The room resembles a swamp.

Note there are four columns in the table. The first column contains the numeric value of the flag. The second contains the alphabetic representation of the flag. The third is the name of the flag, and the fourth is a description of what the flag does.

There are two ways you can construct a bitvector with the table above: the numeric method and the alphabetic method. The numeric method is to select all flags you'd like to activate, take the numbers of those flags as listed in the first column of the table, and add them all up. The resulting sum will be your bitvector. The alphabetic method is much easier: just write down all the letters of the flags you'd like to use with no spaces in between. For both numeric and alphabetic bitvectors, use "0" to indicate a bitvector where none of the flags are set.

For example, imagine you want to create a room that is dirty, mushy, and resembles a swamp, but does not stink. Using the numeric method, you'd look up the numbers of those three flags (1 for dirty, 4 for mushy, and 8 for swampy), and add them up to get "13". Using the alphabetic method, the bitvector would simply be "acd". Bitvectors are case-sensitive; "acd" is very different from "Acd" and "ACD".

At every point where the CircleMUD format requires a bitvector, you can write either a numeric bitvector or an alphabetic bitvector. They are completely interchangeable. However, be forewarned that if you use alphabetic bitvectors, your area will not be compatible with MUDs based on the original DikuMUD. Alphabetic bitvectors are a CircleMUD enhancement and may not be supported by MUDs based on Gamma Diku.

In some bitvector tables, you will see values whose descriptions say "Reserved for internal use" or "Do not use". You should never set those flag values in your world files.

3. World (Room) Files

ROOMS The first room of your world file should be the room where the area will connect to the rest of the mud.

3.1. The Format of a Room

The format of a room is:

#<virtual number> <room name>~ <Room Description> ~ <zone number> <room bitvector> <sector type> {Zero or more Direction Fields and/or Extra Descriptions} S

There can be between 0 and 6 Direction Fields. There should not be more than one Direction Field for a particular direction. No Extra Descriptions are required but an unlimited number are allowed. Each room is terminated with the literal letter 'S'.

Virtual Number This number is critical; it is the identity of the room within the game. All other files will use this number to refer to this room. From within the game, this number can be used with 'goto' to go to this room. The virtual numbers must appear in increasing order in the world file.

Room Name This string is the room's title, which is displayed before the room description when players look at the room, or displayed alone if players are using 'brief').

Room Description The description of the room seen when players enter.

Zone Number This number is obsolete and no longer used. Theoretically it should contain the zone number of the current room but in reality it is ignored; it is maintained as part of the format for backwards compatibility.

Room Bitvector A bitvector (see "Using Bitvectors" above), with the following values:

1 a DARK Room is dark. 2 b FALL Room is a fall trap; char loses hp for falling. 4 c NOMOB MOBs (monsters) cannot enter room. 8 d INDOORS Room is indoors. 16 e PEACEFUL Room is peaceful (violence not allowed). 32 f SOUNDPROOF Shouts, gossips, etc. will not be heard in room. 64 g NOTRACK "track" will never find a path through this room. 128 h NOMAGIC All magic attempted in this room will fail. 256 i TUNNEL Only one person allowed in room at a time. 512 j PRIVATE Cannot teleport in or GOTO if two people here. 1024 k GODROOM LVL_GOD and above only allowed. 2048 l HOUSE Reserved for internal use. Do not set. 4096 m HOUSE_CRASH Reserved for internal use. Do not set. 8192 n ATRIUM Reserved for internal use. Do not set. 16384 o OLC Reserved for internal use. Do not set. 32768 p BFS_MARK Reserved for internal use. Do not set. 65536 q ARENA 131072 r NOSCAN 262144 s NORECALL 524288 t NOSUMMON u SPIKE Player takes damage from being impaled on spike(s). v FIRE Player takes damage from being burned. w MINE Player take damage coming and going from mines. x CRUSH Player crushed (will almost always die!).

Sector Type A single number (not a bitvector) defining the type of terrain in the room. Note that this value is not the number of movement points needed but just a number to identify the sector type. It can be any of the following:

0 INSIDE Indoors - typically small number of move points needed. 1 CITY The streets of a city. 2 FIELD An open field. 3 FOREST A dense forest. 4 HILLS Low foothills. 5 MOUNTAIN Steep mountain regions. 6 WATER_SWIM Water (swimmable). 7 WATER_NOSWIM Unswimmable water - boat required for passage. 8 UNDERWATER Underwater. - scuba gear or water breathing required 9 FLYING Wheee! - air boat or wings AFF required.

Direction Fields and Extra Descriptions This section defines the room's exits, if any, as well as any extra descriptions such as signs or strange objects that might be in the room. This section can be empty if the room has no exits and no extra descriptions. Otherwise, it can have any number of 'D' (Direction Field) and 'E' (Extra Description) sections, in any order. After all exits and extra descriptions have been listed, the end of the room is signalled with an 'S'.

3.2. The Direction Field

The general format of a direction field is:

D<direction number> <general description> ~ <keyword list>~ <door flag> <key number> <room linked>

Direction Number The direction this is an exit description for; one of the following: 0 North 1 East 2 South 3 West 4 Up 5 Down

General Description The description shown to the player when she types "look <direction>".

Keyword List A list of acceptable terms that can be used to manipulate the door with commands such as "open", "close", "lock", "unlock", etc. The list should be separated by spaces, i.e.: door oak big~

Door Flag Can take one of three values:

0 An unrestricted exit that has no door, or a special door cannot be opened or closed with the "open" and "close" commands. The latter is useful for secret doors, trap doors, or other doors that are opened and closed by something other than the normal commands, like a special procedure assigned to the room or an object in the room. 1 Normal doors that can be opened/closed/locked/unlocked/picked. 2 Pickproof doors: if locked, can be opened only with the key.

The initial state of all doors is open, but doors can be opened, closed, and locked automatically when zones reset (see the zone file documentation for details).

Key Number The virtual number of the key required to lock and unlock the door in the direction given. A value of -1 means that there is no keyhole; i.e., no key will open this door. If the Door Flag for this door is 0, the Key Number is ignored.

Room Linked The virtual number of the room to which this exit leads. If this number is -1 (NOWHERE), the exit will not actually lead anywhere; useful if you'd like the exit to show up on 'exits', or if you'd like to add a description for 'look <direction>' without actually adding an exit in that direction.

3.3. Room Extra Descriptions

Extra descriptions are used to make rooms more interesting, and make them more interactive. Extra descriptions are accessed by players when they type "look at <thing>", where <thing> is any word you choose. For example, you might write a room description which includes the tantalizing sentence, "The wall looks strange here." Using extra descriptions, players could then see additional detail by typing "look at wall". There can be an unlimited number of Extra Descriptions in each room.

The format of an extra description is simple:

E <keyword list>~ <description text> ~

Keyword List A space-separated list of keywords which will access the description in this E section.

Description Text The text that will be displayed when a player types "look <keyword>", where <keyword> is one of the keywords specified in the Keyword List of this E section.

3.4. World File Example

Here's a sample entry from a CircleMUD world file:

#18629 The Red Room~ It takes you a moment to realize that the red glow here is coming from a round portal on the floor. It looks almost as if someone had painted a picture of a dirt running through a field on the floor of this room. Oddly enough, it is so realistic you can feel the wind in the field coming out of the picture. ~ 186 ad 0 D0 You see a big room up there. ~ ~ 0 -1 18620 D1 You see a small room. ~ oak door~ 1 18000 18630 E portal floor~ It looks as if you could go down into it... but you can't be sure of where you will end up, or if you can get back. ~ S

This room is virtual number 18629, called "The Red Room". It is dark and indoors, with an "INDOORS" sector type. It has an exit north and east. The north exit leads to room 18620; if a player types "look north" it will say "You see a big room up there." The exit east is a normal, pickable door that leads to room 18630 and which takes key number 18000. There is one extra description for "portal" and "floor".

3.5. Traps

Death Traps These are to encourage "intelligent exploration", not to just "kill" players. You must follow these rules: 1.Do NOT make the room or adjoining room DARK, so that the the title of the trap can be seen with an "exits" command in a room connected to it. For example, If I were exploring and saw:

West In A Really Hot Burning Flame

I'd think twice about going west.

This room should obviously have a FIRE bit assigned to it.

2.A general rule of thumb is to have 1 death trap per 50-70 rooms. This is all that is required to make "stupid wandering" dangerous. (All we are trying to do here is encourage "intelligent exploration".)

There are many ways to make traps. Read the help file online for more info. The room bits that inflict damage are FALL, SPIKE, FIRE, MINE, and CRUSH. More will be added in the future.

FALL damage = 50d6 SPIKE damage = 50d8 FIRE damge = 50d7 MINE damage = 25d6 (coming and going) CRUSH damage = 250d4 (will VERY likely kill all characters!)

Monks take half damage from FALLs, Druids take half damage from FIRE, and anyone who is sancted takes half damage (as usual).

4. Mobile (Monster) Files

4.1a. Guidelines for mobs

We are very free form here, but again, some general guidelines: Make the level of your mobs match the level of your area and the quality of the equipment that they will wear. In general, a level X Warrior should be able to kill a level X mob if he is fully healthy. Use "simple" format mobs only (see docs), as The Time of the Shadows does not support "detailed" mobs. We have a number of "special routines" that you can add to your mobs. Fighter, cleric, magic-user, thief, janitor, fido, and cityguard are just a few examples. If you desire to use a SPEC PROC, you must do the following:

1. CONTACT A CODER FOR A LIST OF CURRENT SPECS 2. Have the Coder declare your mob as a user of the special procedure 3. If no proc exhists, beg them to code one for you and return to step 2. 4. You MUST add the ACT_SPEC bit to the mobs, but DO NOT do this until a Coder has declared it for your mob!

Some current procedure examples: fighter - able to kick and bash cleric - can remove sanctuary, cast harm, blindness, poison, etc magic user - fireball, ice storm, meteror swarm, etc thief - can steal items/gold from pc's janitor - basically a scavenger fido - come on, everyone knows what a fido does. cityguard - see fido

MONSTER LOOKUP TABLE These is general guidelines for creating monsters. This is for creating Simple monsters. The Time of the Shadows does not support Detailed mobiles. Details are made up for by writing special procedures for the mobs. Do NOT add the SPEC flag to a mob UNTIL the special procedure has been coded and declared (refer to above chart). Special mobs should be worth more exp than normal mobs. The idea is that a X level fighter is equal to about a X level monster! This implies that the <THAC0> ought to decrease by one every level (starting at '20' on level 1 - minimum is '1' from level 20+). The damage given by a monster is also important - average weapon damage is at the moment 1d8. LEVEL AVERAGE AVERAGE SUGGESTED SUGGESTED SUGGESTED HIT POINTS EXPERIENCE THACO ARMOR CLASS BARE HAND DAM 0 [001..010] [25] 20 10 1d4+0 (2.5) 1 [011..022] [100] 20 9 1d5+0 (3.0) 2 [023..035] [200] 19 8 1d6+0 (3.5) 3 [036..047] [350] 18 7 1d7+0 (4.0) 4 [048..060] [600] 17 6 1d8+0 (4.5) 5 [061..072] [900] 16 5 2d4+0 (5.0) 6 [073..085] [1500] 15 4 1d8+1 (5.5) 7 [086..097] [2250] 14 4 2d4+1 (6.0) 8 [098..110] [3750] 13 3 2d5+1 (7.0) 9 [111..122] [6000] 12 3 2d5+1 (7.0) 10 [123..135] [9000] 11 2 2d6+1 (8.0) 11 [136..147] [11000] 10 2 2d6+1 (8.0) 12 [148..160] [13000] 9 2 2d7+1 (9.0) 13 [161..172] [16000] 8 2 2d7+1 (9.0) 14 [173..185] [18000] 7 1 2d8+1 (10.0) 15 [186..197] [21000] 6 1 2d8+2 (11.0) 16 [198..210] [24000] 5 1 2d8+2 (11.0) 17 [211..222] [28000] 4 1 3d6+2 (12.5) 18 [223..235] [30000] 3 0 3d6+2 (12.5) 19 [236..247] [35000] 2 0 3d6+3 (13.5) 20 [248..260] [40000] 1 0 3d6+4 (14.5) 21 [261..350] [50000] 0 -1 3d7+4 (16.0) 22 [351..400] [60000] 0 -1 3d8+4 (17.5) 23 [401..450] [70000] 0 -2 3d9+3 (18.0) 24 [451..500] [90000] 0 -3 3d9+3 (18.0) 25 [501..550] [100000] -1 -3 4d6+4 (18.0) 26 [551..600] [115000] -1 -4 4d6+5 (19.0) 27 [601..650] [130000] -2 -4 4d6+5 (19.0) 28 [651..700] [145000] -3 -4 4d6+5 (19.0) 29 [701..800] [160000] -3 -5 4d7+4 (20.0) 30 [801..950] [180000] -4 -5 4d8+5 (23.0) 31 [951..1200] [200000] -4 -6 4d9+5 (25.0) 32 [1201..1500] [225000] -5 -6 4d9+7 (27.0) 33 [1501..1800] [250000] -5 -7 6d7+5 (29.0)

NO MOB SHOULD BE HIGHER THAN LEVEL 33, but if you want to make the mob equivalent to a higher lever (harder) then use the following chart but keep the level at 33 33 [1801..2100] [280000] -6 -7 6d7+7 (31.0) 33 [2101..2400] [310000] -7 -8 6d8+6 (33.0) 33 [2401..2700] [350000] -8 -8 6d9+5 (35.0) 33 [2701..3000] [400000] -9 -9 8d7+5 (37.0) 33 [3001..3500] [450000] -10 -9 8d7+7 (39.0) 33 [3501..4000] [600000] -10 -10 8d8+5 (41.0) ----------------------------------------------------------------------------- We are not using an exact formula for mob experience in order to leave more freedom to the builders. These are some general guidelines for mobs not fitting the simple charts:

The farther from a hometown (harder to reach) a mob is, the more exp it should give (though not a lot more).

For each bit (something to make it more difficult like double hit) the mobile has, more experience should be assigned to the mob.

The max exp gain is 3k per level of the player, thus it is silly to give a mob more experience than can ever be gained. With this in mind, try to keep within the range of 0-95000 exp. 20-25000 is an VERY good gain for a solo character defeating a fairly tough mob. Only EXCEPTIONAL mobs should give 30-50k. More than 50k should only be given by mobs that require a group of TOUGH characters. If the mob requires a group of HIGH level adventurers to defeat it, then apply suitable exp so that each group member will receive a decent amount (though probably not the max). This may seem like a low amount, but we want people to work to gain their levels, and we want it to take some real time so nobody is immorting within 4 days. Keep in mind that players also gain experience from damage done during combat.

Note:

<THAC0> this is the number needed to roll on a 20-sided dice to hit opponent <AC> equivalent of zero. A 20 is always considered a hit, a 1 is always a miss. For example: Your <THAC0> is 14 (ei. level 7 fighter). You are fighting an opponent with <AC> '3'. Thus to hit <AC> 0 you must roll a 14 or greater. To hit <AC> 3 you must then roll 11 (14-3) or greater. If you had to hit <AC> '-3' you would have to roll 17 (14-(-3)) or greater on a 20 sided dice.

4.1b. The Format of a Mobile

The format of a mobile is:

#<virtual number> <alias list>~ <short description>~ <long description> ~ <detailed description> ~ <action bitvector> <affection bitvector> <alignment> <type flag> {type-specific information; see below for details}

The format of mobiles varies depending on the Type Flag. See below for documentation of the formats of the various types.

Virtual Number This number is critical; it is the identity of the mobile within the game. It is the number that will be used to reference the mobile from zone files and is the number used to 'load' mobiles from within the game. The virtual numbers must appear in increasing order in the mob file.

Alias List The list of keywords, separated by spaces, that can be used by players to identify the mobile. The mobile can only be identified using the keywords that appear in its alias list; it cannot be identified by a word that appears only in its name. Great care should be taken to ensure that the ings of names and aliases match. Fill words such as "the", "a", and "an" should not appear in the Alias List.

Short Description The description of the mobile used by the MUD when the mobile takes some action. For example, a short description of "The Beastly Fido" would result in messages such as "The Beastly Fido leaves south." and "The Beastly Fido hits you hard." The Short Description should never end with a punctuation mark because it will be inserted into the middle of sentences.

Long Description The description displayed when a mobile is in its default position; i.e., "The Beastly Fido is here, searching through garbage for food." When the mobile is in a position other than its default position, such as sleeping or incapacitated, the short description is used instead -- i.e., "The Beastly Fido is lying here, incapacitated." Unlike the Short Description, the Long Description should end with appropriate punctuation.

Detailed Description The description displayed for a mobile when a player looks at the mobile; i.e. types "look at <mobile>".

Action Bitvector A bitvector (see "Using Bitvectors" above) with the following values:

1 a SPEC This flag must be set on mobiles which have special procedures written in C. In addition to setting this bit, the specproc must be assigned in spec_assign.c, and the specproc itself must (of course) must be written. See the section on Special Procedures in the file coding.doc for more information.

2 b SENTINEL Mobiles wander around randomly by default; this bit should be set for mobiles which are to remain stationary.

4 c SCAVENGER The mob should pick up valuables it finds on the ground. More expensive items will be taken first.

8 d ISNPC Reserved for internal use. Do not set.

16 e AWARE Set for mobs which cannot be backstabbed. Replaces the ACT_NICE_THIEF bit from Diku Gamma.

32 f AGGRESSIVE Mob will hit all players in the room it can see. See also the WIMPY bit.

64 g STAY_ZONE Mob will not wander out of its own zone -- good for keeping your mobs as only part of your own area.

128 h WIMPY Mob will flee when being attacked if it has less than 20% of its hit points. If the WIMPY bit is set in conjunction with any of the forms of the AGGRESSIVE bit, the mob will only attack mobs that are unconscious (sleeping or incapacitated).

256 i AGGR_EVIL Mob will attack players that are evil-aligned.

512 j AGGR_GOOD Mob will attack players that are good-aligned.

1024 k AGGR_NEUTRAL Mob will attack players that are neutrally aligned.

2048 l MEMORY Mob will remember the players that initiate attacks on it, and initiate an attack on that player if it ever runs into him again.

4096 m HELPER The mob will attack any player it sees in the room that is fighting with a mobile in the room. Useful for groups of mobiles that travel together; i.e. three snakes in a pit, to force players to fight all three simultaneously instead of picking off one at a time.

8192 n NOCHARM Mob cannot be charmed.

16384 o NOSUMMON Mob cannot be summoned.

32768 p NOSLEEP Sleep cannot be cast on mob.

65536 q NOBASH Large mobs such as trees that cannot be bashed.

131072 r NOBLIND Mob cannot be blinded.

s TWO_ATT Mob has a chance of hitting twice in a round. t THREE_ATT Mob has a chance of hitting three times a round. If this and DBLHIT are defined, the mob will attack 4 times a round USE ONE OR THE OTHER BUT NOT BOTH!!!

Affection Bitvector A bitvector (see "Using Bitvectors" above) with the following values:

1 a BLIND Mob is blind. 2 b INVISIBLE Mob is invisible. 4 c DETECT_ALIGN Mob is sensitive to the alignment of others. 8 d DETECT_INVIS Mob can see invisible characters and objects. 16 e DETECT_MAGIC Mob is sensitive to magical presence. 32 f SENSE_LIFE Mob can sense hidden life. 64 g WATERWALK Mob can traverse unswimmable water sectors. 128 h SANCTUARY Mob is protected by sanctuary (takes half damage). 256 i GROUP Reserved for internal use. Do not set. 512 j CURSE Mob is cursed. 1024 k INFRAVISION Mob can see in dark. 2048 l POISON Reserved for internal use. Do not set. 4096 m PROTECT_EVIL Mob is protected from evil characters. 8192 n PROTECT_GOOD Mob is protected from good characters. 16384 o SLEEP Reserved for internal use. Do not set. 32768 p NOTRACK Mob cannot be tracked. 65536 q WATERBREATH Mob can move underwater 131072 r UNUSED17 Unused (room for future expansion). 262144 s SNEAK Mob can move quietly without room being informed. 524288 t HIDE Mob is hidden; can only be seen with sense life. 1048576 u UNUSED20 Unused (room for future expansion). 2097152 v CHARM Reserved for internal use. Do not set. w WINGS Mob can fly through flying rooms.

Alignment A number from -1000 to 1000 representing the mob's initial alignment.

-1000...-350 Evil -349...349 Neutral 350...1000 Good

Type Flag This flag is a single letter which indicates what type of mobile is currently being defined, and controls what information CircleMUD expects to find next (i.e., in the file from the current point to the end of the current mobile). Standard CircleMUD 3.0 supports two types of mobiles: S (for Simple), and E (for Enhanced). The original DikuMUD and CircleMUD versions before 3.0 support type C (Complex) mobiles, but support for type C mobs has been dropped for Circle 3.0 and beyond. Check with your local implementor to see if there are any additional types supported on your particular MUD.

4.2. Type S Mobiles

For type S mobs, the type-specific information should be in the following format:

<level> <thac0> <armor class> <max hit points> <bare hand damage> <gold> <experience points> <load position> <default position> <sex>

Level The level of the monster, from 1 to 30.

THAC0 "To Hit Armor Class 0" -- a measure of the ability of the monster to penetrate armor and cause damage, ranging from 0 to 20. Lower numbers mean the monster is more likely to penetrate armor. The formal definition of THAC0 is the minimum roll required on a 20-sided die required to hit an opponent of equivalent Armor Class 0.

Armor Class The ability of the monster to avoid damage. Range is from -10 to 10, with lower values indicating better armor. Roughly, the scale is: AC 10 Naked person AC 0 Very heavily armored person (full plate mail) AC -10 Armored Battle Tank (hopefully impossible for players)

Note on THAC0 and Armor Class (AC): When an attacker is trying to hit a victim, the attacker's THAC0 and the victim's AC, plus a random roll of the dice, determines whether or not the attacker can hit the victim. (If a hit occurs, a different formula determines how much damage is done.) An attacker with a low THAC0 is theoretically just as likely to hit a victim with a low AC as an attacker with a high THAC0 is to hit a victim with a high AC. Lower attacker THAC0's and higher victim AC's favor the attacker; higher attacker THAC0's and lower victim AC's favor the victim.

Max Hit Points The maximum number of hit points the mobile is given, which must be given in the form "xdy+z" where x, y, and z are integers. For example, 4d6+10 would mean sum 4 rolls of a 6 sided die and add 10 to the result. Each individual instance of a mob will have the same max number of hit points from the time it's born to the time it dies; the dice will only be rolled once when a particular instance of the mob is created. In other words, a particular copy of a mob will always have the same number of max hit points, but different copies of the same mob may have different numbers of max hit points. Note that all three numbers, the 'd' and the '+' must always appear, even if some of the numbers are 0. For example, if you want every copy of a mob to always have exactly 100 hit points, write "0d0+100".

Bare Hand Damage (BHD) The amount of damage the mob can do per round when not armed with a weapon. Also specified as "xdy+z" and subject to the same formatting rules as Max Hit Points. However, unlike Max Hit Points, the dice are rolled once per round of violence; the BHD of a mob will vary from round to round, within the limits you set. For BHD, xdy specifies the dice rolls and z is the strength bonus added both to BHD and weapon-inflicted damage. For example, a monster with a BHD of 1d4+10 will do between 11 and 14 hitpoints each round without a weapon. If the monster picks up and wields a tiny stick which gives 1d2 damage, then the monster will do 1d2 + 10 points of damage per round with the stick.

Gold The number of gold coins the mobile is born with.

Experience The number of experience points the mobile is born with.

Load Position The position the mobile is in when born, which should be one of the following numbers:

0 POSITION_DEAD Reserved for internal use. Do not set. 1 POSITION_MORTALLYW Reserved for internal use. Do not set. 2 POSITION_INCAP Reserved for internal use. Do not set. 3 POSITION_STUNNED Reserved for internal use. Do not set. 4 POSITION_SLEEPING The monster is sleeping. 5 POSITION_RESTING The monster is resting. 6 POSITION_SITTING The monster is sitting. 7 POSITION_FIGHTING Reserved for internal use. Do not set. 8 POSITION_STANDING The monster is standing.

Default Position The position monsters will return to after a fight; which should be one of the same numbers as given above for Load Position. In addition, the Default Position defines when the mob's long description is displayed (see "Long Description" above).

Sex One of the following:

0 Neutral (it/its) 1 Male (he/his) 2 Female (she/her)

4.3. Type S Mobile Example

#3062 fido dog~ the beastly fido~ A beastly fido is mucking through the garbage looking for food here. ~ The fido is a small dog that has a foul smell and pieces of rotted meat hanging around his teeth. ~ afghq p -200 S 0 20 10 1d6+4 1d4+0 0 25 8 8 1

This is mobile vnum 3062. The Fido has a special procedure (a), is aggressive (f), stays in its own zone (g), is wimpy (h), and cannot be bashed (q). Also, the Fido cannot be tracked (affection bit p), and has an alignment of -200. After the S flag we see that the Fido is level 0, has a THAC0 of 20, an Armor Class of 10, 1d6+4 hit points (a random value from 5 to 10), and will do 1d4 hit points of bare hand damage per round. The Fido has 0 gold and 25 experience points, has a load position and default position of STANDING, and is male.

4.4. Type E Mobiles

Type 'E' mobiles are specific to Circle 3.0 and are designed to provide an easy way for MUD implementors to extend the mobile format to fit their own needs. A type E mobile is an extension of type S mobiles; a type E mobile is a type S mobile with extra data at the end. After the last line normally found in type S mobs (the one ending with the mob's sex), type E mobiles end with a section called the Enhanced section. This section consists of zero or more enhanced mobile specifications (or "E-specs"), one per line. Each E-spec consists of a keyword followed by a colon (":") and a value. The valid keywords are listed below. An 'E' must then come after all E-specs to signal the end of the mob.

The formal format of an E mobile is as follows:

<level> <thac0> <armor class> <max hit points> <bare hand damage> <gold> <experience points> <load position> <default position> <sex> {E-spec list} E

4.5. Type E Mobile Example

Let's say that you wanted to create an enhanced Fido like the one in the previous example, but one that has a bare-hand attack type of 4 so that the Fido bites you instead of hitting you. Let's say you also wanted to give this Fido the a strength of 18. You might write:

#3062 fido dog~ the beastly fido~ A beastly fido is mucking through the garbage looking for food here. ~ The fido is a small dog that has a foul smell and pieces of rotted meat hanging around his teeth. ~ afghq p -200 E 0 20 10 1d6+4 1d4+0 0 25 8 8 1 BareHandAttack: 4 Str: 18 E

In the above example, the two E-specs used were BareHandAttack and Str. Any number of the E-specs can be used in an Enhanced section and they may appear in any order. The format is simple: the E-spec keyword, followed by a colon, followed by a value. Note that unlike type S mobiles, type E mobiles require a terminator at the end of the record (the letter 'E').

4.6. E-Spec Keywords Valid in CircleMUD 3.00

The only keywords supported under Circle 3.00 are BareHandAttack, Str, StrAdd, Int, Wis, Dex, Con, and Cha. However, the E-Specs have been designed such that new ones are quite easy to add; check with your local implementor to see if your particular MUD has added any additional E-Specs. Circle 3.10's Enhanced section will have considerably more features available such as the ability to individually set mobs' skill proficiencies.

BareHandAttack This controls the description of violence given during battles, in messages such as "The Beastly fido bites you very hard." BareHandAttack should be one of the following numbers:

0 hit/hits 1 sting/stings (bows?) 2 whip/whips 3 slash/slashes 4 bite/bites 5 bludgeon/bludgeons 6 crush/crushes 7 pound/pounds 8 claw/claws 9 maul/mauls 10 thrash/thrashes 11 pierce/pierces 12 blast/blasts 13 punch/punches 14 stab/stabs

Messages given when attackers miss or kill their victims are taken from the file lib/misc/messages. The attack type number for weapons is 300 plus the number listed in the table above; i.e. to modify the message give for "maul", you would add attack type number 309 in lib/misc/messages.

Str StrAdd Int Wis Dex Con Cha The mobile's Strength, Strength Add, Intelligence, Wisdom, Dexterity, Constitution and Charisma, respectively.

5. Object Files

5.0. Class Restrictions The folloing information is a group of explanations and qualifications for the item restrictions that members of each class encounter.

MAGES should not be able to wear metal armor. The only exception to this rule is elven or mithril armor, which allows magic s to be cast. Mages can wear animal skins, including dragon scale. The reason the mages have trouble with metal, is that their magic deals with natural powers that involve magnetism and polarity. Small amounts of metal (such as medallions) especially those with a magical field encasing them, are acceptable for Mage use.

CLERICS are holy warriors of a type, and as such receive some battle training, however, they only receive training in NON slashing and piercing weapons. They are quite apt at useing clubs, maces, whips, etc., but not swords or daggers (unless for sacrificial purposes). The can wear most kinds of armor, but they must remain free enough to move their arms for prayer and wound mending.

THIEVES can wear leather armor, padded armor, studded leather armor, elven chain armor or animal scale/skins. Because the primary objective of the thief is to move silently, heavy plate renders his skills useless, so thieves should not be able to wear any cumbersome or loud items. Thieves cannot backstab without a stabbing or piercing weapon, but they can engage in combat with most weapons. They do not use weapons that they cannot conceal on their person (thus no spears, large axes, staves, bastard swords etc.) They may carry shields, provided the shields are of a reasonable size. Thieves will not wear anything on their head that may hamper their hearing or vision, nor will they wear anything that will hamper their silence and hiding skills. Thus visors and helmets of most kinds are usually not used.

WARRIORS are able to pick up almost anything and use it. They tend to avoid things used by those wimpy people who use that sissy and treacherous thing called "Magic". If it's magical, and it helps them to bash skulls in, then they have no qualms about using it. As long as it makes them better in battle, and allows them to avoid getting beat on quite as heavily (not that they mind taking a beating).

RANGERS, like thieves, have many skills which rely on the ability to move silently, quickly and without encumbrence. However, rangers should be able to wear a heavier grade of armor than thieves. They may carry shields, provided the shields are of a reasonable size. Rangers also use a larger arsenal of weaponry, though they avoid any large weapons or heavy weapons. They almost always fight in a 2 weapon style, and both weapons must be light and fast.

DRUIDS are priests of nature and therefore allowed only to use 'natural' or organic items, such as leather, skins, wood, scales etc. Any item worn or wielded (except jewelry and magic items) must have been alive at one point. Druid weapons are limited to bludgeoning items, sickles/scythes, daggers, darts or spears. Again the weapon must be made of material that was once or is a force of nature (such as lightning or fire).

BARBARIANS have a great fear of magic, and cannot use any magically enhanced (enchanted or having a MAG flag) weapons or armor. They can, however use glowing items that are NOT magic. They can usually abide by magic that is of a clerical nature. Thus many scrolls and potions are usable.

NIGHT BLADES are a class that have combined thieving and magic to become terrific assassins. As such, they combine the restrictions of both classes. Because their magic is not as powerful, and usually draws on evil forces instead of more magnetic and polar ones, they are allowed more metal on their body, as long as it will not hinder their ability to be silent and deadly.

KNIGHTS have a reputation to uphold, and will not be seen in any shabby, dirty or rusty armor. They tend to favor heirlooms (theirs or those of their opponent) as long as those items are shiny and impressive.

MONKS should not be allowed to wear heavy armor, carry shields or wear helmets. A monk must be able to use all of his or her senses, so any item that hampers their hearing, or sight is abhored by them. Monks use meditation to concentrate on inner strength, and find armor to be more a hindrance than help. Monks also take penalties for wearing too much armor. A monks body must be able to move and flex in and adjust for many positions, so any armor that hinders their movement is not used by them. Monks are minimalists. They do not like lugging around extra things, or big flashy things. They do not like to have things of great monetary value, instead they value that which can be put to good use. If it is it very useful, and also expensive, then they would probably endure it. Monks can use most weapons, but they are much more effective with their bare hands, so weapons that require above average training would hamper them.

ROGUES feel the world owes them a living, and in order to get all they can will acquire a conglomeration of armors and weapons. They have no real restrictions on these items, as long as they once belonged to somebody else.

5.1a. Some Guidelines and Information for Balance

We are going to GREAT pains to balance the object file on the mud. It was atrocious in the beginning because so many people wrote areas and they were "designed" for different muds, and some common sense rules weren't followed. You can create almost any object that you desire. Please make full use of wands/scrolls/staves/potions, the only stipulation is that their rent and cost reflect their worth. WEAPONS THE ABSOLUTE MAXIMUM DAMAGE THAT A MORTAL-WIELDABLE WEAPON CAN DO IS 30. (This applies to all weapons that load in the game. The QUEST only weapon will do more, but only one will exhist in the entire rent file at a time.) If you exceed this value one of two things will occur: 1.The weapon will be toned down to meet with this rule. 2.A GOD_ONLY flag will be added and it will be removed from your zone file. (Mortals will never be able to wield it/wear it) If a weapon is under 1d10 (10 max damage), you may add whatever "applys" that you wish. (Strength,Dex, etc). If a weapon falls in the range of 1d10 to about 3d5 (10-15 max damage), you may add applys, but one of them has to be a "nasty/bad" one. If a weapon can do more than 20 damage, YOU MUST ADD SOMETHING THAT MAKES ITS USE RESTRICTED.... this can be a "class only flag", "God only flag", "bad/nasty applys", making it evil, good or neutral aligned or making it very heavy.

You may use any of the "special effects", such as "humming", etc, but the ones that appear in the items short description (glowing, humming, invisible, etc) must be limited to 2 or less per item. The weapon's power should match the difficulty in getting it... ie "common weapons" (less than 10 damage) can go just about anywhere, while "great weapons" (The Spider Dagger or thunderbolt, for example) should go on mobs that are worthy of them. Something that does more than 25 damage in one swat, should go on a mob that has casting ability, a large number of hit points, and basically should be very risky to get. (Ie you have to fight your way through several lesser mobs, find a secret door, then go up agains a mob that can cast "harm", etc before you finally loot it off its corpse... if you are lucky.) Keep in mind that the extremely powerful weapons are desired by everybody, and can royally screw the balance of a mud up (see removal of spider dagger/ thunderbolt/etc). For this reason, they MUST exist in only limited quantities. (More will be covered in the zone file explanations). WEAPONS & CARRYING CAPACITY The weight of a weapon determines the strength needed to wield the weapon, these values should be used:

Strength HR DAM Carry Weight Wield Weight 0 -5 -4 0 0 1 -5 -4 3 1 2 -3 -2 5 2 3 -3 -1 10 3 4 -2 -1 25 4 5 -2 -1 55 5 6 -1 0 80 6 7 -1 0 90 7 8 0 0 100 8 9 0 0 100 9 10 0 0 115 10 11 0 0 115 11 12 0 0 140 12 13 0 0 140 13 14 0 0 170 14 15 0 0 170 15 16 0 1 195 16 17 1 1 220 18 18 1 2 255 20 18/01-18/50 1 3 280 22 18/51-18/75 2 3 305 24 18/76-18/90 2 4 330 26 18/91-18/99 2 5 380 28 18/100 3 6 480 30 19 3 7 640 32 20 3 8 700 34 21 4 9 810 41 22 4 10 970 41 23 5 11 1130 41 24 6 12 1440 41 25 7 14 1750 100

HR = Hit Roll applied to <THACO> DAM = Applied to damage roll Carry Weight = Maximum weight that can be carried Wield Weight = Maximum weight that can be wielded

Notes: Strength above 20 is only used by NPC's - not used by players. No weapon may ever exceed 40 pounds in weight. Keep in mind that only HALF GIANTS can gain a 20 strength. The max for the other classes is 18/100. Therefore most items should NOT exceed a weight of 30 pounds.

No shop-produced weapon may exceed 2d8 in total damage or weigh more than 20 pounds. Read notes regarding Magic before making a monster-slayer +50 +70 with +800 to strength

ARMOR Please observe these guidelines:

Bracelets, rings, necklaces and belts should not have an "armor" factor of more than 3. Shields average around 3-5 ac, 8 for EXTREMELY good ones. Helmets should never go above 10 ac for any reason. (average:4) Boots... see helmets Leggings/Sleeves: average around 5, 12 for GREAT ones. Cloaks/Capes: try to keep them under 6 Breast plates/Body Armor.... average around 5, 12 for GREAT ones.

CHARACTER & MONSTER ARMOR: <AC> ranges from 10 to -10. This is what it means: AC 10 = Naked person AC 0 = Very heavily armored person (Full plate mail at *all* body parts) AC -10 = Think Sherman Tank (Hopefully impossible for players) The actual score is represented by x/10. Thus someone with a -100/10 ac actually has a -10. Percentwise Coverage Of Armor And Allowed AC Ranges Location Protects Range -------- -------- ----- Body 30% [1..10] Head 20% [1..10] Legs 20% [1..10] Feet 10% [1..10] Arms 10% [1..10] Hands 10% [1..10] Shield 10% [1..10] Magic 10% [1..10] This means that the AC of the Item is multiplied to fit the percentage. Thus a suit of field plate with an ac of 12, would actually apply an armor class of 36 (devided by 10 of course).

In general: material armor apply weight cost (rent included) ~~~~~~~~ ~~~~~~~~~~~~ ~~~~~~ ~~~~~~~~~~~~~~~~~~~~ Leather very low Very Light Cheapest Studded Lether Splint Mail Chain Mail average average average Bronze Plate Iron Plate Black Metal/Steel very high heavy extremely expensive If the armor is "very good", it must exist in minimal quantities. This is accomplished my limited the max existing in the Zone file and by using the Percent Load commands (still being worked on).

Price Guidelines: AC BODY LEGS HEAD ARMS FEET ARMOUR ---- ---- ---- ---- ---- ---- ------ +1 100 50 50 25 25 Cloth (Heavy) +2 200 100 100 50 50 Soft Leather +3 500 150 150 75 75 Studded Leather +4 1,000 500 500 250 250 Scale Mail +5 2,500 1,250 1,250 625 625 Chain Mail +6 7,000 3,500 3,500 1,750 1,750 Bronze Plate Mail +7 18,000 9,000 9,000 4,500 4,500 Plate Mail +8 35,000 17,500 17,500 8,750 8,750 Field Plate Mail +9 50,000 25,000 25,000 12,500 12,500 Full Plate +10 75,000 37,500 37,500 18,750 18,750 Anti Bomb ShieldPlate *Hands and shields should be regarded as arms. IMPORTANT NOTICE Rare items should only exist in minimal quantities! The occurence of magical protection should be limited since it is easy to carry.

MAGICAL ITEMS: In The Time of the Shadows it is possible to create all kinds of Magic items - but to avoid chaos (having 1st levels kill 20 level dragons) these rules for Magic must be obeyed. It is possible to create almost any item. Items can change the <STR>, <DEX>, <WIS>, <INT>, <CON>, <HP>, Age, Weight, Height, etc. None of these changes are directly permanent in effect, but may be so indirectly - example:

(example) Boa found a helmet of Increase Wisdom/Intelligence (some + modifier). When Boa wear this helmet - these abilities improve, when he removes the helmet they return to their original state. Thus no direct change has happened. BUT if Boa practices s (upon which INT and WIS determines the rate & success) he will learn them much faster than normal. This was an example of an indirect change. Guidelines when making Magic Items: NEVER use large modifiers. Exceptional items should modify at most by +3. This includes, swords, armors, ability changes. Exceptional items should modify MAX HIT, MANA, and MOVE by 25-30 at most. "Good" would be a modifier of 10. "Great" would have a modifier of 15-20. Impose a penalty on the Item For example make a helmet of wisdom may at the same time reduce the constitution. Or maybe a ring of masochism - when you wear it your MAX-HITPOINT increase by +20, when you remove it they disappear again. The ring likes to remove itself from the finger. Limited number in existence Good items should have a limit to how many load into the game at any given time. This is set in the ZONE file.

We would like to keep the MAX damroll possible (all dam bonus in their eq added together) below 40. This will be different for each class. Mages max damroll should be about 30, while Warriors may be 40-43. To put this simply, +1 dam is GREAT, +2 dam is FANTASTIC, and +3 should not be found except on holdabe items, and on a very FEW body locations. The best mobs should not do more than about 60-65 points of damage per attack to evevn this out. A level 30 warrior with a 10d3 weapon (no plusses should be on it) and a dam roll of 40 (including Strength bonus) would be doing 60 points of damage per hit on average. This means that they would OBLITERATE and possibly LIQUIFY through Sanctuary. Especially if they have Weapons Knowledge. (The damage messages will be changin once balance has been reached)

5.1b. The Format of an Object

#<virtual number> <alias list>~ <short description>~ <long description>~ <action description>~ <type flag> <extra (effects) bitvector> <wear bitvector> <value 0> <value 1> <value 2> <value 3> <weight> <cost> <rent per day> <min level> {Zero or more Extra Descriptions and/or Affect Fields}

There can be an unlimited number of Extra Descriptions and up to 6 Affect Fields.

Virtual Number This number is critical; it is the identity of the object within the game. It is the number that will be used to reference the object from zone files and is the number used to 'load' objects from within the game. The virtual numbers must appear in increasing order in the obj file.

Alias List The list of keywords, separated by spaces, that can be used by players to identify the object. The object can only be identified using the keywords that appear in its alias list; it cannot be identified by a word that appears only in its name. Great care should be taken to ensure that the ings of names and aliases match. Fill words such as "the", "a", and "an" should not appear in the Alias List.

Short Description The description of the object used by the MUD when the object is used. For example, a short description of "a long, green stick" would result in messages such as "The Beastly Fido picks up the long, green stick." The Short Description should never end with a punctuation mark because it will be inserted into the middle of sentences.

Long Description The description displayed when the object is seen lying on the ground, i.e., "A furled umbrella is lying here." Unlike the Short Description, the Long Description should end with appropriate punctuation.

Action Description Action Descriptions are primarily used for magical objects (staves, wands, scrolls, and potions) to specify what message displayed to the room when the magical item is used. The Action Description should be given in the act format specified in act.doc. If no Action Description is present, a default message will be used: Staves: Rasmussen taps <object> three times on the ground. Wands: Rasmussen points <object> at Onivel. Scrolls: Rasmussen recites <object>. Potions: Rasmussen quaffs <object>.

For objects which are readable papers, the Action Description contains the text on the paper.

Type Flag A number which specifies what type of object is being defined; also controls the meanings of value0 through value4. The Type Flag must be one of the following numbers:

1 LIGHT Item is a light source. 2 SCROLL Item is a magical scroll. 3 WAND Item is a magical wand. 4 STAFF Item is a magical staff. 5 WEAPON Item is a weapon. 6 FIREWEAPON Currently not implemented. Do not use. 7 MISSILE Currently not implemented. Do not use. 8 TREASURE Item is treasure other than gold coins (i.e. gems) 9 ARMOR Item is armor. 10 POTION Item is a magical potion. 11 WORN Currently not implemented. Do not use. 12 OTHER Miscellaneous object with no special properties. 13 TRASH Trash -- junked by cleaners, not bought by shopkeepers. 14 TRAP Currently not implemented. Do not use. 15 CONTAINER Item is a container. 16 NOTE Item is a note (can be written on). 17 DRINKCON Item is a drink container. 18 KEY Item is a key. 19 FOOD Item is food. 20 MONEY Item is money (gold coins). 21 PEN Item is a pen. 22 BOAT Item is a boat; allows you to traverse SECT_WATER_NOSWIM 23 FOUNTAIN Item is a fountain. 24 SHIELD Item is a shield 25 INSTRUMENT Item is an instrument. (Bards must have to use s) 26 HOLY Item is a holy symbol. (Clerics need to pray for s) 27 AIRBOAT Item is an airboat. (can travers SECT_FLYING if worn) 28 SCUBA Item allows underwater travel if item is worn.

Extra (Effects) Bitvector A bitvector (see "Using Bitvectors" above), to define the "special effects" of the object. Flags that are marked as "cosmetic" merely add an interesting message to the object when it is examined, but has no substantive effect otherwise. The flags have the following values:

1 a GLOW Item is glowing (cosmetic). 2 b HUM Item is humming (cosmetic). 4 c NORENT Item cannot be rented. 8 d NODONATE Item cannot be donated. 16 e NOINVIS Item cannot be made invisible. 32 f INVISIBLE Item is invisible. 64 g MAGIC Item has a magical aura and cannot be enchanted. 128 h NODROP Item is cursed and cannot be dropped. 256 i BLESS Item is blessed (cosmetic). 512 j ANTI_GOOD Item cannot be used by good-aligned characters. 1024 k ANTI_EVIL Item cannot be used by evil-aligned characters. 2048 l ANTI_NEUTRAL Item cannot be used by neutral align characters. 4096 m ANTI_MAGIC_USER Item cannot be used by the Mage class. 8192 n ANTI_CLERIC Item cannot be used by the Cleric class. 16384 o ANTI_THIEF Item cannot be used by the Thief class. 32768 p ANTI_WARRIOR Item cannot be used by the Warrior class. 65536 q NOSELL Shopkeepers will not buy or sell the item. r ANTI_BARBARIAN Item cannot be used by the Barbarian class. s ANTI_RANGER Item cannot be used by the Ranger class. t ANTI_DRUID Item cannot be used by the Druid class. u ANTI_BARD Item cannot be used by the Bard class. v ANTI_NIGHT_BLADE Item cannot be used by the Night Blade class. w ANTI_ROGUE Item cannot be used by the Rogue class. x ANTI_MONK Item cannot be used by the Monk class. y ANTI_KNIGHT Item cannot be used by the Knight Class.

Wear Bitvector A bitvector (see "Using Bitvectors" above) with the following values:

1 a WEAR_TAKE Item can be taken (picked up off the ground). 2 b WEAR_FINGER Item can be worn on the fingers. 4 c WEAR_NECK Item can be worn around the neck. 8 d WEAR_BODY Item can be worn on the body. 16 e WEAR_HEAD Item can be worn on the head. 32 f WEAR_LEGS Item can be worn on the legs. 64 g WEAR_FEET Item can be worn on the feet. 128 h WEAR_HANDS Item can be worn on the hands. 256 i WEAR_ARMS Item can be worn on the arms. 512 j WEAR_UNUSED DO NOT USE!!! SHIELDS MUST BE HOLDABLE! 1024 k WEAR_ABOUT Item can be worn about the body. 2048 l WEAR_WAIST Item can be worn around the waist. 4096 m WEAR_WRIST Item can be worn around the wrist. 8192 n WEAR_HOLD Item can be held in either hand (using wield,hold, or grab).

Note that the TAKE bit controls whether or not an item can be picked up using the 'get' command, whereas the HOLD bit controls if the object can be worn using the 'hold' command.

Value 0, Value 1, Value 2, Value 3 These values are very central. They define the object's abilities based on the Type Flag. See the subsection "Object Value Definitions" below for a detailed description of the four Value fields.

Weight The weight of the object. The weight controls how many strength points a character must have to take the object, and is used to calculate when bags and other containers become full.

Cost The value of the object in gold coins; used by shopkeepers.

Rent Per Day The cost per day to rent the object in the Reception.

Min Level The minimum level the player must be in order to wear the object or to hold it.

5.2. Object Value Definitions

The meaning of an object's four values (value 0 through value 3) vary depending on the Type Flag of the object.

In the table below, 'unused' means that the server ignores the value; it can be set to any number (but 0 is always a safe bet). 'unimplemented' indicates a Type Flag currently not recognized by the server.

An index of numbers for use with magical objects can be found in Appendix A.

LIGHT (Type Flag 1) value 0: unused value 1: unused value 2: Capacity of light in hours. 0: Burned out light. -1: Eternal light source. value 3: unused

SCROLL (Type Flag 2) value 0: Level at which scroll's s are cast. value 1: number 1 value 2: number 2 value 3: number 3 If less than 3 s are desired, set unused values to -1.

WAND (Type Flag 3) value 0: Level at which wand's is cast. value 1: Charge capacity of wand (>= 1) value 2: Current number of charges remaining value 3: number

STAFF (Type Flag 4) value 0: Level at which staff's is cast. value 1: Charge capacity of staff (>= 1) value 2: Current number of charges remaining value 3: number

WEAPON (Type Flag 5) value 0: unused value 1: Number of damage dice value 2: Size of damage dice value 3: Weapon type for damage messages, one of: 0 hit/hits 1 sting/stings 2 whip/whips 3 slash/slashes 4 bite/bites 5 bludgeon/bludgeons 6 crush/crushes 7 pound/pounds 8 claw/claws 9 maul/mauls 10 thrash/thrashes 11 pierce/pierces 12 blast/blasts 13 punch/punches 14 stab/stabs

FIREWEAPON (Type Flag 6) unimplemented

MISSILE (Type Flag 7) unimplemented

TREASURE (Type Flag 8) value 0: unused value 1: unused value 2: unused value 3: unused

ARMOR (Type Flag 9) value 0: AC-apply of the armor. Note that the effective change to AC is this value times a multiplier based on where the armor is worn. Values >0 enhance the armor class; values <0 damage the armor class (cursed armor, for example). value 1: unused value 2: unused value 3: unused

POTION (Type Flag 10) value 0: Level at which the potion's s are cast. value 1: number 1 value 2: number 2 value 3: number 3 If less than 3 s are desired, set unused values to -1.

WORN (Type Flag 11) unimplemented

OTHER (Type Flag 12) value 0: unused value 1: unused value 2: unused value 3: unused

TRASH (Type Flag 13) value 0: unused value 1: unused value 2: unused value 3: unused

TRAP (Type Flag 14) unimplemented

CONTAINER (Type Flag 15) value 0: Capacity (max containable weight) of container value 1: Container flag bitvector (MUST be a numeric bitvector) 1 CLOSEABLE Container can be closed and locked. 2 PICKPROOF Lock on container cannot be picked. 4 CLOSED Container is closed when created. 8 LOCKED Container is locked when created. value 2: The vnum of the key object that opens this container. -1 if it has no key. value 3: Reserved for internal use -- always set as 0.

NOTE (Type Flag 16) value 0: Language of writing (unimplemented). value 1: unused value 2: unused value 3: unused

DRINKCON (Type Flag 17) See Appendix B.

KEY (Type Flag 18) value 0: unused value 1: unused value 2: unused value 3: unused

FOOD (Type Flag 19) value 0: The number of hours of hunger satisfied by this food. value 1: unused value 2: unused value 3: Non-zero if the food is poisoned, 0 otherwise.

MONEY (Type Flag 20) value 0: The number of gold coins in the pile. value 1: unused value 2: unused value 3: unused

PEN (Type Flag 21) value 0: unused value 1: unused value 2: unused value 3: unused

BOAT (Type Flag 22) value 0: unused value 1: unused value 2: unused value 3: unused

FOUNTAIN (Type Flag 23) See Appendix B.

SHIELD (Type Flag 24) value 0: (NOT WORKING YET SO DON'T USE!) AC-apply of the armor. Note that the effective change to AC is this value times a multiplier based on where the armor is worn. Values >0 enhance the armor class; values <0 damage the armor class (cursed armor, for example). value 1: unused value 2: unused value 3: unused

INSTRUMENT (Type flag 25) Item is an instrument. (Bards must have to use s) value 0: unused value 1: unused value 2: unused value 3: unused

HOLY (Type flag 26) Item is a holy symbol. (Clerics need to pray for s) value 0: deity number (this is not working yet.) value 1: unused value 2: unused value 3: unused

AIRBOAT (Type flag 27) Item is an airboat. (can travers SECT_FLYING) value 0: unused (Airboats must be worn travers SECT_FLYING) value 1: unused value 2: unused value 3: unused

SCUBA (Type flat 28) Item allows underwater travel if it is worn. value 0: unused value 1: unused value 2: unused value 3: unused

5.3. Object Extra Descriptions

Object Extra Descriptions allow players to examine certain aspects of objects defined by the world builder, just like Room Extra Descriptions. There can be an unlimited number of Extra Descriptions per object. The format is exactly the same as for rooms:

E <keyword list>~ <description text> ~

Keyword List A space-separated list of keywords which will access the description in this E section.

Description Text The text that will be displayed when a player types "look <keyword>", where <keyword> is one of the keywords specified in the Keyword List of this E section.

5.4. Object Affect Fields

Object Affect Fields give objects magical properties. They affect characters when the object is worn, not when picked up.

The format of an Object Affect Field is:

A <location> <value>

Location The aspect of the character affected by the object. It must be one of the following numbers:

0 NONE No effect. 1 STR Apply to strength. 2 DEX Apply to dexterity. 3 INT Apply to intelligence. 4 WIS Apply to wisdom. 5 CON Apply to constitution. 6 CHA Apply to charisma. 7 CLASS Unimplemented. Do not use. 8 LEVEL Unimplemented. Do not use. 9 AGE Apply to character's MUD age, in MUD-years. 10 CHAR_WEIGHT Apply to weight. 11 CHAR_HEIGHT Apply to height. 12 MANA Apply to MAX mana points. 13 HIT Apply to MAX hit points. 14 MOVE Apply to MAX movement points. 15 GOLD Unimplemented. Do not use. 16 EXP Unimplemented. Do not use. 17 AC Apply to armor class (AC). 18 HITROLL Apply to hitroll. 19 DAMROLL Apply to damage roll bonus. 20 SAVING_PARA Apply to save throw: paralyze 21 SAVING_ROD Apply to save throw: rods 22 SAVING_PETRI Apply to save throw: petrif 23 SAVING_BREATH Apply to save throw: breath 24 SAVING_ Apply to save throw: s

Value The number used to modify the Location.

5.5. Object File Example

#901 shield minotaur~ a dark minotaur shield~ A dark minotaur shield has been left here.~ ~ 9 dgh 513 12 0 0 0 15 5000 1350 E shield minotaur~ A strong, sturdy shield. It brings to mind legends of a shield that provided protection from poisonous gases. ~ A 23 -4

This object is virtual number 901, is a Type 9 object (armor), cannot be donated, has a magical aura, and cannot be dropped. It can be picked up and worn as a shield. It has an AC-apply of 12, weighs 15 pounds, is valued at 5000 coins and costs 1350 coins per day to rent. Its single Affect field indicates that this object affects saving throws by -4.

6. Zone Files

Zone files are the files that control how areas are configured and how they reset. They integrate the mobiles, objects, and rooms to create an inhabited world.

A zone file contains certain initial information (specified below), followed by a series of reset commands. Each time a zone is reset, the server executes all the commands in order from beginning to end. All zones are reset when the server first boots, and periodically reset again while the game is running.

6.1. The Format of a Zone File

#<virtual number> <zone name>~ <top room number> <lifespan> <reset mode> {zero or more zone commands} S

Lines starting with '*' are considered comments and ignored. Zone commands themselves may also be followed by a comment delimited by a single '*'. The zone's commands must then be terminated by the literal letter 'S'.

Virtual Number An arbitrary number used to identify the zone. Zone numbers are traditionally the room numbers of the zone divided by 100; i.e., Midgaard, which consists of rooms 3000 through 3099, is zone 30.

Zone Name A label given to the zone so that it can be identified in system logs.

Top Room Number The highest numbered room belonging to this zone. A room with virtual number V belongs to zone N if:

zone[N-1].top < V <= zone[N].top

for all N > 0. Rooms belong to zone 0 if their number is between 0 and the top of zone 0.

Lifespan The number of real-time minutes between zone resets for this zone. When the age of the zone (measured in minutes since the last time that zone has been reset) reaches the zone's lifespan, the zone is queued for reset. The zone is then reset when it reaches the front of the queue, and the conditions of the Reset Mode (see below) are satisfied.

Reset Mode Can take one of three values:

0 Never reset the zone. In this case, the age of the zone is never updated, and it will never be queued for reset. Thus, the value of the Lifespan is effectively ignored.

1 Reset the zone as soon as it is deserted, i.e. as soon as there are no players located within the zone.

2 Reset the zone regardless of who or what is in it.

6.2. Zone Commands

Each command consists of a letter, identifying the command-type, followed by three or four arguments. The first argument, common to all the commands, is called the 'if-flag'. If the if-flag for a command is 1, that command is only executed if the command immediately before it was executed as well. If the if-flag is 0, the command is always executed. If-flags are useful for things like equipping mobiles -- you don't want to try to equip a mobile that has not been loaded.

Commands that load mobiles and objects also include a 'max existing' argument. This specifies the maximum number of copies of the mobile or object that are allowed to exist in the entire world at once. If the number currently existing is greater than or equal to the 'max existing' limit, the command is not executed.

The valid zone-reset commands are M, O, G, E, P, D, R, V, Z, Y, W, X.

M: load a mobile Format: M <if-flag> <mob vnum> <max existing> <room vnum>

Mob vnum is the vnum of the mob to be loaded. Room vnum is the vnum of the room in which the mob should be placed. The mob will be loaded into the room.

O: load an object Format: O <if-flag> <obj vnum> <max existing> <room vnum>

Obj vnum is the vnum of the obj to be loaded. Room vnum is the vnum of the room in which the obj should be placed. The object will be loaded and left lying on the ground.

G: give object to mobile Format: G <if-flag> <obj vnum> <max existing>

Obj vnum is the vnum of the obj to be given. The object will be loaded and placed in the inventory of the last mobile loaded with an 'M' command.

This command will usually be used with an if-flag of 1, since attempting to give an object to a non-existing mobile will result in an error.

E: equip mobile with object Format: E <if-flag> <obj vnum> <max existing> <equipment position>

Obj vnum is the vnum of the obj to be equipped. The object will be loaded and added to the equipment list of the last mobile loaded with an 'M' command. Equipment Position should be one of the following:

0 Used as light 1 Worn on right finger 2 Worn on left finger 3 First object worn around neck 4 Second object worn around neck 5 Worn on body 6 Worn on head 7 Worn on legs 8 Worn on feet 9 Worn on hands 10 Worn on arms 11 UNUSED 12 Worn about body 13 Worn around waist 14 Worn around right wrist 15 Worn around left wrist 16 Wielded as a weapon 17 Held

This command will usually be used with an if-flag of 1, since attempting to give an object to a non-existing mobile will result in an error.

P: put object in object Format: P <if-flag> <obj vnum 1> <max existing> <obj vnum 2>

An object with Obj Vnum 1 will be loaded, and placed inside of the copy of Obj Vnum 2 most recently loaded.

This command will usually be used with an if-flag of 1, since attempting to put an object inside of a non-existing object will result in an error.

D: set the state of a door Format: D <if-flag> <room vnum> <exit num> <state>

Room vnum is the virtual number of the room with the door to be set. Exit num being one of: 0 North 1 East 2 South 3 West 4 Up 5 Down State being one of: 0 Open 1 Closed 2 Closed and locked

Care should be taken to set both sides of a door correctly. Closing the north exit of one room does not automatically close the south exit of the room on the other side of the door.

R: remove object from room Format: R <if-flag> <room vnum> <obj vnum>

If an object with vnum Obj Vnum exists in the room with vnum Room Vnum, it will be removed from the room and purged.

PERCENT LOAD COMMANDS: The following commands have the ending field of percent load. That number may range from 0-100. 0 meaning it has a 0 in 100 chance of loading, and 100 meaning it has a 100 in 100 chance (all the time). For example, Jupiter's Lightning Bolt has a % load field of 3. That means when it is able (when there aren't too many exhisting) it has a 3 in 100 chance of loading.

V: Percent Load a Mobile in a room Format: V <if-flag> <mob vnum> <max existing> <room vnum> <% load>

Mob vnum is the vnum of the mob to be loaded. Room vnum is the vnum of the room in which the mob should be placed. The mob will be loaded into the room.

Z: Percent Equip a Mobile with an object Format: Z <if-flag> <obj vnum> <max existing> <eq pos.> <% load>

Obj vnum is the vnum of the obj to be equipped. The object will be loaded and added to the equipment list of the last mobile loaded with an 'M' command. Equipment Position should be one of the following:

0 Used as light 1 Worn on right finger 2 Worn on left finger 3 First object worn around neck 4 Second object worn around neck 5 Worn on body 6 Worn on head 7 Worn on legs 8 Worn on feet 9 Worn on hands 10 Worn on arms 11 UNUSED 12 Worn about body 13 Worn around waist 14 Worn around right wrist 15 Worn around left wrist 16 Wielded as a weapon 17 Held

This command will usually be used with an if-flag of 1, since attempting to give an object to a non-existing mobile will result in an error.

Y: Percent Give a Mobile an object Format: Y <if-flag> <obj vnum> <max existing> <% load>

Obj vnum is the vnum of the obj to be given. The object will be loaded and placed in the inventory of the last mobile loaded with an 'M' command.

This command will usually be used with an if-flag of 1, since attempting to give an object to a non-existing mobile will result in an error.

W: Percent Load an object to a room Format: W <if-flag> <obj vnum> <max existing> <room vnum> <% load>

Obj vnum is the vnum of the obj to be loaded. Room vnum is the vnum of the room in which the obj should be placed. The object will be loaded and left lying on the ground.

X: Percent Put and object in the another object Format: X <if-flag> <obj vnum 1> <max existing> <obj vnum 2>

An object with Obj Vnum 1 will be loaded, and placed inside of the copy of Obj Vnum 2 most recently loaded.

This command will usually be used with an if-flag of 1, since attempting to put an object inside of a non-existing object will result in an error.

6.3. Zone File Example

A sample zone file annotated with comments follows.

#30 * This is zone number 30 Northern Midgaard Main City~ * The name of the zone 3099 15 2 * Top of zone is room #3099; it resets every * * 15 minutes; resets regardless of people * * Mobile M 0 3010 1 3062 * Load the Postmaster to room 3062 * Shopkeepers M 0 3003 1 3011 Load the Weaponsmith into room 3011 * Now, give the weaponsmith items (to be placed in his inventory) * max 100 of each of these objects can exist at a time in the world G 1 3020 100 Dagger G 1 3021 100 Small Sword G 1 3022 100 Long Sword G 1 3023 100 Wooden Club G 1 3024 100 Warhammer G 1 3025 100 Flail * and lastly, give him a long sword to wield E 1 3022 100 16 Long Sword * Load Boards O 0 3099 2 3000 Mortal Bulletin Board in room 3000 O 1 3096 5 3003 Social Bulletin Board in room 3003 O 1 3096 5 3018 Social Bulletin Board in room 3018 O 1 3096 5 3022 Social Bulletin Board in room 3022 O 1 3096 5 3028 Social Bulletin Board in room 3028 * 'S' must appear after all commands for a particular zone S

7. Shop Files

CircleMUD v3.0 now has a new shop file format. Since the old format is still supported, both formats will be documented. If you'd like to convert shop files in the old format to that of the new format, compile and run the utility shopconv. When writing new files, you need to tell CircleMUD that the shopfile is in the new format by including the following line BEFORE any shops in the file:

CircleMUD v3.0 Shop File~

7.1. CircleMUD v3.0 Shop Format

#<num>~ Shop Number (Used only for display purposes)

<num 1> <num 2> <num 3> . . . <num n> -1 An arbitrarily long list of the virtual numbers of objects that the shop produces (i.e., items which will always be available). The list must be terminated with -1.

<Profit when selling> The object value is multiplied by this value when sold. This is a floating point value. Must be >= 1.0

<Profit when buying> The object value is multiplied by this value when bought. This is a floating point value. Must be <= 1.0

<type 1> [namelist 1] <type 2> [namelist 2] <type 3> [namelist 3] . . . <type n> [namelist n] -1 These lines contain the types of items that the shop will buy. The first argument, called "type" is the Type Flag of items the shop will buy (see "Type Flag" under "Format of an Object" in this document). Numerical or English forms are valid (5 or WEAPON, 9 or ARMOR, etc.). In addition, you can provide optional keywords to define specific keywords that must be present on the item for the shopkeeper to trade it. For further details on these expressions, see the section "Item Name Lists" below. This list must be terminated by a -1.

<Message When Item to buy is non existing>~ <Message When item trying to sell is non existing>~ <Message When shop does not buy offered item>~ <Message when shop can't afford item>~ <Message when player can't afford item>~ <Message when successfully buying an item>~ Price is represented by %d. <Message when selling an item>~ Price is represented by %d.

<Temper> When player can't afford an item, the shopkeeper tells them they can't afford the item and then: 0 - The shopkeeper pukes on the player. 1 - The shopkeeper smokes his joint. other - No action besides message above.

<Shop Bitvector> A bitvector (see "Using Bitvectors" above) with the following values:

1 a WILL_START_FIGHT Players can to try to kill this shopkeeper. 2 b WILL_BANK_MONEY Shopkeeper will put money over 15000 coins in the bank.

A brief note: Shopkeepers should be hard (if even possible) to kill. The benefits players can receive from killing them is enough to unbalance most non monty-haul campaigns.

<Shop Keeper Mobile Number> Virtual number of the shopkeeper mobile.

<With Who Bitvector> A bitvector (see "Using Bitvectors" above) used to designate certain alignments or classes that the shop will not trade with, with the following values:

1 a NOGOOD Keeper won't trade with positively-aligned players. 2 b NOEVIL Keeper won't trade with evilly-aligned players. 4 c NONEUTRAL Keeper won't trade with neutrally-aligned players. 8 d NOMAGIC_USER Keeper won't trade with the Mage class. 16 e NOCLERIC Keeper won't trade with the Cleric class. 32 f NOTHIEF Keeper won't trade with the Thief class. 64 g NOWARRIOR Keeper won't trade with the Warrior class.

<Shop Room 1> <Shop Room 2> <Shop Room 3> . . . <Shop Room n> -1 The virtual numbers the mobile must be in for the shop to be effective. (So trans'ed shopkeepers can't sell in the desert). The list must be terminated by a -1.

<Time when open start 1> <Time when open end 1> The hours between which the shop is open.

<Time when open start 2> <Time when open end 2> The hours between which the shop is open.

7.2. Item Name Lists for 3.0 Shops

Name lists are formed by boolean expressions. The following operators are available:

',^ = Not *, & = And +, | = Or The precedence is Parenthesis, Not, And, Or. For example, look at the following line:

WEAPON [sword & long|short | warhammer | ^golden & bow] & magic

This shop will buy the following items of type WEAPON: 1) sword long magic 2) short magic (the first & is done before the first | ) 3) warhammer magic 4) ^golden bow magic

Note that the ^ in front of golden affects ONLY golden, and nothing else in the listing. Basically, the above expression could be written in English as:

[(sword and long) or short or warhammer or (not golden and bow)] and magic

If you want the shop to only buy "short magic" only if they were also swords, you could change the expression to:

WEAPON [sword & (long|short) | warhammer | ^golden & bow] & magic ^-Changes--^

You can also include object extra flags (listed in the section "Format of an Object" above). The previous example used "magic" as a keyword that had to be on the object. If we wanted to make it so that the MAGIC flag had to be set on the item, we would change "magic" to "MAGIC." Similar changes could be made to add other flags such as "HUM" or "GLOW." It should be noted that these expressions are case sensitive and that all keywords should appear in lower-case, while the flag names should be in all caps.

7.3. The DikuMUD Gamma and CircleMUD 2.20 Shop Format

This format is obsolete but is presented because it is still supported by CircleMUD 3.0. The 'shopconv' utility shipped with Circle will convert shop files of this type to v3.0 shop files described above.

#<num>~ Shop Number (Used only for display purposes)

<num1> <num2> <num3> <num4> <num5> Virtual numbers of the objects that the shop produces. -1's should be inserted in unused slots.

<Profit when selling> The object value is multiplied by this value when sold. This is a floating point value. Must be >= 1.0

<Profit when buying> The object value is multiplied by this value when bought. This is a floating point value. Must be <= 1.0

<num1> <num2> <num3> <num4> <num5> These five numbers are the item-types traded with by the shop (i.e. valid Type Flags of objects that the shopkeeper will buy).

<Message When Item to buy is non existing>~ <Message When item trying to sell is non existing>~ <Message When wrong item-type sold>~ <Message when shop can't afford item>~ <Message when player can't afford item>~ <Message when buying an item>~ Price is represented by %d. <Message when selling an item>~ Price is represented by %d.

<Temper> When player can't afford an item, the shopkeeper tells them they can't afford the item and then: 0 - The shopkeeper pukes on the player. 1 - The shopkeeper smokes his joint. other - No action besides message above.

<Shop Bitvector> A bitvector (see "Using Bitvectors" above) with the following values:

1 a WILL_START_FIGHT Players can to try to kill this shopkeeper. 2 b WILL_BANK_MONEY Shopkeeper will put money over 15000 coins in the bank.

A brief note: Shopkeepers should be hard (if even possible) to kill. The benefits players can receive from killing them is enough to unbalance most non monty-haul campaigns.

<Shop Keeper Mobile Number> Virtual number of the shopkeeper mobile.

<With Who Bitvector> A bitvector (see "Using Bitvectors" above) used to designate certain alignments or classes that the shop will not trade with, with the following values:

1 a NOGOOD Keeper won't trade with positively-aligned players. 2 b NOEVIL Keeper won't trade with evilly-aligned players. 4 c NONEUTRAL Keeper won't trade with neutrally-aligned players. 8 d NOMAGIC_USER Keeper won't trade with the Mage class. 16 e NOCLERIC Keeper won't trade with the Cleric class. 32 f NOTHIEF Keeper won't trade with the Thief class. 64 g NOWARRIOR Keeper won't trade with the Warrior class.

<Shop Room Number> The virtual number the mobile must be in for the shop to be effective. (So trans'ed shopkeepers can't sell in the desert).

<Time when open start 1> <Time when open end 1> The hours between which the shop is open.

<Time when open start 2> <Time when open end 2> The hours between which the shop is open.

Appendix A: Spell Numbers * Indicates spells you need to get special permission for (or they aren't working)

armor 1 bless 3 blindness 4 burning hands 5 call lightning 6 charm 7 chill touch 8 clone 9 color spray 10 control weather 11 create food 12 create water 13 cure blind 14 cure critic 15 cure light 16 curse 17 detect align 18 detect invis 19 detect magic 20 detect poison 21 dispel evil 22 earthquake 23 enchant weapon 24 energy drain 25 fireball 26 harm 27 heal 28 invisible 29 lightning bolt 30 *locate object 31 (won't work as wand/staff/potion) magic missile 32 poison 33 prot from evil 34 remove curse 35 sanctuary 36 shocking grasp 37 sleep 38 strength 39 summon 40 *ventriloquate 41 (won't work as wand/staff/potion) word of recall 42 remove poison 43 sense life 44 animate dead 45 dispel good 46 group armor 47 group heal 48 group recall 49 infravision 50 waterwalk 51 cure serious 52 restore 53 petrify 54 protection from good 55 *lay on hands 56 *holy weapon 57 *holy armor 58 *shield 59 rejuvinate 60 *group shield 61 group infravision 62 information 63 *inspire 64 *rally 65 *audible armor 66 *group audible armor 67 *mass charm 68 *dirge 69 summon swarm 70 *fly 71 death fog 72 *know history 73 create light 74 *unconscious 75 *mirror image 76 *scare 77 *confusion 78 *slow 79 *forget 80 *shadow walk 81 *hopelessness 82 *shadow summon 83 *fear 84 *peace 85 *suggestion 86 angel 87 wate breathing 88

Appendix B: Item Values for Drink Containers

DRINKCON (Type Flag 17) FOUNTAIN (Type Flag 23)

value 0: Capacity of container value 1: Current quantity in container value 2: see below value 3: Non-zero if the drink poisoned, 0 otherwise.

value 2: The type of liquid in the drink-container, one of:

Type nr. Effect of Liquid On: Drunkness Fullness Thirst LIQ_WATER 0 0 1 10 LIQ_BEER 1 3 2 5 LIQ_WINE 2 5 2 5 LIQ_ALE 3 2 2 5 LIQ_DARKALE 4 1 2 5 LIQ_WHISKY 5 6 1 4 LIQ_LEMONADE 6 0 1 8 LIQ_FIREBRT 7 10 0 0 LIQ_LOCALSPC 8 3 3 3 LIQ_SLIME 9 0 4 -8 LIQ_MILK 10 0 3 6 LIQ_TEA 11 0 1 6 LIQ_COFFE 12 0 1 6 LIQ_BLOOD 13 0 2 -1 LIQ_SALTWATER 14 0 1 -2 LIQ_CLEARWATER 15 0 0 13

The above values for drunkness/fullness/thirst are in the units of one hour of effect per four units of liquid drunk. For example, imagine that Dragon drinks an entire bottle (say 7 units) of saltwater. According to the table above, saltwater has a drunkness value of 0, fullness value of 1 and thirst value of -2. Therefore:

His Drunkness is not changed ((7/4)*0) His Fullness increases by ((7/4)*1) hours His Thirst increases by ((7/4)*-2) hours, thus making him more thirsty.

A player's drunkness, fullness, and thirst can range from 0 to 24. 24 is the maximum; 0 means the person is completely sober, hungry, or thirsty respectively. For immortals, these values are typically -1.

Back to the top
Return to TOS Home Page