Frequently Asked Questions (FAQ) for Circle DIKUMUD with Answers Alex Fletcher, furry@circlemud.org Revision 2.05, 14 January 1997 This file is intended to cover common questions related to the Cir- cleMUD distributon source by Jeremy Elson and not general DikuMud questions. This FAQ is still rather new, so any contributions and corrections are more than welcome. It is currently maintained by Alex Fletcher (bka Furry). Please direct corrections to this address. The original author was Ryan Watkins (aka VampLe- stat). More information about CircleMUD, including up-to-date versions of this documentation in ASCII and Postscript, can be found at the CircleMUD Home Page or FTP site . ______________________________________________________________________ Table of Contents: 1. Introduction 1.1. I've never played a MUD before. What should I do? 1.2. What is CircleMUD? 1.3. What is the history of CircleMUD? 1.4. Where is the original CircleMUD so I can check it out? 2. Resources 2.1. Where do I find the source code for CircleMUD? 2.2. Where do I find areas, etc. for CircleMUD? 2.3. I have questions about CircleMUD. Where should I go? 2.4. How do I subscribe/unsubscribe to the Mailing List? 2.5. To what platforms has CircleMUD been ported? 2.6. How can I submit code or areas for use with CircleMUD? 2.7. How do I use a patch file and how can I make one? 3. Compiling CircleMUD 3.1. Why do I get many syntax errors with Sun's ``cc'' compiler? 3.2. Why do I get all sorts of errors with ``crypt'' functions and 3.3. When I try to compile, why do I get a lot of undefined symbols 3.4. Every time I try to compile Circle (or any other piece of 3.5. I'm trying to compile the mud on Windows '95 and am having 3.6. While compiling the mud, why do I get errors like ``foo.c:1231: Undefined symbol `_whereamI' referenced from text 3.7. I have this piece of code that calls bcopy(), bzero(), and 3.8. My compiler doesn't have 3.9. I am having trouble with my ``makefile'', what could be the 4. Running CircleMUD 4.1. I typed ``autorun'' but then my terminal just froze. 4.2. I typed 4.3. Okay, I think the MUD is running but why don't I get a login 4.4. When I run Circle under Linux, it tells me ``gethostbyaddr: 4.5. When I run Circle under Windows 95, it tells me ``Winsock error #10047'' when the MUD boots, and then dies. Why? 4.6. When I run Circle under Windows 95, players can't rent---their 4.7. When someone logs on to my Windows 95 MUD, the console screen 4.8. My Mud crashed and my connection got closed. What can I do? 4.9. I just added n levels to my mud (from the stock 34). How do I 4.10. I decided to wipe my pfile away anyway. What steps should I 4.11. I want to expand the ability to pk in my MUD, allowing 4.12. Why does it say ``Connection closed by foreign host.'' and not 5. Code Changes for CircleMUD 2.20 5.1. How do I fix the bug where people can junk more coins than 5.2. How do I fix the ``vstat'' bug that crashes the MUD? 5.3. How do I fix the ``wizlock'' bug that lets lower immortals 5.4. How do I fix the ``mudlog'' bug that lets people see me log 6. CircleMUD 3.0 Questions 6.1. Are there any bugs in patch level 11? 6.2. How do I access Online Creation? 6.3. How does the new bitvector system work? 6.4. When will the production release of Circle 3.0 be? 6.5. If someone logs in and just sits at the password prompt, the 6.6. How do I add a new class? 6.7. Is there a complete ``coding.doc''? ______________________________________________________________________ 1. Introduction 1.1. I've never played a MUD before. What should I do? Don't try to use your own copy of CircleMUD! There are two levels of MUD users: players and administrators. Administrators do what you're trying to do now -- get a copy of a MUD's source code, compile it, and run it. Players use MUDs that are being administered by someone else. If you try to actually run a MUD before you've ever played one, you'll get very confused indeed! Your best bet for now is to play someone else's MUD first. There are a large number of excellent MUDs out there already, some of which are based on CircleMUD code. A good place to start looking is the Mud Connector The CircleMUD web server also has a smaller CircleMUD Site List . 1.2. What is CircleMUD? CircleMUD is a DikuMud derivitave, developed by Jeremy Elson and is from the Gamma v0.0 of DikuMud created by Hans Henrik Staerfeldt, Katja Nyboe, Tom Madsen, Michael Seifert and Sebastian Hammer at DIKU (Computer Science Instutute at Copenhagen University). Note that CircleMUD is a Diku derivative, so its users must follow the DIKU license agreement---most notably that it cannot be used to make money in any way, the original developers' names must be in the login screen that the credits command always presents the same information, etc. Quoting from CircleMUD's release.doc: "CircleMUD is highly developed from the programming side, but highly UNdeveloped on the game-playing side. So, if you're looking for a huge MUD with billions of spells, skills, classes, races, and areas, Circle will probably disappoint you severely. Circle still has only the 4 original Diku classes, the original spells, the original skills, and about a couple dozen areas. On the other hand, if you're looking for a highly stable, well-developed, well-organized "blank slate" MUD on which you can put your OWN ideas for spells, skills, classes, and areas, then Circle might be just what you're looking for." The latest full release of Circle is 2.20, released on November 17, 1993. Currently 3.0 is in beta, at patch level 11, released on April 14, 1996. 1.3. What is the history of CircleMUD? o Version 2.20: November 17, 1993 o Version 2.11: September 19, 1993 o Version 2.10: September 1, 1993 o Version 2.02: Early August o Version 2.01: July 20, 1993 o Version 2.00: July 16, 1993 Version 3.00 is currently in beta right now and is up to patch level 11. The final release is due out Real Soon Now(tm). Don't bother posting requests for it. It will be out when Jeremy gets it done, and it will be announced on the mailing list and the newsgroup rec.games.mud.diku. 1.4. Where is the original CircleMUD so I can check it out? CircleMUD is a public code base, freely distributable, but the author of Circle don't actually run one personally. There used to be CircleMUD, and while Jeremy Elson continues to develop it, there is no original CircleMUD any more. To see other MUDs that are using the CircleMUD code base, check out this Site List . 2. Resources 2.1. Where do I find the source code for CircleMUD? Circle's complete source code and areas are available for anonymous FTP at the CircleMUD FTP site There is also a CircleMUD Home Page for CircleMUD information. 2.2. Where do I find areas, etc. for CircleMUD? A number of Circle-mud based Implementors have submitted areas to the public and they are archived at the same sites as the CircleMUD source. You can also use the mirror . If you cannot use FTP, you can contact one of the site maintainers and request a file. The maintainers are Alex Fletcher and Chris Epler . If the FTP site is down, please contact Furry at his alternate address since he will be able to contact the neccessary people to reboot the server if need be. There is also a code snippets site where a number of code suggestions and hints are located. 2.3. I have questions about CircleMUD. Where should I go? If you have general questions about the MUD such as how to get it running, how to add new spells, how to add new skills, etc., the first place you should look is the documentation. coding.doc will have information about how to add new spells, skills, commands, etc. building.doc has information about how to create new worlds, how to read the database files, etc. There are many other documents in the doc directory with useful information. There is also a new project, started in June of 1996, called the CircleMUD Documentation Project which will eventually be a repository for all Circle-related information. It's still being built as of this writing, but hopefully will become a valuable resource as more documentation is added. If you still have questions after reading the doucmentation, you can try asking on the CircleMUD mailing list (see next section). You can also contact the author, Jeremy Elson . 2.4. How do I subscribe/unsubscribe to the Mailing List? There is a CircleMUD mailing list for coders, builders, and administrators. To subscribe, send a message to the list server with a message body of subscribe circle. To unsubscribe from the list send a message to majordomo@cspo.queensu.ca with the words unsubscribe circle as the message body. To post a message to the list, write to . DO NOT send subscription or unsubscription requests to the list in general. There are hundreds of people on the list, and it will only irritate a ton of people who have no power to remove you from the list. Read the Mailing List FAQ for more information. 2.5. To what platforms has CircleMUD been ported? Version 3.0, although still officially in beta-testing, is very portable because it uses the GNU autoconf system, meaning you only need to type ``configure'' to have it automatically determine various features of your system and configure the code accordingly. 3.0 compiles without changes under most BSD and SVR4 systems, including SunOS, Solaris, Ultrix, IRIX, AIX, Linux, BSD/OS, HP/UX, and others. Version 3.0 is also being ported to various non-UNIX platforms. As of patchlevel 11, you can compile Circle under OS/2 2.x and 3.x with the OS/2 port of gcc, and Windows 95/NT using Microsoft Visual C++ version 4.0. Ports for other non-UNIX platforms are in progress; patches for an Amiga version are also available. The older version of the code, Version 2.20, compiles mainly on BSD UNIX systems but has trouble under SVR4-based systems such as Solaris. The author has personally compiled and tested v2.20 under Ultrix 4.0, IRIX 4.0.1, 4.0.4 and 4.0.5, SunOS 4.1.1 and 4.1.3, AIX 3.2, Linux 0.99.x and 1.0.x, and ConvexOS V10.2. Users have reported that v2.20 compiles with relatively minor changes under NeXTStep 2.1 and 3.0, and HP/UX 9.0. Jean-Jack Riethoven ported CircleMUD version 2.20 to the Amiga and has made binaries (no source) available. Note that the native version 3.0 source should compile under the Amiga in a future patchlevel. The v2.20 binaries for the Amiga are available at the FTP Site . Questions about the Amiga source should be directed to Jean-Jack Riethoven, not Jeremy Elson. 2.6. How can I submit code or areas for use with CircleMUD? There is a special uploads area in the CircleMUD domain for submissions of code, areas, utilities, scripts, and anything else that might be of use to Circle users. Please make sure only to upload to upload.circlemud.org and not any of the CircleMUD mirrors. These portions of code or areas will probably not be added to the full release of CircleMUD unless you make specific arrangements with Jeremy for code items, or with Alex for area/lib files. 2.7. How do I use a patch file and how can I make one? Patch files are created and used using the ``diff'' and ``patch'' utilities, respectively. They can both be downloaded from the GNU FTP Site under the name ``diffutils- xxx.tar.gz''. If you happen to be using a DOS or Windows machine, you should get patch for dos . This does not support long filenames (but can be used with short filenames). There is also a set of Windows 95 Utilities now available from the Cygnus Gnu-Win32 Project . To use diff, type: diff -u [oldfile] [newfile] > [patchfile] If you're using your system's diff command (instead of GNU's) and are using Solaris or another SYSV systems, the context option is used instead, making the command: diff -c [oldfile] [newfile] > [patchfile] If you download a patch file and would like to add it to your code, first make sure to read any instructions that the patch author might have written. The command used to add the patch may vary depending on how the patch was created. This should given in the first line of the patch or in the instructions. Normally, if using GNU patch with a unified diff, the command should be: patch -u [patchfile] If the patch was created with a SYSV patcher (i.e. not a unified diff), the patch should be added with: patch -c [patchfile] Of course, if the instructions state otherwise, ignore any instruc- tions given here and follow the instructions given with the patchfile instead. 3. Compiling CircleMUD 3.1. Why do I get many syntax errors with Sun's ``cc'' compiler? Because Circle is written in ANSI C, and Sun's standard cc compiler isn't capable of compiling ANSI C code. You can try acc, Sun's ANSI C compiler, but it costs extra money to get it from Sun so your sysadmin may not have installed it. Most don't. The best solution is to get the GCC compiler from the GNU FTP site and install it, if you have enough time and space. 3.2. Why do I get all sorts of errors with ``crypt'' functions and header files? At the end of compiling, why does the linker tell me it can't find the crypt function? (This information applies ONLY to Version 3.0 of the code.) CircleMUD normally uses the UNIX crypt() function to enrypt players' passwords. Because of export restrictions imposed by the U.S., some systems do not have the crypt() function. ``configure'' will usually be able to figure out whether or not your system has crypt(), but if it guesses incorrectly and you see problems with the crypt() function or headers, you can manually disable password encryption by going into the sysdep.h source file and uncommenting the line that reads: #define NOCRYPT Be warned, however, that doing this causes the MUD to store players' passwords in plaintext rather than as encrypted strings. Also, if you move from a system which has crypt to one that doesn't, players won't be able to log in with their old passwords! 3.3. When I try to compile, why do I get a lot of undefined symbols referenced in comm.o for functions like socket, accept, and bind? SVR4 systems require the socket and nsl libraries for network programs. You shouldn't see this error any more with version 3.0 because ``configure'' should automatically use those libraries for you; however, if you still have problems, try adding ``-lsocket -lnsl'' to the line in the Makefile that links all the object files together into the 'circle' binary. If you're using V2.20 and you have this error, the best thing to do is simply to use V3.0 instead. If you insist on using 2.20, go into the Makefile and search for the comment next to "SVR4". 3.4. Every time I try to compile Circle (or any other piece of soft- ware) under Linux, it gives me errors and says it cannot find include header files in the linux/ and asm/ directories. What can I do? Under Linux, you cannot compile any program unless you install the kernel source code because the kernel source includes the ANSI C header files. You need the files in /usr/include/linux, which are distributed separately from the rest of /usr/include. The easiest way to do this if you're using the Slackware Linux distribution is simply to install the 'K' series of disks which is the kernel source. Otherwise, you'll have to set up your include files manually. The easiest way to get these is to download kernel source from Sunsite or tsx-11 . Get the kernel source that matches the kernel you're running (type 'uname -a' to find your kernel version). Then unpack the kernel into the /usr/src directory. It's 6 megabytes compressed, 25 megabytes uncompressed. Read the README file that comes with the kernel, and make the symbolic links you need for /usr/include/asm and /usr/include/linux. Now compile the MUD. This will take care of most of the errors. You may have to do 'make config' and 'make dep' in /usr/src/linux as well, in order to make linux/config.h and other files that get generated by these steps. You can remove the whole kernel source tree except for include at this point and get most of your 25 megs back. (Thanks to Michael Chastain for providing this answer.) 3.5. I'm trying to compile the mud on Windows '95 and am having prob- lems. What can I do? The first thing to do is to make sure you are compiling a recent version of the source code. Patch Level 11 and onwards all support Windows '95 winsock sockets now. Next, ensure that you are using a C compiler that supports long filenames (for example, MSVC 4.0 does, MSVC 1.0 does not). If you happen to be trying to patch something into your code, you should use patch for dos . This does not support long filenames (but can be used with short filenames). 3.6. While compiling the mud, why do I get errors like ``foo.c:1231: Undefined symbol `_whereamI' referenced from text segment'' You forgot to include a source file into the make. Go edit your Makefile and make sure all the necessary *.c files are in there, in particular, whichever C file defines the function that the compiler is complaining is undefined. If all else fails, try deleting all the *.o files and recompiling from scratch. 3.7. I have this piece of code that calls bcopy(), bzero(), and bcmp(). What can I do to avoid using these since my code will not compile with them in? All three of these functions are fairly standard on BSD systems. However, they are not considered to be very portable, and thus should be redefined. For example, the equivalents for SYSV are: #define bcopy(from,to,len) memmove(to,from,len) #define bzero(mem,len) memset(mem,0,len) #define bcmp(a,b,len) memcmp(a,b,len) 3.8. My compiler doesn't have strdup(), what can I do? Use Circle's built-in str_dup() function instead. 3.9. I am having trouble with my ``makefile'', what could be the problem? If you used cut and paste to insert items into your makefile, it is likely that you accidentally put spaces at the beginning of lines where tabs are needed. This is how the makefile must be constructed: foo.o: foo.c conf.h sysdep.h structs.h utils.h interpreter.h \ handler.h db.h {TAB}$(CC) -c $(CFLAGS) To add these lines properly, you can use gcc to assist you with the following shell script (from Daniel Koepke): #!/bin/sh gcc -MM $1 >> Makefile echo "{TAB}\$(CC) -c \$(CFLAGS) $1" >> Makefile To use this script, replace {TAB} with a tab, and then run the script like: add_file foo.c 4. Running CircleMUD 4.1. I typed ``autorun'' but then my terminal just froze. autorun is a script which automatically runs, logs, and reboots the game for long-term runs. You should run autorun in the background by typing ``autorun &'' -- the MUD will start running in the background and you'll get the normal UNIX prompt back immediately (see section 4.3). The game will then run unattended until you explicitly shut it down. 4.2. I typed bin/circle and got lots of boot messages, but then it said ``Entering game loop'' and froze. It is not frozen, it is just waiting for people to connect. You have to run the MUD in the background by typing ``bin/circle &'' and then use telnet to connect to the game (see next section). 4.3. Okay, I think the MUD is running but why don't I get a login prompt? In order to play the MUD, you must connect to it using the telnet command, i.e. ``telnet localhost 4000''. 4.4. When I run Circle under Linux, it tells me ``gethostbyaddr: con- nection refused'' when the MUD boots, and then dies. Why? You need to make sure you have Networking and TCP/IP support compiled into your Linux kernel, even if you aren't actually connected to the Internet. The easiest way to do this if you're using Slackware is to install one of Slackware's precompiled networking kernels. Also, make sure to install Slackware's 'N' series of disks which contains other networking support files. If Slackware's precompiled kernel isn't available you'll have to compile the kernel yourself. First make sure the kernel source is installed in /usr/src/linux (see section 3.1.4) and follow the instructions in /usr/src/linux/README. When you do 'make config' it will ask you a series of questions about which kernel features you want; make sure to answer ``Y'' to ``Networking support'' and ``TCP/IP support''. 4.5. When I run Circle under Windows 95, it tells me ``Winsock error #10047'' when the MUD boots, and then dies. Why? You need to configure TCP/IP networking from the Network Control Panel, even if you are not connected to the Internet. From the Network Control Panel, select ``Add Protocol'', and under the vendor ``Microsoft'', choose ``TCP/IP''. It may ask you to insert the Windows 95 CDROM in order to copy the drivers onto your hard drive. 4.6. When I run Circle under Windows 95, players can't rent---their equipment is just dropped on the ground. Also, syslogs don't work. What is the problem? The reason that objects aren't saved when your players quit is that certain unzip programs are buggy and don't completely recreate the MUD's directory structure (in particular, it doesn't create directories which have no files in them.) This will be fixed in Circle 3.0 patchlevel 12 and above. Before patchlevel 12, you can fix it simply by manually creating the needed directories: CD \Circle30bpl11 cd lib\plrobjs mkdir A-E mkdir F-J mkdir K-O mkdir P-T mkdir U-Z mkdir ZZZ Object saving should then work. The syslogs are a different story; no data is written to the system logs because the code currently is con- figured simply to write all errors to the standard error file descrip- tor (stderr), and Windows doesn't seem to let you redirect stderr to a file the same way UNIX does. pl12 will let you direct logs to a spe- cific file instead. 4.7. When someone logs on to my Windows 95 MUD, the console screen gives: gethostbyaddr: No such file or directory This means the MUD can't resolve the IP address of the connecting player's source site innto a hostname. You probably don't have DNS correctly configured in the Windows Network Control Panel menu (under configuration of the TCP protocol). Make sure you have the IP address of your ISP's DNS server listed. 4.8. My Mud crashed and my connection got closed. What can I do? Just because your connection got closed from the mud (for example, if you get too much information sent to you and the telnet session gets closed), this doesn't always mean that the game itself crashed. Before reporting something as a crash bug, make sure that the game itself crashed, and above all, try to duplicate the circumstances before reporting it as a crash bug. 4.9. I just added n levels to my mud (from the stock 34). How do I set my imps up to level n without a pfile wipe? You can write a quick and nasty function that will advance your imp (and imp only) to the max level (LVL_IMPL). This can be done with a quick idnum check so that only the original player (the first imp, he with id 1) can use the command to get to maximum level. ACMD(do_upme) { if (GET_IDNUM(ch) != 1) { send_to_char("You think IMP positions are that easy to come by? Go Figure...\r\n", ch); } else { GET_LEVEL(ch) = LVL_IMPL; send_to_char("Advanced.\r\n", ch); } } 4.10. I decided to wipe my pfile away anyway. What steps should I take to do this? In order: 1. Shutdown the mud with ``shutdown die'' so that it won't restart. 2. Remove the player file, /lib/etc/players 3. Restart the mud and login to recreate your imp character. You should probably also remove files in plrobjs, unless you want the recreated characters to come back with the same equipment they had when they were deleted. 4.11. I want to expand the ability to pk in my MUD, allowing ASSAS- SINS that'll be able to PK without getting flagged. How can I do this? The simple way to do this is to find all the ``pk_allowed'' checks and replace them with a can_murder(ch, vict) function call. Prototype the function in utils.h. Then, in utils.c, create a can_murder() function something like this: int can_murder(struct char_data *ch, struct char_data *victim) { if (pk_allowed == TRUE) return TRUE; if (IS_NPC(ch) || IS_NPC(victim)) return TRUE; /* you can always kill these */ if (PLR_FLAGGED(ch, PLR_ASSASSIN)) return TRUE; /* they can kill anyone */ /* Add further checks here */ } 4.12. Why does it say ``Connection closed by foreign host.'' and not display the ``Byebye!'' message I'm trying to send before cutting someone off? This usually happens if you are doing something like this: send_to_char("Bye bye. Come back soon, ya hear?", ch); close_socket(ch->desc); The close_socket immediately dispatches/closes the connection, while send_to_char puts the message on the output queue to be dispatched next game_loop cycle. Therefore, the socket is gone. On some systems, this (old linux) this can even cause a infinite loop attempting to write to a closed socket. The proper way of doing this and other ``Byebye'' messages is to set the CON state of the player to CLOSE, like this: send_to_char("Bye bye. Come back soon, ya hear?", ch); STATE(ch->desc) = CON_CLOSED; This will then cycle to the next game_loop, dispatch the output queues (therefore sending the byebye message) and then close the socket. Further note, in some bizarre cases, this only seems to send about 40 characters and no escape codes. Sending more than 40 characters or escape codes (like the clear screen sequence) will crash the process reporting a problem similar to writing to a closed socket. 5. Code Changes for CircleMUD 2.20 5.1. How do I fix the bug where people can junk more coins than available? Apprently in Circle 2.2, you can drop any amount of coins, and then be rewarded with more coins than you had in the first place. Here is the fix from Jeremy Elson Around line 480 of act.obj1.c, you will find the code: if (!str_cmp("coins", arg) || !str_cmp("coin", arg)) perform_drop_gold(ch, amount, mode, RDR); else { /* code to drop multiple items. anyone want to write it? -je */ send_to_char("Sorry, you can't do that (yet)...\n\r", ch); --> return; } } else { .... It should be changed to: if (!str_cmp("coins", arg) || !str_cmp("coin", arg)) perform_drop_gold(ch, amount, mode, RDR); else { /* code to drop multiple items. anyone want to write it? -je */ send_to_char("Sorry, you can't do that (yet)...\n\r", ch); } --> return; } else { .... 5.2. How do I fix the ``vstat'' bug that crashes the MUD? To the fix for the vstat bug, from Jeremy Elson: In the file act.wizard.c, in the function do_vstat, in the mobile section of the switch (around line 1150), you'll find the code: mob = read_mobile(r_num, REAL); do_stat_character(ch, mob); extract_char(mob); Add the line char_to_room(mob, 0) before extract_char(), like this: mob = read_mobile(r_num, REAL); do_stat_character(ch, mob); char_to_room(mob, 0); extract_char(mob); 5.3. How do I fix the ``wizlock'' bug that lets lower immortals lock out higher immortals? Simple, insert this code into 'do_wizlock()' in 'act.wizard.c': if (value < 0 || value > LEVEL_IMPL) { send_to_char("Invalid wizlock value.\n\r", ch); return; } + /* Do not allow people to wizlock above their level. + * This bug came with Circle 2.20 source -- VampLestat + */ + if (value > GET_LEVEL(ch)) { + send_to_char("You may only wizlock below your level.\n\r", ch); + return; + } restrict = value; 5.4. How do I fix the ``mudlog'' bug that lets people see me log in, even if I'm wizinvis? For all the mudlog calls for entering the game, quitting, and so forth, you must change mudlog(MAX(LEVEL_IMMORT, ... mudlog(MAX(GET_LEVEL(i), ... where ``i'' is either ``ch'' or ``d->character'' depending on the call. 6. CircleMUD 3.0 Questions 6.1. Are there any bugs in patch level 11? There are no bugs. Only features. Seriously though, if perchance you find a bug, please mail it (along with a possible fix) to Jeremy and the CircleMUD list. If the bug is a world related bug, it is a good idea to mail it to me, Alex, as well. 6.2. How do I access Online Creation? Online Creation is not yet part of the Circle beta release. When it does become part of the release, it'll be accessed through a command called olc. Update: OLC will probably be in release 3.10 now, instead of 3.0. 6.3. How does the new bitvector system work? The new bitvector system in CircleMUD 3.0 is an ascii based one. The old numeric values can still be used, but the new system should make sorting flags out substantially easier. The system uses an ``a'' as the value for 1, ``b'' for 2, ``c'' for 4, ``d'' for 8, etc. Once ``z'' is reached, the next letter in sequence is ``A''. Detailed information about how to use bitvectors with CircleMUD can be found in the CircleMUD Builder's Manual . 6.4. When will the production release of Circle 3.0 be? I don't know. Don't ask again. Same for the next patch level. 6.5. If someone logs in and just sits at the password prompt, the MUD hangs (i.e., no one else can connect or do anything) until the person enters their password. Your system's POSIX non-blocking I/O might be broken. Look in the source file sysdep.h at the comment above the line that says ``#define POSIX_NONBLOCK_BROKEN" for a possible fix. Once this is done, recompile the mud and try again. If you use the POSIX_NONBLOCK_BROKEN constant and it fixes your problem, please send mail to Jeremy and let him know exactly what kind of system you are using and what you had to do to fix it. 6.6. How do I add a new class? Adding a new class is fairly easy in 3.0, in fact, someone has taken the time to put together a fairly complete document on adding a class, in this case a Knight class. The class.doc is available at the same location as this FAQ: ftp://ftp.circlemud.org/pub/CircleMUD/docs/class.doc, http://cspo.queensu.ca/~fletcher/Circle/class.html, and http://cspo.queensu.ca/~fletcher/Circle/class.doc 6.7. Is there a complete ``coding.doc''? No. Look at the README.NOW in the docs directory. It isn't complete, nor does anyone have the entire thing. Jeremy is working on it. RTFM