From af18bd91b68ff8b5415b51544f93d655c107222a Mon Sep 17 00:00:00 2001 From: Rumble Date: Wed, 16 Jan 2008 23:19:50 +0000 Subject: [PATCH] Updated World and files for 3.55 release. --Rumble --- changelog | 45 +- FAQ => doc/FAQ | 0 doc/FAQ.pdf | Bin 77849 -> 0 bytes doc/FAQ.txt | 857 +++++++++++++ README => doc/README | 0 doc/README.CYGWIN | 111 +- doc/act.pdf | Bin 18331 -> 0 bytes doc/act.txt | 184 +++ doc/admin.pdf | Bin 49418 -> 0 bytes doc/admin.txt | 592 +++++++++ doc/building.pdf | Bin 97238 -> 0 bytes doc/building.txt | 1903 ++++++++++++++++++++++++++++ doc/coding.pdf | Bin 107450 -> 0 bytes doc/coding.txt | 1678 ++++++++++++++++++++++++ doc/color.pdf | Bin 11018 -> 0 bytes doc/color.txt | 123 ++ doc/debugging.txt | 335 +++++ doc/files.pdf | Bin 7555 -> 0 bytes doc/files.txt | 133 ++ doc/hacker.pdf | Bin 18036 -> 0 bytes doc/license.pdf | Bin 13810 -> 0 bytes doc/license.txt | 2 + doc/porting.pdf | Bin 15945 -> 0 bytes doc/porting.txt | 153 +++ doc/release.pdf | Bin 15296 -> 0 bytes doc/releases.txt | 148 +++ doc/socials.pdf | Bin 9403 -> 0 bytes doc/socials.txt | 168 +++ doc/syserr.txt | 48 +- doc/utils.pdf | Bin 16595 -> 0 bytes doc/utils.txt | 148 +++ lib/README | 28 - lib/house/README | 1 - lib/plralias/A-E/00 | 1 - lib/plralias/F-J/00 | 1 - lib/plralias/K-O/00 | 1 - lib/plralias/P-T/00 | 1 - lib/plralias/U-Z/00 | 1 - lib/plralias/ZZZ/00 | 1 - lib/plrobjs/purgedir | 7 - lib/plrobjs/purgeobjs | 10 - lib/plrobjs/searchfor | 7 - lib/plrvars/A-E/00 | 1 - lib/plrvars/F-J/00 | 1 - lib/plrvars/K-O/00 | 1 - lib/plrvars/P-T/00 | 1 - lib/plrvars/U-Z/00 | 1 - lib/plrvars/ZZZ/00 | 1 - lib/text/help/{screen => help} | 0 lib/text/help/{iscreen => ihelp} | 0 lib/text/help/oldhelp/commands.hlp | 1426 --------------------- lib/text/help/oldhelp/index | 6 - lib/text/help/oldhelp/index.mini | 6 - lib/text/help/oldhelp/info.hlp | 421 ------ lib/text/help/oldhelp/socials.hlp | 35 - lib/text/help/oldhelp/spells.hlp | 557 -------- lib/text/help/oldhelp/wizhelp.hlp | 728 ----------- lib/text/news | 6 +- lib/world/mob/1.mob | 6 +- lib/world/mob/30.mob | 2 +- lib/world/obj/0.obj | 22 +- lib/world/obj/1.obj | 408 +++--- lib/world/obj/13.obj | 16 +- lib/world/shp/0.shp | 21 + lib/world/trg/0.trg | 467 ++++--- lib/world/trg/1.trg | 186 ++- lib/world/trg/13.trg | 162 ++- lib/world/trg/2.trg | 57 + lib/world/trg/236.trg | 30 +- lib/world/trg/271.trg | 2 +- lib/world/trg/3.trg | 12 +- lib/world/trg/30.trg | 474 +++---- lib/world/trg/63.trg | 2 +- lib/world/wld/0.wld | 3 +- lib/world/wld/1.wld | 10 +- lib/world/wld/104.wld | 12 - lib/world/wld/12.wld | 11 + lib/world/wld/236.wld | 81 +- lib/world/wld/30.wld | 194 ++- lib/world/zon/0.zon | 4 - lib/world/zon/1.zon | 2 + lib/world/zon/12.zon | 4 +- lib/world/zon/2.zon | 13 +- src/act.wizard.c | 4 +- src/constants.c | 2 +- src/db.h | 4 +- src/genwld.c | 2 +- src/spells.c | 2 +- src/structs.h | 3 +- src/util/asciipasswd.c | 4 +- src/util/autowiz.c | 2 +- src/util/listrent.c | 2 +- src/util/plrtoascii.c | 2 +- src/util/shopconv.c | 6 +- src/util/sign.c | 20 +- src/util/split.c | 2 +- src/util/webster.c | 8 +- src/util/wld2html.c | 6 +- 98 files changed, 7739 insertions(+), 4409 deletions(-) rename FAQ => doc/FAQ (100%) delete mode 100644 doc/FAQ.pdf create mode 100644 doc/FAQ.txt rename README => doc/README (100%) delete mode 100644 doc/act.pdf create mode 100644 doc/act.txt delete mode 100644 doc/admin.pdf create mode 100644 doc/admin.txt delete mode 100644 doc/building.pdf create mode 100644 doc/building.txt delete mode 100644 doc/coding.pdf create mode 100644 doc/coding.txt delete mode 100644 doc/color.pdf create mode 100644 doc/color.txt create mode 100644 doc/debugging.txt delete mode 100644 doc/files.pdf create mode 100644 doc/files.txt delete mode 100644 doc/hacker.pdf delete mode 100644 doc/license.pdf delete mode 100644 doc/porting.pdf create mode 100644 doc/porting.txt delete mode 100644 doc/release.pdf create mode 100644 doc/releases.txt delete mode 100644 doc/socials.pdf create mode 100644 doc/socials.txt delete mode 100644 doc/utils.pdf create mode 100644 doc/utils.txt delete mode 100644 lib/README delete mode 100644 lib/house/README delete mode 100644 lib/plralias/A-E/00 delete mode 100644 lib/plralias/F-J/00 delete mode 100644 lib/plralias/K-O/00 delete mode 100644 lib/plralias/P-T/00 delete mode 100644 lib/plralias/U-Z/00 delete mode 100644 lib/plralias/ZZZ/00 delete mode 100755 lib/plrobjs/purgedir delete mode 100755 lib/plrobjs/purgeobjs delete mode 100755 lib/plrobjs/searchfor delete mode 100644 lib/plrvars/A-E/00 delete mode 100644 lib/plrvars/F-J/00 delete mode 100644 lib/plrvars/K-O/00 delete mode 100644 lib/plrvars/P-T/00 delete mode 100644 lib/plrvars/U-Z/00 delete mode 100644 lib/plrvars/ZZZ/00 rename lib/text/help/{screen => help} (100%) rename lib/text/help/{iscreen => ihelp} (100%) delete mode 100644 lib/text/help/oldhelp/commands.hlp delete mode 100644 lib/text/help/oldhelp/index delete mode 100644 lib/text/help/oldhelp/index.mini delete mode 100644 lib/text/help/oldhelp/info.hlp delete mode 100644 lib/text/help/oldhelp/socials.hlp delete mode 100644 lib/text/help/oldhelp/spells.hlp delete mode 100644 lib/text/help/oldhelp/wizhelp.hlp diff --git a/changelog b/changelog index fa54bd2..2185ee4 100644 --- a/changelog +++ b/changelog @@ -1,10 +1,16 @@ TbaMUD is currently being developed by The Builder Academy. If you need any -help, find any bugs, or have ideas for improvement please stop by TBA. -Rumble -The Builder Academy -builderacademy.net 9091 +help, find any bugs, or have ideas for improvement please stop by TBA at +telnet://tbamud.com:9091 or email rumble@tbamud.com --Rumble tbaMUD 3.55 +[Jan 17 2008] - Rumble + Updated files for 3.55 release. + Updated documentation in the /doc directory. +[Jan 16 2008] - Rumble + New content management system (drupal) at http://tbamud.com. Forums, blogs, etc. (thanks Mordecai) + Converted all of /doc pdf's back to text files. PDF versions will be on http://tbamud.com + Updated tell m-w command due to html changes. (thanks Welcor) + Renamed lib/text/help/screen and iscreen files to help and ihelp. [Jan 06 2008] - Rumble Removed break in oedit_disp_val1_menu ITEM_NOTE that caused a delay. (thanks Rhade) Fixed tlist when specifying a range. (thanks Rhade) @@ -27,6 +33,7 @@ tbaMUD 3.55 [Dec 15 2007] - Rumble Showvnums shows [T#] for a single attached trig or [TRIGS] for multiple attached trigs (except for rooms since there is plenty of room to list all attached trigs). Fixed bug where showvnums would not show if attached. (thanks Sryth) + tbaMUD 3.54 [Nov 12 2007] - Rumble Updated users command to fix GET_INVIS_LEV bug. @@ -467,32 +474,4 @@ Version 3.53 release: July, 2007 Version 3.52 release: April, 2007 Version 3.51 release: February, 2007 Version 3.5 release: December, 2006 -Version 3.1 (yes, no beta pl): November 18, 2002 -Version 3.00 beta pl22 release: October 4, 2002 -Version 3.00 beta pl21 release: April 15, 2002 -Version 3.00 beta pl20 release: January 15, 2002 -Version 3.00 beta pl19 release: August 14, 2001 -Version 3.00 beta pl18 release: March 18, 2001 -Version 3.00 beta pl17 release: January 23, 2000 -Version 3.00 beta pl16 release: August 30, 1999 -Version 3.00 beta pl15 release: March 16, 1999 -Version 3.00 beta pl14 release: July 3, 1998 -Version 3.00 beta pl13a release: June 4, 1998 -Version 3.00 beta pl13 release: June 1, 1998 -Version 3.00 beta pl12 release: October 29, 1997 -Version 3.00 beta pl11 release: April 14, 1996 -Version 3.00 beta pl10 release: March 11, 1996 -Version 3.00 beta pl9 release: February 6, 1996 -Version 3.00 beta pl8 release: May 23, 1995 -Version 3.00 beta pl7 release: March 9, 1995 -Version 3.00 beta pl6 release: March 6, 1995 -Version 3.00 beta pl5 release: February 23, 1995 -Version 3.00 beta pl4 release: September 28, 1994 -Version 3.00 beta pl1-3, internal releases for beta-testers. -Version 3.00 alpha: Ran on net for testing. Code not released. -Version 2.20 release: November 17, 1993 -Version 2.11 release: September 19, 1993 -Version 2.10 release: September 1, 1993 -Version 2.02 release: Late August 1993 -Version 2.01 release: Early August 1993 -Version 2.00 release: July 16, 1993 (Initial public release) +See releases.txt diff --git a/FAQ b/doc/FAQ similarity index 100% rename from FAQ rename to doc/FAQ diff --git a/doc/FAQ.pdf b/doc/FAQ.pdf deleted file mode 100644 index cdf10b5f13b207008385d16c7d41a9ec1f7b5cfe..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 77849 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 diff --git a/doc/FAQ.txt b/doc/FAQ.txt new file mode 100644 index 0000000..e8b7948 --- /dev/null +++ b/doc/FAQ.txt @@ -0,0 +1,857 @@ +If you have any additions, corrections, ideas, or bug reports please stop by the +Builder Academy at telnet://tbamud.com:9091 or email rumble@tbamud.com -- Rumble + + Frequently Asked Questions (FAQ) for tbaMUD with Answers + +This file is intended to cover common questions related to tbaMUD. Any +contributions and corrections are more than welcome. It is currently +maintained by Rumble of the Builder Academy. Please stop by the Builder +Academy if you have any corrections or additions: tbamud.com 9091 +This FAQ was originally written by Ryan Watkins (VampLestat) and later +maintained by Alex Flectcher (Furry). + +Other great resources are online at: http://tbamud.com +______________________________________________________________________ + +Table of Contents + +1. Introduction + 1.1 I've never played a MUD before. What should I do? + 1.2 I'm new to C and/or coding. What do I do? + 1.3 I want to build my own MUD. Where do I start? + 1.4 What is tbaMUD? + 1.5 What is the history of tbaMUD? + 1.6 Where is the original tbaMUD so I can check it out? + 1.7 Will the tbaMUD creators visit my mud? + 1.8 What is UNIX? + +2. Resources + 2.1 Where do I find the source code for tbaMUD? + 2.2 Where do I find areas, etc. for tbaMUD? + 2.3 I have questions about tbaMUD. Where should I go? + 2.4 To what platforms has tbaMUD been ported? + 2.5 How can I submit code or areas for use with tbaMUD? + 2.6 How do I use a patch file and how can I make one? + +3. Compiling tbaMUD + 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 header files? + 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? + 3.4 Every time I try to compile tbaMUD (or any other piece of software) + under Linux, it gives me errors and says it cannot find include header + files in the linux/ and asm/ directories. What can I do? + 3.5 I'm getting compilation errors from a header file, and I didn't even + change it? + 3.6 I'm trying to compile the MUD on Windows and am having problems, + what can I do? + 3.7 How can I do a ``grep'' on Windows? + 3.8 While compiling the MUD, why do I get errors like ``foo.c:1231: + Undefined symbol `_whereamI' referenced from text segment'' + 3.9 What is a parse error and how do I fix it? + 3.10 I have this piece of code that calls bcopy(), bzero(), and bcmp() + and it won't compile, so what can I do? + 3.11 My compiler doesn't have ``strdup()'', what can I do? + 3.12 I am having trouble with my ``makefile'', what could be the problem? + 3.13 How can I handle directories in C? + +4. Running tbaMUD + 4.1 I typed ``autorun'' but then my terminal just froze. + 4.2 I typed ``bin/circle'' and got lots of boot messages, but then it + said ``Entering game loop'' and froze. + 4.3 Okay, I think the MUD is running but why don't I get a login prompt? + 4.4 How come I get this error when running my MUD: ``Error reading board: + No such file or directory'' + 4.5 I just got this SIGPIPE, what is it and what Can I Do About It? + 4.6 When I run tbaMUD under Linux, it tells me ``gethostbyaddr: + connection refused'' when the MUD boots, and then dies. Why? + 4.7 When I run tbaMUD under Windows, it tells me ``Winsock error + #10047'' when the MUD boots, and then dies. Why? + 4.8 When I run tbaMUD under Windows, players can't rent---their + equipment is just dropped on the ground, syslogs don't work, so what + is the problem? + 4.9 When someone logs on to my Windows MUD, the console screen gives: + ``gethostbyaddr: No such file or directory'' + 4.10 My MUD crashed and my connection got closed. What can I do? + 4.11 Ok, so how do I use ``gdb''? + 4.12 How can I hunt bugs more effectively? + 4.13 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? + 4.14 I decided to wipe my pfile away anyway. What steps should I take to + do this? + 4.15 I want to expand the ability to pk in my MUD, allowing ASSASSINS + that'll be able to PK without getting flagged. How can I do this? + 4.16 Why does it say ``Connection closed by foreign host.'' and not + display the ``Byebye!'' message I'm trying to send before cutting + someone off? + 4.17 How do I get the tbaMUD to autoload when the Linux server is + restarted? + 4.18 My server shuts down my MUD everytime I logoff. How do I keep the + MUD running when I logoff? + +5. tbaMUD Questions + 5.1 Why does tbaMUD use BUF switches all through the code, what's + happening here? + 5.2 How do I add a new class? How do I add more levels? etc? + +______________________________________________________________________ + +1. Introduction + +1.1. I've never played a MUD before. What should I do? + +Don't try to use your own copy of tbaMUD! 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 tbaMUD code. Check +out other tbaMUD's at: http://www.tbamud.com/forum?c=showthread&ThreadID=86 + +1.2. I'm new to C and/or coding. What do I do? + +First, a MUD is not a learning project. It has tens of thousands of lines to +it, many of which are obscure and unclear to even moderately skilled +programmers. Those little, ``Hello, world,'' programs are for learning, +maybe little math tests, etc. A MUD is a pretty ambitous project to start +with. That's like trying to run before you can walk, and while there's more +difficult things than a MUD to start with, there's a ton of easier things you +should start with. Second, if you are persistent, get a good C reference book +and read the code, try to comprehend what everything is doing (to some small +extent). You should probably avoid comm.c as it is home to the socket +functions which general C books don't cover and are usually explained in other +books on network programming. Then try small projects, something similar to +what already exists. This way, you can get away with a cut-and-paste job and +changing some of the code. Adding a simple version of races isn't all that +difficult, just examine the class code in class.c and the CON_QCLASS block in +interpreter.c, cut, paste, and modify. Also look at structs.h, for "#define +CLASS_" You'll begin understanding more and more of the code as you copy and +change it, eventually you'll be able to write a whole function by yourself. +Spend time learning, going with haste will hurt you more than it will help you. +Many patches and tutorials are available at: http://tbamud.com (such as adding +races, classes, liquids, skills, spells, etc. + +1.3. I want to build my own MUD. Where do I start? + +Many common questions arise from new MUD admins. It is a good idea to pay +attention to them and take their answers to heart. These include things +like the following: + +I don't have any coding experience with MUDs, but do have a lot of ideas for +my own. I have played many MUDs for a LONG time, though. + +Read the FAQ. MUD Experience doesn't help a huge amount. Code experience +does. + +I am interested in having a level system of 1-50 mortal and 51-60 imms. I +am also interested in adding races and classes. How can I accomplish these +things? + +By checking out the content at http://www.tbamud.com. + +1.4. What is tbaMUD? + +TbaMUD is a DikuMUD derivitave, developed by Jeremy Elson as CircleMUD from +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 it cannot be used to make money in ANY way, the original developers' +names must be in the login screen and that the credits command always presents +the same information, etc. + +tbaMUD's vision is to provide the MUDding community a stable and functional +codebase that includes an in-depth World and help files that makes it ready +to be molded into a custom MUD by its coders and builders. We also provide +multiple resources to allow for feedback, contribution, and the sharing of +ideas within the MUDding community to ensure constant development and +improvements. + +TbaMUD 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, and races, tbaMUD will disappoint you. TbaMUD still +has only the 4 original Diku classes, the original spells, and the original +skills. On the other hand, if you're looking for a highly stable, developed, +organized, and well documented "blank slate" MUD on which you can put your OWN +ideas for spells, skills, and classes, then tbaMUD is what what you are looking +for. + +1.5. What is the history of tbaMUD? + +TBA stands for The Builder Academy. + +TBA was created in 2000 on Cruel World which was being run by Zemial and Welcor. +I began combining my own experience with the work of others into an extensive +tutorial zone, help files, and examples. Welcor and I ended up separating TBA +from Cruel World to further enhance our training of new builders. Welcor has +taken over the development of Trigedit and has contributed extensively to what +has now evolved into the tbaMUD release. + +After offering several times to take over CircleMUD development TBA released +CircleMUD 3.5 and later changed the codebase name to tbaMUD. TBA now has many +purposes including: Developing trigedit, OLC, the tbaMUD codebase, and all the +zones. + +TbaMUD's vision is to provide the MUDding community a stable and functional +codebase that includes an in-depth World and help files that makes it ready +to be molded into a custom MUD by its coders and builders. We also provide +multiple resources to allow for feedback, contribution, and the sharing of +ideas within the MUDding community to ensure constant development and +improvements. + +TbaMUD 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, and races, tbaMUD will disappoint you. TbaMUD still +has only the 4 original Diku classes, the original spells, and the original +skills. On the other hand, if you're looking for a highly stable, developed, +organized, and well documented "blank slate" MUD on which you can put your OWN +ideas for spells, skills, and classes, then tbaMUD is what what you are looking +for. + +See release.txt for a release history. + +For builders TBA is a low stress, no deadline, training environment. Where +anyone with motivation can work at their own pace to learn as much or as +little as they wish. Numerous people are available to answer questions and +give advice. 1000's of builders served and counting. + +1.6. Where is the original tbaMUD so I can check it out? + +The Builder Academy +tbamud.com 9091 + +1.7 Will the tbaMUD creators visit my mud? + +While there is a possibility that one (or more) of the tbaMUD creators will +drop by your MUD for a visit, to play, or to simply look around, there is a +slim chance that they will identify themselves. We don't want free wizzes +or favors for our work here. In fact, we will state categorically that if +anyone comes on your MUD claiming to be associated with us, they aren't. + +1.8. What is UNIX? + +UNIX is not an operating system of itself, it's a type (flavour, if you +will) of operating systems. Many different kinds of UNIXes exist. Some of +them are free, some of them are not. How to tell if you have a UNIX +operating system? Well, UNIXes have the `ps' command, tend to have a `%' or +`#' prompt, give you a home directory, `who' will show who else is on the +system, etc. Many UNIX systems (such as Linux) strive to be POSIX +compatible, so you'll probably see POSIX mentioned, too. POSIX is, roughly, +the standards which UNIX operating systems go by. It says what makes an +operating system part of the UNIX family and so forth. Some UNIX operating +systems are not 100% POSIX compatible, actually, most aren't. The following +are types of UNIX (but not all the existing flavours): Linux, FreeBSD, BSD, +BSDi, Solaris. There are others. UNIX operating systems are command-based +and Microsoft does not make a variant. + +2. Resources + +2.1. Where do I find the source code for tbaMUD? + +TbaMUD's complete source code and areas are available for download at: +http://tbamud.com + +2.2. Where do I find areas, etc. for tbaMUD? + +All donated areas have been added to the latest version of tbaMUD. If you +wish to donate some of your own work stop by the Builder Academy. + +2.3. I have questions about tbaMUD. Where should I go? + +Stop by The Builder Academy at tbamud.com 9091 or the website at: +http://tbamud.com + +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.txt' will have information about +how to add new spells, skills, commands, etc. `building.txt' has information +about the World file formats and how to read the files, etc. There are many +other documents in the doc directory with useful information, read them all. + +If you still have questions after reading the doucmentation, check out: + +http://tbaMUD.com/ +http://cwg.lazuras.org/modules.php?name=Forums +http://groups.yahoo.com/group/circle-newbies/ +http://post.queensu.ca/cgi-bin/listserv/wa?SUBED1=circle&A=1 +http://groups.yahoo.com/group/dg_scripts/ + +2.4. To what platforms has tbaMUD been ported? + +TbaMUD 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. TbaMUD compiles +without changes under most BSD and SVR4 systems, including SunOS, Solaris, +Ultrix, IRIX, AIX, Linux, BSD/OS, HP/UX, and others. + +TbaMUD has also been ported to various non-UNIX platforms. You can now +compile it under OS/2 2.x and 3.x with the OS/2 port of gcc, Windows using +Microsoft Visual C++ version 4.0 or 5.0, Cygwin, Borland (now Inprise) C++, +Watcom v.11, Cygnus GNU-WIN32, LCC, Macintosh with CodeWarrior, Amiga, and +Acorn RiscOS. + +2.5. How can I submit code or areas for use with tbaMUD? + +Stop by the Builder Academy. tbamud.com 9091 or visit http://tbamud.com + +2.6. How do I use a patch file and how can I make one? + +Patch files are created and used via the ``diff'' and ``patch'' utilities, +respectively. These are the various parameters to use with diff (all work in +general on unix based systems, but check out the help entries to be certain. + +diff -uN [original_src_directory] [altered_src_directory] > Patch + +-u is the unified output. ie. it tells diff to output the text what is +called ``patch'' style. On some systems, you will have to use -c but it +generates much larger and harder to follow patches. + +-N Tells diff to treat files that are in one directory and not there in the +other as being empty in the one they are not there. It allows entire files +to be included into the patch. + +-r recursive, add r to the uN above if you want it to recursively add in +any subdirectories. (be careful with this one) + +-p Tells diff to indicate what function is being ``patched'' in each +section. This may not be supported by all versions of ``diff.'' + +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 be 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 instructions +given here and follow the instructions given with the patchfile instead. + +Finally, in modern patches, there are three characters of interest to note: + +o ! :: The line changes between new and old. +o + :: This line is added to the old to make the new. +o - :: This line is removed from the old to make the new. +o The rest of the lines are just there to give you an idea of where + to change. + +3. Compiling tbaMUD + +3.1. Why do I get many syntax errors with Sun's ``cc'' compiler? + +Because tbaMUD 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 (ftp://ftp.gnu.org/pub/gnu) 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? + +TbaMUD 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 tbaMUD (or any other piece of software) + 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: + +http://www.kernel.org/mirrors/ + +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 about 13 megabytes compressed and 54 megabytes +uncompressed (For the 2.2.9 kernel). + +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 48.5 megs back. + +(Thanks to Michael Chastain for providing this answer.) + +3.5. I'm getting compilation errors from a header file, and I didn't even + change it? + +Okay, if you really didn't change ``structs.h'' then the error isn't in +``structs.h''. I think I've seen 2 cases where this has happened, the +first, is that the header file you included right before the header file +messing has an error in it. I can't really say much beyond that, but look +for a missing semicolon, are any other errors you can find. + +If you include files out of order, it can mess things up. For example, B.h +has stuff in it that is defined in A.h, and if you include B.h before A.h, +you can get errors, your best bet here is to mess with the order of the +headers, making sure you put ``conf.h'' and ``sysdep.h'' at the top, +followed by ``structs.h'', ``utils.h'', etc. Any file specific headers +should be the last one included just for coding style. + +3.6. I'm trying to compile the mud on Windows and am having problems, + 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 winsock +sockets now. Second, you should ensure that you have carefully read the +README.WIN file for instructions on what to include. 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 +(ftp://204.119.24.14/pub/patch/patch12.zip). This does not support long +filenames (but can be used with short filenames). + +3.7. How can I do a ``grep'' on Windows? + +1. Select ``start menu''->``find''->``files or folders'' +2. Enter the files/dirs to search in. +3. Select ``Advanced'' +4. In the ``Containing Text'' input box, type in the text you want. +5. Double click on a match to bring up the file that matched. + Even better is to use MSVC's find command (if you have it). + +3.8. 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.9. What is a parse error and how do I fix it? + +A parsing error is often a missing or extra semicolon, parenthesis, or +bracket ({). + +If the parse error is before a semicolon at the end of a line of code, it is +something on that line. + +If it is at the beginning of a line within a function, it is usually a +missing semicolon on the previous line. + +If it is at the beginning of a function, count your brackets (especially the +{} ones) in the previous function. + +I can't think of any other parse errors. These are the ones I commonly see. +With a bit of practice, they are very easy to locate and fix. For a more +detailed explanation, check out the C Language FAQ. + +3.10. I have this piece of code that calls bcopy(), bzero(), and bcmp() and + it won't compile, so what can I do? + +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.11. My compiler doesn't have ``strdup()'', what can I do? + +Use tbaMUD's built-in str_dup() function instead. + +3.12. 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 + +3.13. How can I handle directories in C? + +Note that this seems only to be valid for UNIX OSes. Handling of +directories is accomplished through the dirent.h and sys/types.h files. The +function opendir() returns a ``DIR*'' pointer (it's like but not the same as +the ``FILE *'' pointer) when you pass it the name of a directory to open or +NULL if it can't open the dir. After the directory has been opened, you can +step through the files or search for particular files, etc. using readdir(), +seekdir(), and scandir(). When you reach the end of the directory list, you +can either go back to the start with rewinddir() or close the directory with +closedir(). The following code (which has not been tested) should open a +directory and go through it one by one and prints the filenames: + + struct dirent * ffile; + DIR * my_dir; + + if (!(my_dir = opendir("foo"))) + return; + + while (1) { + if (!(dirent = readdir(my_dir))) + break; + printf("%s\n", dirent->d_name); + } + + closedir(my_dir); + +The dirent structure contains only two useful elements, the file's name +(d_name) and the files length (d_reclen). + +Thanks to Daniel Koepke for the above. + +4. Running tbaMUD + +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. + +On some systems, you may need to prepend ``nohup'' to the autorun command +since some systems will kill off any processes left running when you leave +the shell. + +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 ``autorun &'' 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. How come I get this error when running my mud: ``Error reading board: + No such file or directory'' + +This is not a bad thing, all it means is that you have some boards on the +mud and that it can't find the file for them. Since it can't find the file, +the mud will just create the file on the fly and use that, so the next time +something is posted to the board, the files will exist. However, if you did +have files for the boards and you are suddenly getting this error, it means +that the board files have been deleted or something similar. + +4.5. I just got this SIGPIPE, what is it and what Can I Do About It? + +Often it appears that other people send your system SIGPIPEs when their +connection is closed, in fact, it is not the person sending the SIGPIPE, it +is your system. The SIGPIPE is generated when your program attempts to +write to descriptor which has no one listening to it. This occurs if the +character is sent a message by the mud after connecting, but before the +socket is flagged with an exception or reads 0 bytes. By default, tbaMUD +ignores these SIGPIPEs, with the line my_signal(SIGPIPE, SIG_IGN) in +signal_setup(). Where most people see the problems with SIGPIPE is while +debugging with GDB. By default, GDB responds to a SIGPIPE by stoping the +program, printing that a SIGPIPE was received, and passing it to the +program. You can change the action taken by GDB by using the `handle' +command. To stop the program from stoping at SIGPIPE, you would give GDB the +command `handle SIGPIPE nostop' + +4.6. When I run tbaMUD 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.7. When I run tbaMUD under Windows, 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 CDROM in order to copy +the drivers onto your hard drive. + +4.8. When I run tbaMUD under Windows, players can't rent---their + equipment is just dropped on the ground, syslogs don't work, so 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 is fixed in Circle 3.0 patchlevel 12 and above. Before +patchlevel 12, you can fix it simply by manually creating the needed +directories: + + CD \tbamud + 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 configured +simply to write all errors to the standard error file descriptor (stderr), +and Windows doesn't seem to let you redirect stderr to a file the same way +UNIX does. pl12 allows you to direct logs to a specific file instead. + +4.9. When someone logs on to my Windows 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.10. 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. +You can also try using gdb to find out why the MUD is crashing if it gives +you a core dump. + +4.11. Ok, so how do I use ``gdb''? +4.12. How can I hunt bugs more effectively? + +See debugginge.txt + +4.13. 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? + +This should no longer be a problem with the do_cheat function in act.wizard.c +but the only ID with access by default is IDNUM 1. + +4.14. I decided to wipe my pfile away anyway. What steps should I take to + do this? + +tbaMUD has ASCII pfiles so all you have to do is delete the index and all +pfiles in the /lib/plrfiles/ directory. + +You should also remove files in plrobjs, plralias, and plrvars, unless you want +the recreated characters to come back with their same equipment, aliases, and +trigger variables. + +4.15. I want to expand the ability to pk in my MUD, allowing ASSASSINS + that'll be able to PK without getting flagged. How can I do this? + +With tbaMUD simply enter Cedit (configuration editor) and select Game Play +Options. Then enable Player Killing. + +4.16. 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(ch, "Bye bye. Come back soon, ya hear?"); + 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 (ie 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(ch, "Bye bye. Come back soon, ya hear?"); + 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. + +4.17. How do I get the tbaMUD to autoload when the Linux server is + restarted? + +In /etc/rc.d/rc.local find where things like sendmail and (maybe) gpm +are started. Add something like: + +cd /home/mudlogin/tbamud/ +su mudlogin -c ./autorun & +cd + +Of course, change the "mudlogin" to whatever the name of the account is that +normally has control of the MUD, and change the path in the first cd to +whereever the MUD is run from. + +For more info: man su + +4.18. My server shuts down my MUD everytime I logoff. How do I keep the MUD + running when I logoff? + +Instead of typing "autorun &" to start the autorun script (which starts and +keeps the MUD running), type "nohup autorun &". Running the autorun via +nohup will keep the script and the MUD running when you logoff of the +server. For more information type "man nohup" at the prompt on your server. + +5. tbaMUD 3.X + +5.1. Why does tbaMUD use BUF switches all through the code, what's + happening here? + +From Jeremy: + +This code is the new output buffering system that I wrote for Circle in the +early (non-released) beta versions of 3.0. The old Diku code for queueing +output (which stayed with Circle until version 2.20) was memory- and +time-inefficient in many cases (and, in my opinion, was inefficient for the +normal behavior of most MUDs). + +First, I should explain what output queueing is and why it is necessary. On +each pass through the game_loop(), the MUD performs a number of steps: check +to see if there are any new players connecting, kick out people with bad +links, read input over the network for all players, then process the input +for each player that has sent a complete line over the net. The processing +step is usually where output is generated because it is where MUD commands +are processed (e.g., ``kill'' might generate output of ``Kill who?'') When +output is generated, it is not immediately sent out to the player, but +instead queued for output in a buffer. After all players' commands are +processed (and each command generates the appropriate output for various +players), the next step of the game_loop() is to send all the queued output +out over the network. + +The new output system that tba now uses allocates a small, fixed size +buffer (1024 bytes) for each descriptor in which output can be queued. When +output is generated (via such functions as send_to_char(), act(), etc.), it +is written to the fixed size buffer until the buffer fills. When the buffer +fills, we switch over to a larger (12K) buffer instead. A ``buffer +switch'', therefore, is when the 1024-byte fixed buffer overflows. + +When a large (12K) buffer is needed, it is taken from a pool of 12K buffers +that already been created. It is used for the duration of that pass through +the game_loop() and then returned to the pool immediately afterwards, when +the output is sent to the descriptor. If a large buffer is needed but none +are in the pool, one is created (thereby increasing the size of the pool); +the ``buf_largecount'' variable records the current pool size. + +If a player has already gone from their small to large buffer, and so much +output is generated that it fills even the large buffer, the descriptor is +changed to the overflow state, meaning that all future output for the +duration of the current pass through the game loop is discarded. This is a +buffer overflow, and the only state in which output is lost. + +Now that I've described how the system works, I'll describe the rationale. +The main purpose for the two-tiered buffer system is to save memory and +reduce CPU usage. From a memory standpoint: Allocating a fixed 12K buffer +for each socket is a simple scheme (and very easy to code), but on a large +MUD, 100 12K buffers can add up to a lot of wasted memory. (1.2 megs of +memory used for buffering on a 100-player MUD may not seem like very much, +but keep in mind that one of tba's big selling points several years ago, +when memory was expensive, was that it had a very small memory footprint (3 +or 4 megs total!) And from a CPU standpoint: the original Diku used a +dynamically allocated buffer scheme to queue output, which unfortunately +meant that for each player, on each pass through the game loop, dozens of +tiny buffers (often one for every line of output, depending on the code to +execute the command) were allocated with malloc(), individually written to +the system using individual calls to write(), and then free()'d. My system +saves hundreds or thousands of calls per second to malloc() and free(), and +reduces the number of system calls *drastically* (to at most one per player +per pass through the game loop). + +The trick is to choose the size of the small and large buffers correctly in +order to find the optimal behavior. I consider ``optimal'' to mean that 90% +of the time, most players stay within the limits of their small buffer (for +example, when wandering through town or mindlessly killing some monster +while watching damage messages go by). Hopefully, a large buffer switch is +only necessary when a player executes a special command that generates an +unusually large amount of output, such as ``who'', ``read board'', or +``where sword''. This critically depends on the fact that not everyone will +be executing such a special large-output command at the same instant. + +For example, imagine you have 10 players on your MUD. They are all +wandering around town, and every once in a while one of them types ``who'', +or reads the board, meaning that they are seeing more than 1024 bytes of +output at a time. On such a MUD, I would hope that there would only be a +single 12K buffer allocated which gets passed around among all the 10 +players as needed. Now, all players think they can queue up to 12K of +output per command without getting truncated even though only one 12K buffer +actually exists -- they are all sharing it. + +But - there's a problem with this. There are certain cases when many +players have to see a lot of output at the same instant (i.e. on the same +pass through the game_loop()), all of them will need a large buffer at the +same time and the pool will get very big. For example, if an evil god types +``force all who''; or if the MUD lags for several seconds, then suddenly +gets unlagged causing many commands to be processed at the same moment; or +if 20 people are all trying to kill the same MOB and are all seeing 20 +damage messages (more than 1024 bytes) on the same pass through the +game_loop(). + +Unfortunately, the current patchlevel of tba has no way to destroy large +buffers so such cases are pathological and cause wasted memory. +Unfortunately since I don't run a MUD I can't actually tell how often this +happens on a real MUD. (If there are any IMPs out there who run large MUDs +(say, >= 30-50 players on regularly), and you've read this far, please send +me the output of ``show stats'' after your MUD has been played for at least +several hours.) + +5.2 How do I add a new class? How do I add more levels? etc? + +Many common questions about basic additions are answered here: +http://tbamud.com \ No newline at end of file diff --git a/README b/doc/README similarity index 100% rename from README rename to doc/README diff --git a/doc/README.CYGWIN b/doc/README.CYGWIN index ff9916f..d4d80f6 100644 --- a/doc/README.CYGWIN +++ b/doc/README.CYGWIN @@ -1,38 +1,71 @@ -Updated: Apr 2007 +If you have any additions, corrections, ideas, or bug reports please stop by the +Builder Academy at telnet://tbamud.com:9091 or email rumble@tbamud.com -- Rumble + Compiling tbaMUD under Microsoft Windows using CygWin +Originally by: Jeremy Elson, David Goldstein, Tony Robbins, and George Greer. tbaMUD compiles under Cygwin without needing any special modifications. -This free pseudo-Unix environment for Windows includes the "bash" shell, "gcc" -family of compilers, and a full set of programs and libraries for Windows users -to compile and run programs from source code intended for Unix. It can be -downloaded from: http://cygwin.com/ +This free pseudo-Unix environment for Windows includes the "bash" shell, gcc, +and a full set of programs and libraries for Windows users to compile and run +programs from source code intended for Unix. It can be downloaded from: +http://cygwin.com/ Compiling tbaMUD under Cygwin is basically the same as it would be under another form of Unix: 1) Download from: http://cygwin.com/setup.exe Select open. - Install from Internet - Select "just me" "dos" - Choose a mirror site. - Leave selected package as default. - Select the following from devel: autoconf, gcc, make, and patchutils - Click Next. - Install, follow prompts. + Install from Internet. + Choose a root directory, I use C:\ + Select "just me" "Unix / binary" + Select a local package directory, I use C:\WINDOWS\Temp + Leave Direct Connection selected. + Choose a download site. + You can either click the "circular arrow" next to All to install the whole + thing (it lags a bit, wait for it) or leave default and add the necessary + packages yourself by expanding devel and adding: autoconf, gcc, make, and + patchutils (choose the first one of each). The all option requires + broadband and at least an hour to download. It will automatically install + once complete, just follow the prompts. -2) Download and uncompress the latest version of tbaMUD: - http://cwg.lazuras.org/modules.php?name=Downloads&d_op=viewdownload&cid=16 - Join the forums as they will be a great resource for any problems that you - encounter. Once you download and uncompress tbaMUD (I use winRAR) read - through the /doc directory. +2) Download the latest version of tbaMUD from http://tbamud.com + Create an account on tbamud.com as it will be a great resource for any + problems that you encounter. Once you download and uncompress tbaMUD (I use + winRAR) read through the /doc directory. 3) Start the Cygwin "bash" shell by double clicking the Cygwin Icon. This will open a telnet looking window that mimics a *nix server where you can run the MUD. Go to the directory where you extracted tbaMUD by using the "cd" change directory command and "dir" directory listing to find the correct files. For - example "C:\tbaMUD". "cd c:/tbaMUD" "dir" in the listed files you should see - one called configure. DO NOT go into the SRC directory yet. + example "C:\tbaMUD". "cd c:/tbaMUD" then "dir" to list the files. You should + see one called configure. DO NOT go into the SRC directory yet. + +4) Run the configure script by typing "./configure". This will automatically + detect what programs and library functions are available, and create the + files "Makefile" and "conf.h" based on the results. + + If you get complaints from bash that it will not run the configure script + either because it cannot find it or because it claims the file is not + an executable, you can also try "sh configure", "sh ./configure", + "bash configure" and "bash ./configure" until one of them works. + +5) NOW change to the /tbaMUD/src directory "cd src", and type "make", and watch + tbaMUD and the additional utilities included in the tbaMUD distribution + automatically being compiled and placed in /tbaMUD/bin. + +6) Go back to /tbaMUD, and run the MUD either directly by typing "bin/circle", + or by using the "./autorun &" script. The & makes it run in the background. + +7) Start a telnet program. Open a connection to your own machine "localhost" + on port 4000. You should see the MUD's login screen welcoming you. The + first person to login will be promoted to IMP. + +If you have problems, read this document again. Most questions are answered in +the documentation or at http://tbamud.com. If you are still having problems +feel free to stop by The Builder Academy for assistance. + +It really can not be stressed enough: READ EVERYTHING. OPTIONAL: Make the following change to src/Makefile.in to make copyover work: @@ -49,41 +82,7 @@ OPTIONAL: Make the following change to src/Makefile.in to make copyover work: clean: The above is a "patch" file. All you need to do is add the two lines with - the +'s to your file Makefile.in. If you are still confused check out these - links on how to patch: http://www.circlemud.org/cdp/wtfaq/handpatch.html + the +'s to your file Makefile.in (but delete the +'s). If you are still + confused check out these links on how to patch: + http://www.circlemud.org/cdp/wtfaq/handpatch.html http://cwg.lazuras.org/modules.php?name=Forums&file=viewtopic&t=757 - -4) Run the configure script by typing "./configure". This will automatically - detect what programs and library functions are available, and create the - files "Makefile" and "conf.h" based on the results. - - If you get complaints from bash that it will not run the configure script - either because it cannot find it or because it claims the file is not - an executable, you can also try "sh configure", "sh ./configure", - "bash configure" and "bash ./configure" until one of them works. - -5) NOW change to the /tbaMUD/src directory "cd src", and type "make", and watch - tbaMUD and the additional utilities included in the tbaMUD distribution - automatically being compiled and placed in /tbaMUD/bin. - -6) Go back to /tbaMUD, and run the MUD either directly by typing - "bin/tbaMUD", or by using the "./autorun &" script. - -7) Start a telnet program. Open a connection to your own machine "localhost" - on port 4000. You should see the MUD's login screen welcoming you. The - first person to login will be promoted to IMP. - -If you have problems, read this document again. Most of the questions received -in email or which are posted to USENET newsgroups are answered in this file, or -in other documents included in the tbaMUD distribution. If you are still -having problems and you're *sure* that your question is not answered in this -document or in one of the others files in the /tbaMUD/doc directory, try -reading the forums at http://cwg.lazuras.org/ or stop by TBA for assistance. - -It really can not be stressed enough: READ EVERYTHING. - -Authors: Jeremy Elson, David Goldstein, Tony Robbins, and George Greer. - -Rumble -The Builder Academy -builderacademy.net 9091 diff --git a/doc/act.pdf b/doc/act.pdf deleted file mode 100644 index dbf2b805e229bf4f3157fc342f7145404b9925f4..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 18331 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, TO_ROOM); +If the keywords for the door were gate wooden, then this would send the output +string of: +The gate opens quietly. +to all of the characters in the room with the exception of Ras. + +In addition to these examples, a multitude of other examples can be found +scattered throughout the tbaMUD source code. \ No newline at end of file diff --git a/doc/admin.pdf b/doc/admin.pdf deleted file mode 100644 index 280831cc4b7879cfc57883248b0619f038586ead..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 49418 zcmbrmW00lGwzgfiZQHiGT-C)c+qP}nwr$(CtGaC4?6224d!M~d>=kkLdA}L+M@Ggo zGUtycM_xJZJ141}uqZ7f9WxX&0Rw@JzBvI84-~zWk+q4VDFGuB11rIwA1HcJGfPJ! zdjfhuY%t!}I&r*HVCEwAh9h`zEssCn z=YY9TEa0ANFZ=421~aUTnmt9n-sAEw3R`!YN1Q0+#!y7!@W*7sRc&98q2nZz$6Vv6 z`amL$JZ_D>>O9F+pzHMO#L>>hO4_TvVVAjaMeX_n&fDp+y`E2l`D)6Wug?0Of>=MF z_2NN*X*Wr+9ZS_YsP)@iSSkTWPdS zS5T#I4?iI9SlGAbm~MP;pL@`HPr#SHj#+y}m8tfv#ph0+jbp%clwCWKXaFGQZdg*D#|OHvx%&gr^jCTq}cW$3h>4Vg=OHhoroA_>EG^sVL>*15L9 zn*pLFKryg1r0%RQksgVC zSrw41BVH)^@A68j(nLBwz{;?feGfa~PF4{}DuJqgbL{B@Mk)t%WRRUskG5VO--*WQ zMz5xH%P?w{NgPdfo7mG8@uxT_(UXPg(m4Efdf&?)=8y=;Yc}ze z=iEPa(80^1zRBU`Mg-Ej8kw?}IkETWGlrteS5TSZNMUM{{N%JeavaT2EZaAu+*Ka+ zTVgIo%0IOT$kGcb;4sm)o(Sx@!*8OA$^mCX9ZIY_}Ir0AcJD+~3U#S5HQYpjC7Mm~8=2G%gqcfggW$VC8Gxpq{ zt{%R@gC%K_+CV^*yqkB4LrhLR01cB3sMVUCS~?%FTiwC#M%IS^NMFBOzf&I+(_d1c zqMNM|0ll1_i4hdNkd3vYk+q`(!5=yD2NeAeBL^ENdjlf}0>=O9kTxI8{+VkHf~F%+ z@sB1mCjsLhqyEv&!uUHU|JnYXdg_6xEM^0yBV*0O?PVm3y^vhIPo1Y9A!`GhSI0-^LJ<-1o+tCVTs@SZ`+*h4z{UPI! zz=MR%pHGhwkaI!&oUs*gh(g_By|3?i>Hy)_(OrExfn<2-K#8Q>%{X5(rTC_Z^lb7l zMzrf!X{3+%z5MeDKqhN_RMK=X5-O`45B1D83sUsEwXF8;!A1<|(tVtM0#IeY6o#7+2MX@^ziWA0&fUS*+yLj$y8NL{R z5_r?l6=p(uou|CQwx@1o_k-}u=zU-XI67~%x*LD!AD{FZ|SoX69JUifva*f9h=@LGQ#9L5`8x8spc9#Cx~2QUFYH({Xm*Z-_AHHf(dw`+XZq#9bi|`?Pwv5V zEVFdKpzR`oRYiv(eHMXRlw?UTgB zEzjx+6d9jEmT~C%qJuUnML@r&JmQs5^0n_KbQjcUKy&TGRfE0#B92cvjT8$I{0g|O zQhT*F>P5Mf{WAT%kEXm`@iSP^-p#>)fLPgBh>@p8saQ;WC~ym>%=EyqH+WX|yuG|5 z)!-%cl{4|7zX8N$?b-!7`7U8xx*&?l>{ybLWHT&_Q}l-L*XIJARyvQ;P$=E;fwJ)p z-HRv0msdAcIo;(c1Oee1Yl0qny8?&Hw0*;)e0}9l%QZ)Ma;dVVJ>nx00fZ4<);??N zqW7FU4UROjgdSy+sQiChjEsM*g@3-hf4dqP|9HLs=W=BEub%(&di*2qpL6}~g8cup z3OWBW_&-)56ALT*e@a$fY8npv&8XhnI=g&9>2*rl!V(t-^<#!D2~T=mQ;z9;0wg3% z#SlpZD^A{CJq~~pYR)6fV734_0LO2*RBaKrDI1p&kJYQ&R?i(y>DSle_aWE#{2#9+ zm95{|&Mh0dJb3QLN6vKQ>)ploIHJ9^tnNpfi@4X9gwjXmb_zf9PF2SEs5IUuR$_eA zKi_W~Y$caPvY|^tEPJ*tpZjfaIlOJgOOUUf3{)VQk-2i(zZI9);b5&$Zf|NK)kL&H zc(R{Qu^Dx@25SPoyQnR?nzP5n=^4EnCmqePznOqtlDo!Db`;S3TIGrAiCp513O6lv zdP}LpO%JKrdSd$Ga3+uVew#f$y`k<>msH6ZQ2qI^QuADIzxO<+Eyd3>TX2FY(LBu# z%D->P{j){lKr(~ntuKpyzn47Vt;o_+MLmtFUGXLVzDc9A@_Fip2s%gwNE>~9>Bz9- z@r*FSWzL|gQgb^qeY&xo4&q+hm^}Eym_~g0_7l6sN1Jq(FpN*O!26=mAy?x-?P2Zd z>4T^dU*p;_UB^#Z``fwZCS^>{=3yCR!1{_;%lN&xiAXV3kLEUvHT0_=*93gPv2kfi z&8P?{+_FBHdV*DcL`P)RsYs$491P5-Huc{u$>vht0$$Ig?j?tCrf1FIc08=BD8UPU8&!%_I#j?)8g; z30Kn$Boo8h$uP#L)b2|3cxAAQ^hG};=><@x$l}f?@_alk`p%ELctdR#59due4 zj$;H>aiWeC6QlZp?!L=K?2BZUC*q*=)eC9!QC6hbFlQ9)bQ=wUTF=P7F9il_2Fys?a;R45=t4@D6yWDnL8g)Kp!7+Zj0;23xA`Re0G)MUbN;}sy|mlSCsiV4eRdC8A(MS zN%AnAGS}GZww|>i&MwYCJ#Nx;$tsEHHVxZ)#Wbg1f8;{GOC`abC2%bj?i6Qzee>X?3GwxUsanvIl+zF0 zQgnK0XZSidtMihL=?f9KeZHqYWeev({zMKLumXt2t+NX>CN&`>5|8BvKj^WDDsB2` zm`p47-FsQcbwx1jfM09h0*(t|u*l>@IDqDjR=Q>0V4B31-eBc616fp3m_xOl;bD{T zq!-EFb&1?)puMChhhE{KaJI zK-!(-lSsH5nE{G$-uRoK5zqPEClRSvTA1uk2GkamT{KX|naOR6z@Je4EBkpo>AhHuep$n9$DCL&2Ph}PG3b5f?ShZfut z&i^E?E4=w$G?WXDh<;#rh|6OCi6C4Q%*@8=Y$f-Ds!;;?q8}t={}&L(8(2c5rTls6 zMDbaD;|;_tji7`{jI0e$HU)Tvk>@x?b%j(-i5;GdLy!@Y5Y>+j?xyU)gT~d)a2PX0 zSKTvxkd;FRRkFJXR^AXJplRlD%0d}5i(Kg$3hW>{gaFQ`ad`$!imEV%fFyn93`S{6 zyv`J&$h9rL3B{x;>uy^Jib)|mYy+3|ZbbgTkpe@MdR+eI01}|5C&z-+Om}FKCQaQ! zGsNAg)jSk~9*NVXB*(&b!Q-Gj?2-oG;!vIjVbY;Bs_*$dG3{ld1aaAhNiZv(uIMVU zqlF&=8+rhuRVm8n5krywtPiD?v0FoSS_Y1Sxx|-*V#KNk?)Xo(c3sl`b28)&bj=dA zTy!0bEZ}sbr4c2~3wJJ(w18?QA>Dq-r?={6-(!lnRMr9@@IVF;wB|KNEs;CRG-%44 zh8$=K(X`&K2s7|(M;jfVIIzO1PX_$o=+jJO@NSon^OPTGI`xO?GBcQ9zn>;D-N>=4 z=4ENs@Iorr=IH%I-6OO}R^Z_mxcy4Mt8JiGJ2D_ntHgi9nMhjaqSottnT-wH} z!GEa!mfdO(_nzq=h{6yg8OGJU+>h!t=Gs|aA?RC2dpIinGWx@k&>L7KenuLDZ>55= zaq>{RItT`L*V8%Y1v=Osj-`+ysWviRU3X#{!L1o7yh2(YQm z`$sO)&bWkW-*v%?d9D>n5F~EjPCD|r{F-SY!430ikeuQyG%7E>w=e5vcit(3Ub#gq zSqp+{QEEcn`p!7{Y4|ioE~ZvH&BlWUNRldHsXJx$9JlIfsTX>#mmSDy^W7NPlnYYq zU6(T0BDQ%RpoZ$TTBcxf$3;=1=(^+RrkVm3Ic4y@7sbyxv-j@+J)15M zb?Ry$bF=Jhmo$crF*3~!zP;CaEMX9ig5*^|WgKrA0`vOi$NDJdDmhyMm|cx{l-{!k zetPUm!V);$3aH_96xh^;zLns*9nI^eJi^jM98XZ8< z!RW4EQ#*9h^Q?n%mMd%C0}GgQ{2wnbyFN#{C9D4qtbd%?{t1zP53GNX;Qs_x_W$bn zKLhI@asQm_FTnbjv*LfBCjXx<0rAVxyz3%tMAu9#6?7RKP!GM^%A!m6FJ)I!Howaxb8y>MU!Nbq7i~VF1+|fqTMik< zdd=TWk4pxOGsw(r>lWT&Y4BORP5L0489(F5QSYNOc;vE-wJo&AV7}f;aJAJSF27Bi zSagUHG#o@-vAEV54D=fi(=;`!t9pHkLRifQSQ0z$lVl>wqLvVDQQ=6!e73F`8##A* zp+)f3PCN-_VowMc;2;+mt^M3X&U{}kS2zAJH-X>BtPz0i*Nf0wl8>2WWP(%J9_KCS- z9gi1{stlg7(`$}5TWXFGzw}4fDjPHFk%Y&ZoCaQVvquhn8>+lHC!6jQ34**f?}BaW z!~QhStozI&?moG#WPP)Tfv>(S8?rL+IY{mDRkLLq;c1_5<+H+a?GP=)=M8+=1vUIF73V*T)CZiPescoD~O1<3&4txdQaS!<-Val*QQE<~+mfeSVDYpq?hNkFC^RTIHSj^aI4 z=3WW6GfG0+Vu&+`Hvy?0v-2hXwPIe?N|Sf;m_&Ja z^%j0brXu@O%=&ACw_g8gpO|H|M6649b=x`(Yy(g7c!uQR=MbN^(&lppNVcm|)aJv~ zPfz7f3NUrNwE}cbovK^N879!>U)?}iiHA;A01iqK)-JmeR9_7050sf!9F4Z-2X>Sv z@(0Z1Rh2c5?=YeIP1RCW=zwIcsylx2!Ei8|?EbQ0s9lvU5tjp9_QPh-75dsB7nNr1 z#3n;=*07LDKCGxo_drMm>3-lcw>PLtlnXLhrWR2Ui|1M-hXg%-34~20ES*1;sQsA) zl&YK*$NaM2<{G7#fCMBiBU@fgIrXcFf9x8)?Tw3YZeRQ3Q@j?RzA5bl=#WZ7xA`%h zBsQRuB+e;L&UR%*!|sN<$xJ8Fi4PI5{#Iz=hMbi%b%RycLeYN1OJ3? z`vs`#eEcf2T#GEn=Koz(9PRK&O6=$7Oa>DqA1@RB1i}4zn=YY_vk>bAhubU_dF57g z>YCeA)tB}p@~7%$EUgnZZ+_Myga9zDZv>Gk=Ar+LfIS1N1B8qyP}miYQisaMnLm0D zv^V3(mSx| z>Ll2&xRO2g!78wVcXi>lCi%Q&3OkQTbuIN^e6wWtjdcAo%~-e>PO}*%Ml=w(fXh_> z%!Tw{;lgJ*Kq6$qxUFY~Vv70d*|{g4h|txoiO&r$3g9JUpS~RC|C< z7AkHnANqL$h6SJlDwJXI3>vADb%a>e!xzM}dN)JU1qb$qLil5O;2LHkc6$rMOYkNh zLk`&kG@gZNN3Cfl`<7BLmW1YtuxjQ~@JsRfm1y0tbjKa>0jPCahd3Do=hL46FUXza z{b0^EJ&$Pw%T>k9E#g>P7I?D#AoZml?sUj(^mJ8o@sEdv=Zp|&A%(WUSGdtH&>2ak z3#NIb;-G)ZWf4-fBj^M(8kBR-^-cSUIANJg*Q^SY)sXiER26rtJ#N$U&WMM9acf7r*S=^KKAJohDyQah&mZ@fHuEzl;>yU6{nQ*3>aRo0nX67(h%_ zNz!`twXK*ru>#tvEBmdMY>Is$fIh3w^q(X|@4WW_9 zcM3fBjT`b4yVEu~u`h*0LWL6@6wEc>}{|4^ARj9h*Y%UVrU_T+Y<_!@lBoIJfn0xW#co zs43NF$MJ{Ne!E(vw5yfQA_Gr^wJ__(tq;X(4Jz-$#{zi+{L~Q#BCLDA1GHO@loW_cGW%!{|TaXJGJJ zAx)G?0_UBj)26Ru2gd5v(_cApQm9WC_losNTltB9kVFPBoVZ5_?y&FqbSDZ%dLDF# z<9i;Yk&lnETF8;xW{&%g+>3K#fm5Ftdm$=V(qS`&R?b|v%HkvGx<(RA(mc*g$SvgGA;L>{_2)+)hnkYE?+r7$fzg1l(xc#mCM2nV$|b z0_ER0mFchQ!{2i1pD_48IF;#71p-1 z7}RUP=5N(Ba&Px|OYbJ(V*3b-t|g|9wH|>7{_d`4QrFd*uI>490wPdP#C;~EGRUR% zWj48&x0Y0GA;q^>VLr9V8F5VPQ+AijRGX;wU!n&!R_F8binVoVa1efm?>hs8_x z?&Rpnon=wKILEyhp+EKRw$IVhfXP6VgfshAEushe2`mL>dRXhe<`h4xI0wvS1u<_cA;7{fY3kN?lE^PCm0K3Yjcp^@R5AK z&y*`Yl9doo1`|U{is8*$3hbw4I(D2Dg{nInv}i7W`?(IhjWIBvcFfy=9Z%y8Rj2qO zV)bDwUyt|-EUj!SiFmq}-ulk>az*9JSLe!j$)bq?BRvrel=h22WrSeQHKaH9Ogcqn zG|x}E&yq2!Nbz=QXeA5I60!d{w@(U&nBxj>z@{B zy$&}U!mG$dSosTkTw=%^B(Y#c#fo&T#$E(lI$NH z4Hwy>S?iL+U?21MlbGz$q50|>`7t_5z+u&pUx^`=?8Dx)2SWe?W~oMpC0z7||nP244IawVE{LVqX^ znLP#|hU`=?E8QzYd%K=4l22?PG+d@7EkKu5GaF$q0{RHraAmNG;c3QT;MMT%lKWk| zVX35xk%lF`wozBjSnmR>f2~bvyd8K9;20QSvpLjoBO}1Z)V`B4i!92{vf+-v(xiYI z7>2$9ip8yl^-SwwY@HN7GZD3-n$7I)tQhp%l*4ONjWuE0TPd;Ylf2kX-bkxoHkwG; zGz%=E0K5YW^pdk0Z@t_lm4ARlto-^`?n4H-bob8~aYqed4&eWU8LB$@B)Q)Jt*dgyCBiB0HT^}S zV+Nc@6ckMid|Y@Xx_Ya%?HW86E~mSAc?O_b4$-SeP9~hKH`8i(QBULD_bGE~pne@+ z`4%O6?-K9qR&}0yM1p|;Z!vFvZ=Z`Vj(To74Jr3s-l_Pq~+!N$3? z1~=-U%Rp!aVXsiEX#mmKcdJ|T*8Uv`Ykiw8c~nS)u8OBg)V8It?s^~vkT9=I*LRtc zxrEwK{kApe-n&6$%c_3SlEohKJ`@Ja;|2k%y?}FE(!e&D+~M-QE#Lk*_^>nAu0{_$6HkV3Rl@T{bq> zrvn>+!TE*-XU*qsn+o;DQW15Obo#Y97$=lkHl_5wNjw6Ds|jpMN2BC}B&gU^%#+s2 znu*_{4P3@JnT92X6vxka>GS3-O81A}RMb}X58YRJ>A2DdhK=0}xF`n@@4_AbbAkNC zHf>!ZmI)Lv^?#slu@)HrJdS%S}C7P5#gu*pS;Df6-j?K^!Q8#djKl7{gc5bVWB& zQgtT2U^`OL1N3UCiW3()w258y>m0ld8_Ghn%>uOA zq_6wh1aH6#bN#%`^@5*eSA<{s99=K)N;1I<|Gv}zRsa9{o&F#7r++ybnEtdN{6FmU zf0b+hQjz+Xr{S*>>c4jP-?j%f0_Oimg9G#5nAVtBe~|w`gI5W!3zN*{7G7|j#9YIe6ed{}g@7s#5FYpKc8ZI! z6Ml%WyAjqC^+?=Hjgs_~{Y3BC=xOyRsn4K55mDXPxc(S_f7|Y}oz19{YUsslq6S~M zG+WJi`_`i0pk#*9xh^cBi#yf0%ouj+yxb&U*rCyDC_ihF{l;<ceK zL$%4$jt%jsd%3bc<#XlJ<&hEy{h1gUG)Zdl>hM{0L8XN}CDs!5Ek_y!%p-(mqFH3f zZ(_=sXhT$zB&>uDcb1g!8r63Of9qF5Zp$VaT!2k5hcoTjVG<{^GKg+AYGvdLtrQWG za&NrwX782=1lq`&iH0AqB-?ilwkURaG@LBLiQXRj*~T54ob6grdI~)tK+MRlZQkmW zbmVUxX1BQ>e4K?B=0s)aVza9S+ZrgfScd_);6$N<$&b*`t8+*Bf+$R+Lc>AZnpST$ zrW~vDb(Nj0q|hLmiSsMW{*bx{BUNBIoQT!nsBq33mIb+hwPY6o#?||9PG7VzMn(cU z4?Psxt0>ECq?vAb7mu`aI3pp$iY(wqXOQov!NA`RK`|9r4<)#J=58z_;Ek?1OPJ(L zQ&B#K=h-1YrvdJ`1L)U*bI0%i;&~A;PS#KAP2?orw3*VS0}c7QuGT`sw`MQ zIL^3B9$EcPRi5Uem;5|4fzb#S@T#yS@jdwPB%>o&@cEHv@tdlB^b75j3dVr-An;a^ zL3WuUcjm~koS*#1bk%7)B@>`uUkJLsEZ_RL6x`lezWFG&sY5A9VBw5s`_}g{_ze0S zhS|ZZyFeJF&_xsaLyIz`5!bS96*&KVO$-o5ai8|ZO(o0*@@Axm0J(Ngo?M=pa^K>=eDJ{?m3gXv`hW}0VCm`0EVwf(7Y zXYOsOomTp|h1cTFK7ph!U99pjplT91G6;~FGg_ZvOBXBsg-itEDU=X|AGT;82N)Sg zs}p3PC^b43T}rvPZ=8}aT^7GCr8Bo1_5IkG`NXUwaTG@;s{UsHD(@Q3oK2Sd{?=n5~z+msQqg&!b5< ztZ^Oiv9t5YoQXYh?l&B@(LI3@7GlGV_R~v|Q9{$>#QU$y9of9S8z^ef=&M7y0#iX9AWMnFUzc;9Z!W zn}Emcz7F&r^ygeWBFxSGLhzFd6~1De9z^>L`P1&NU94_U3^ z6EGI_S#xyn4abn7$2qxxH{{>Vuh*e1UtZ^Gv}QcEz3;0xv{b6SHndD&sN<^OPC76N zk-XB&{A`qzMR`!zqZOg$>w_4zN&$8PrMh zw5{@lNKO=EuN|C?T7hb3kA_|qF`*DQF?O`q!C4*pbC|F&SSsr^QwkgDliw9Ioi??_r*P7P5URFKq?2)NgBjJT;+^z@b1+Ee#@@QmIC z`8zNI{P(UDpWE=GAWX$4j3 zPSyI(1^Z>u!(y4#!BP*Q)!klgzs0#s;BK6j>Qr6O#R(Ses8fN$N9BAvWC+HzR#5|$ z3Y6cRo|-{n#QdW7nl0eDd9WHuv>+9bDDCE)AUdQBUHJX2ScbIYhuCL8lu!NqRUhyz zNh;cA6ASy{eVdy2I~{r%0d&eHh3Uj5#hKM9_fzBzt#V|_DE&1*(r8*1n35Y!%R&|t zvYV@SnWt%|#o*$PAPjA-O}T5B)nTMWTch(_>qi!mAT;CRHz*DoiJx=Uu9)xI^_|^7 z?QF98YE1UqMyA^z^nuk%&KRzuI-&&Velg&Ce9M zI^KZ5IjhB8C9J~gf;CEemPy06(+@I@kSbkuyRz|9UtY_Wxwqe=rvzqPd4{}gTq!l<3rgeQDWf_g&g*TK(P(aDgnK=FE5@VIH$dA3V}QkL;bI@OLGJs=2CYcZVwF{Q1_7`m-)D#_%@`w-$Lw};#M(wRpe)+}ylZqf zYcI8lHKBJF9wlm{wg);5V}jw^u&L*0&8pr^aAsK5m`J%f)0JlJns_w%=#g5x>b#aM z8m+$&o4zrf)d02h*@TYA;X32Ylj#DVG?>@+=n-Y#rK5%9x;ijzycfF>55SuT=UaGL zrUVB*ug@vH$R!s&wC%flgp@RwWmx*YeuJO@AvKW9A-W%^Ey62M;(ukF9?yg3q<-f4 zXfJl#>h8U8j*h?L$lRY`fi;1B2rf6m5|AaokO0-aFqgO;>=N?o5)!YYnZjQ`DUt~% zBv>UW1VL3KEZoF36ozhdt@8mNw=^*SZ$!-eSDEu~iTF>X{2#S1=Kn{N@1JphQ~UZC z5&sVg{)=?`f3*4j2I#-hZhx2F{zD3`QrooIXhrmy(b;WT08$hEK%i`rz0#_-^*ey$ z1z*{-hp!*pB+XAkd*g6vwnJ0Sx!{Y0CjFze%S&4D=tg>3X;te`kXs?)h`~cUQLT6%ke-k< ziKQnTj=a(FCw=oajGVc&X417tGWmC(l;Ja^;H*QQoj44uoEzOlF=&&ib1pJg4L0}0 zcHTU#djiLYUN$i$-Oyre!kh5T=c0(~XgKLo^oe@G+>Ur= zj;W?v%zHxIhUT<%0nZ1f zzh)higTJ@2Y{6b5&7)>!JZFMAIR+SRp^Y*ljEd+iw`?<} z2d2sp#JC)SqaKc5n;cVxXoUHI*hu~e1No}6idHBFnt8JZW`nA4mR?vWbu?`#=CyG| z>LOP^jwT;v^xnvkwdf`VRY0gn-E}3CNQ9?vTV?YzELU31`+%DiLb^vdB1jycXLozL z7m}VVE~RT{-Moo3GbHMUMi(9>~cBb^aM zF$(KttyyfvsoUF>LLPzK`k|ue2S;%cBm7QKEnM%dB6#m`9>F&@`tZCc&RF|_CAI5lfu2tL#qRdDA1B3438(} z;iBZDnuJ!x1l0F=0Gt}1^u)dEecd$uuO2* zw>|HWsP(IDxAfJ|{LL^&82RR5@#jwgVvN`q0X2EN#4xE68)1U7Gz4ozIru^dY49d% zABb3rZ8smGGq*&CQdzg#s8Gc#gv9qU+~sfmBs_XthtN^n@TQ5ry;N{l@#wR%gab2; zfEL5ChpI4m0Ku7IGOh#jA!7X;Cj{ajBD!8{AM4Azg~sS;?Zk)JH_;4Ec(UUY@nB6^ z^^h^n2n4zOFnW+mCxCwMvo#dnh%PlJyvh1s^}c}>U4GnHZzaO!JP1QJIY@Rlx_~{P zM0q|KxeLvqT6WOdv7?DPx(Fd9jpC4d;9?Gz9h=%$ov^40DyH+M1X)+ z$86&8v~A7rGdOu&Y;-K^#-kR}VHCW-@Yv0Mv7Z7C7Pn zv9b=s7!;v^Ju=u-OzD<>n1CKHy`bU z0IivYSbh(~oP)N&YT)gjyG_*-5Gw4fadK<=nWU@EuH8EKYYA$OOFH*Ex55==_YLu?jj; z7@b?noil}mr|TNw5e3|iPz&^uga(H?&sb!(A9g$;DKBof^lxASW)-*;5)wk2$gHoXvDh5)GJ=_Aw;%K49bFN`4q+SDxX;jJywIVm@zM6l z-LX{`{^hj=yt(aj(HN#SVU%@6t~@IF*9>t4c}$C-uN8dtv9%(akV_iQW+o(_}>-cmv$yQVxF(RfKfY8 za{ir5|5`o$doKOA%Pzmg%|G3Q|BEL38z%pF>|eLS{*3z@F8vFDvN97e|MUJCD+>Y3 zKg+ZK?J4}LR{J06vn+qTVe?OaAv4>5tj`9is>Q62B6>g9q=x891ENXSyV3a*G&GZ^ z0X%6p*!pw8qpZb4C|J_MTRdLhE2*%GrRS~e2&t&(IN`(C0D108W1x7W4Y8YLzskpN zD~6!+^K`m;l`zq~ipXv7SY9rNy!C8p@Zx01*DT8;dW0}Xjjx~R8AfhZ=MS!@d*is8 zZJcZOXp)Ap-$ciUnCmzvIeSQQdb2G|C}Fr-O;Eqvqk?XwD5bjI9n`UBDB~a0kK;s3 zuRC&YeHEWpD6_GxM^Gp9oK~udhv&0Ne?g%-M$DJb_@*V zZ8!|t=G*v{K}d)_+vTN4hTOp|Z6Evnz`BY%m<!}TZnXp7 z12(4P=$5bVMCRFOVkYS^r8piGK`Ih#QeRUQ?>Trnr&8Ph7zN?oh#f-o1(>HEm8Ve8RCf0$&8#MsDX0HNnHSWv9`Wf5>R!vLk&gIdJ z!{Ogr#bm3=DAf*UNKqFLbQe2|Fj3p=`uWo+!YE0akY>xJZs-(^0rRd1-}B%>?SYhx z%;@w@oJMcc7Yc|x_>Ad{r>w=KiM9bX@vV*Z->!FyWx>52SF`0x!Tdw7Wo@dGgdD_28iMR~q=dOa~U zqZE=+Ihr_PE6)B9xO$^yHEQRL@rAaw))7Zd4#6U?}5EB9H+ z#0|c5Xq;eB^Ic?8NOs41iy@!`{cZ$0+e5n|sqn-n6|t(nR+hMAy2_VzzO>gu;1w=2 zyr0?mT$AtxQGuimNIqyJ5}$$Pi*_g#=wnH-3>K6w6}b<#F1gRj3C}BBx01ls>gE;V z_9Ga?0(;_yWW?~-G(+qzz`uR)@RX7?OSr@I95@h!^vyR{#W1k$RlAMst!X$}tTi8Z_|_L(;N+1=5 zUO2Kb0Vy+kvwW8Ir=uIgf#KlKk;&$82_O*@OBrOOn0-pA7fJ#g z#u&*nZ&Bim@FBII#%AwmlGB9}U61JKh@mMyBn$5h&fI;3S&LA%gcz$xqV~fR{$jko z1=UbHs#pY#*4f(Z_WCvb%k`JuHvqG}k+Azg6=;$vX?y>k$9^N*_$xn`+ z?%Su&Pkw9kt4SgJ{J1XZ5ES`k^yZL8iJ~DiV_?0ZHh)NcDI&IS{3yhp&mq-hbmXB_ z_7!QBuh9&0-ijO=6y&RKjVK+xaqZ!|D>bsCaDX6!o?!{W^j@Z?0PV&*+Mp*uHy znw%rwl(ys{llBBGe%F}SIm8z*>a~z!`xWeh>uv%92l_NUgN8KUkt4|>H~PpjnL#Z% zW<{UWP7!=WJJ-^?f|E3U3KXGS2q z?)k*#=-wvCsoPUaEH(OMISx`Kj!?zKx^|RVwtbUtW-3PfnYU9Ht81r{%>C*6bA=`u zG=E_uMsNhfNeDul;_(%bk)+XM5y&o5Io<(a(OqcQ^5(J-UeVX3jUa22SFbmKtTXojNKjU{b!h&{LZS4nEeqvBL_Z zrC=!Sbf5K#xc2zfp*Fy%ng@rCu*tCm*I)CCZyC6FYX>Uaolc>;X`s7GuWsDnFiNgf z%~x=yU-Sio#1N*#-&!<+)qEX?Rbc@H-L_MID#L8>Alh5PJ@rV$x<3;aP%V7BO-KW? z@ci)aoKOeZX*4A-s?1guXzj+yZt<9&ef$P8{44awjO|R$^dVng)!Le4D)sfLw;AFK z`|P~}%AwBJy!_`(+2h`D=|}R4a-WE8yd4X z-z0X|etymivJr^9GM7Rm@~QfXTIbhNC+>b*Vz8aVA7o>4c*R4SI?_wtW!Rw~H1?=~ zCgV<0mSSgj&wxrN8{ug4Fb0j2h@haq_yEE=3$Mr|B^-d(*ivP374bKi6yPtA9uZMn z@`x+>X_~L(WH=J&;CTv|T_1v!Fg(6L{17Wa`E}~nPWGIv++wMRAPa*;M{6k$c=Dg$WjJ65zY6xLxS4pT5`!?$ z##*0u_8mn1)WQ;>KpHq^z&qZ$;%GZFtI`2+6fYixf?>y)N(5P7V#aKDs3QdZ7r2f* ztJ}Y^Cd*$%^S@=yKVj{E)IeGO{MUj1)fMn>todi$->~MtYM}qBb^dk&{I3Z5pRwlO zcmbK1IR0bSOj1=#*l0%dUa47~kKj}y6239cluYs*wHq&AU4A1pI`2PWJ<@(CCgpM`D8EZ%8UIyQMU1Ho=lD494rZZT7K|P0u z_O6gTR(s??PM$Ng5h#JQK$$0_m>d_m)>qF0ZOn{!DL2zfExj9^a0;(8AchLAj5$ zi|)SYPk;5468!FmYyQm;g*3A8mhdg2N{)2%q9LCT=djrhbKnqo&`cHQ-NT?cT=pw? zWfdTAS0ygZ_B~?3LSZ_OI|tlsTUyMgqiOf-=0@`Ru;of))X+uTEXM2#@cIt!b0j(& zEq0j)#!9cJ3stogIvTfUG7%;4LzMcGGl4z#6){_3Fq9TVk}89fD@#g8tTfU&upO0V zCGeu2`lKi=qsy7%N2*~nFE^hYD!TaVIE%JndKr)8C&2>|*d8s+`QV;KEJ98nz9o8I zjdKb)m4#v%loIMw*XhypH+MXnN~uR~6j@#HWK zqnMh@h8MHjdnd#OBkkrtxTluk8+N-JWhqEs@Tu$(rVN>&+cH7<5$sGrs>&5gC_SvF zy_?UKim9jf=$oX0QFIB3o+2o*-3Kcw)bwsH) zV1&<(#YpnPBqKarf6WwtB4Z%>ar7Iuh)Py9G zsxZxh*jsD$JJbq-A?%lSb$N5Al3Gp(YJGKpCo>ZaSM+Vk>kwW%31%O{<_Jo}&z}nh zHgujSudOlC9#RReCd;3JBkdWOCmam?IWoqGh#FSxums@ND6N6w(2M&CdZTSu(X=>e zhWTrF!kUjy!x5~j8i%dYBvS2^WEb(8E!8%%bg?5w2XR}J97sWyDpEe3pC?O*_AOEf zV2bAxr+MjuvtUBg&1k8D`W@{)T@>yqXh|$Wa{2BsbvsPltz?bAq+nT8Rk2n->k`i# zJrnYt1K${*aU8+w=$u~#AJ>XB<;{$ElMgUb?u(fUy_`;j>2M0mZ<#R12lEG_zn7THSwD7Q@%Xuqc!0A_Pd}it?4#|jkBbGVs*u}JJN1PoEwAOX ziX#=X^urv+8%Kz*!e`^uDSC@@2*F;v7;hO-2RcnL!9s~T=8Qhv5)-It)j~-<$F|9@ z!7@V+22m|YLGnjhxviDqILI?0ge_=!nlslc4Tg#}MT@<5vCxoO>*qqMq>_Ie^v~VT zc59h^A)6u-j$<}tvUDFImdgxXm}Rh8uo5RXgE|RP>Y3re55@@IHRKW;$;1O+2>Us z>WWhuRh~rB7gC;ep@`GhP)i32sTR}rvC#196obV?M4X zX;30s2k+Op>DbbebElV|rev#{LjTJtK0X<$TwL#T+q95!IBbB7V-?d>P=B1ZE1NRc z-Rx)D5E}u5U(_~k9rI2C$Mef8D;ZGfiOii~uCtQ9p~y@Vh*hfQ;o}t%aC#~S(%6oK_snPoVVpeHi|AwuriTj$CN&<7@5TYa&yCh9HS~Br&=Okg5FmS|Fle9AdCDlN z@_3*PH?DlG(A!k(JDyuyAeS~wxTg;}8eHv#yWWOrJ; z)1}IKyqlEV-N0qJ?IsQ?LW#35YS?@UAMO!JDzPC=E;=e6qcF~>tHX@V1rEUxvd`7f z=-5qNJ*G_tbV89r?gY35(V{qUrGShBuX9!bFRc@xL9Iu?ZtKr)P!LmKj6{7f3iv*b z=W*Kgd1ZgTf*$>XteEBu-{(&S<(RP|IQ$Y`cU9;Q$hfJOz8F3`8=3;`86FTJ*co8> z79i`G&fjCf0bGTIUgUJ2aOKMse53a;qkJbZXrB>M^JmZY?OtHUnF;s-RV6hr73^NV z!Yz?EPxh!}jC4@qdIqLNFReNr#UuVo7I?5=eTWpR+IFeGIi^zN?(Rrx-8J-(2v6bN zO%8^Vt~sNI>>|e69%iu6#&=-};v>`~vGvKP{QdcB@^__$tk)2#P2j6rR=A;DQ#7w> z77;uQWZxfha;_DFrYT+g@GMKd_9~Nm+6}T(7oZhVWhSJ-vYBNcV+kzoC4mYi%dcv6 zD&{!Wqo@PE+1Tqnb5!6DA!Eu`bxKkb3l7mdD?8|$h(Jqtxx`o^L+lcG)LmY=f$TSS zM;Jiw*PN5K29Y4fF}9dZP9?z&=3jQ~d@!*b7nZutvPOTX*lF%2JV8A6!&8?dS zTKc@c#^gYdz=Mi^j-0b5G z)rF9L44eS??*ke3X2-TV&z@PNs*ag9g`{d+GHjk7r}A&=_Wt(^F-H}Pvg~gpj+asX zoE=7QS0D0qSo9cO3Z4b@0L0aFTX(LT?C%ZiFDs8nwrE^d9k9Q9UtAeR%6A`Z;{88q zCJiff&Aq&+vnVtzVE`5y>!-6Xwr8QS;8rH6hx19%^ zRvE}>BAsa0!^)fZ6-JT_`x*Lg8oCXbB)&U8+mU{UQ1Y`{7fjESH}%WpG|dwvZRX(* zCtomt`C&q${93*`SD?eE5I-L=+`#5Q?^l*XFxO-fOz8k8*KO*mj@@LN94>2EK0VFj zLH8Xs&ca*EXyKN2ucz}Oo{}J8rx$w#qE(qWC@EaT#OAGHn@aPB*n&ZK*}Ui)L;9Cj zqf=ACfpZK+Qy{^s4;blz=0Nfs97)o-EPMllzl}$o0{pL@)|#40LhAz$D~eTX=PTJ!1oxjMn;QB zyTGqnP9;!#>~hC4ANEv*>hS?BmQw0l5<|~#UY*vn6eiyR#vv`ar*h42yJ2*mkaDw5 zn4f0IUA#$hn!hr{(zTferlmnsAU;!Ax0n4O6M45o7WmW9jl_?+_J&psAk3ysCG3LX zD2U*GfSf6a^vV>XiT^qtbkh*plmo>d&W~NDz9&{HwSIFPGT~AYJdPOSBbu2;)H%Xj z!+D2^fm*q(snBW~yz4zXPh=pR3Gm0g;Sl?M4LT#nm)Ne!j?zXACH znO@PG6JkFMdXkfs2m7}BT&zjvTV8jLsNz4&6R-N!O3^`FX$wo#LB%V3<&{j9N&s~ifZC)5C z8j6;*)b#ePVTJ~XNF3Uy75|OZm&CAhm8`&t4mW!_`bL9D@?L)Z&))C6W>pUEDXlm5DG(UfmY_Ej5S$l&JlQ>fbL zBk^qkW>@EFN)(1pr|1PCx!!rP3`pxf*EOw0JTOnIUz&#`_V_kaD zI4IPWyh9eJ-eDJpgAl)hU@<)wxSi}+t9Wa#B%i;$vRl|n`5Fbjf|~|ywA%Pg58t(b z5?nMwgNk`*+fGfRy(#aKTHvfMAY>!PO&6nD<4-~5#bKY7u1w_T+nX@&2M4lEpP+r_ zFN@)Xqbjt(fi?|v^yE4t!26T^09h&5Kh{RI&>lF&eO9qwnA+9Q)Id#+~^ zy_PufX83BS$gJv={s-SOt1KMtwZ24)j~^61x@=_(eN}IhUd&mabI#pI^MK zHKDUj+j$Ysh^Z+L&O-1E4AlTG05h^3r?v29KomCF3JS9aKs4%ISYK#I9bHXZ-QQRy z&^q)UX=|BLMMu09?*SPZ;}n3LZ~;@e^78&Xfq(U~cO%Yt8-v2d#(@zm7<&(v&z`ht21JE-?G}Os`d7=S9MJHwJE0lGE zSEGLd83+-Zd>%=$)`fWugw4>!0wDxfX>FUG-JKr^gB7-}V;EL2f(h9~-75kDou%B^ z_9waTC=0?^#eskR{M^a&_j{lCW85=EizZh&1SejCtCigVOZ`deK7r(AaRjYa(mUf<<&=qWco@8A-7H{D)zf_Vp-n zBmzoj9@hX{7N5mS-UkT8BIbPLH$?-u93sT=1k>o-)y^B!$_A=d=k5*7O>(*{vWXUG z!j_mtX0=UUvC(VW5bL4_kh;_kgvB%!sco3-nnOrjsbvAn*{;?(!E(?q zeN|wY+iOPJ0oVn8Cx9mKsSOUK~$l0Y-&rj1hwaW;RLLMySnfWI#-c@L> zld^&$g0nI&+63T}2}G2*AtEC4!$l8!F@B)Bl)Aq7)<_pv_Wp*A30`ERA)^#9N~Cj^ z21sd)00X^_CZ8qZrE%aG`QU@u3+oG4WVEBQjAr<_nw&-yJY(Encn0jap|I`C& z;nk|D4jof6socL!4O4j=$7c9(Z#yJI!N*oBVJ^N`VcRp_;$tJ?Xn)qKN_@RwRF&`)h?2qLI{42xh1}MftZI-awX31BAIB|Jpg!-V z{s(4z3`5r6QSh&`h5v|x|6#2ETPFOEY5YHs3I95s^A{BSiyruo*7G09kd^R{S^dZ0 z{&zKD*1z)Y|F)soIR9%B^}jC+{ls3c`BNC;)pvZPVyaUUIo(XlUnN~ZlT~)CV0HET($RMWv>V04xx{jJ>eIgN6@x~kQk7lac(@OfiVy~q`BW-YL% zh~iisn1%)a_u?-zNj9BoV_h%;G4hVu5Rtv^OgRI0`YjTCRvqVXoxn1}53M00YOoXr z_#*C=+UE7X3K4J$4nP6r^Yh($yrVtbIqMw{=%odh-f;`%@BZH7XK$Ozq?7Mgj>R+H z-@CHb!gktE6Gk2f2fdWX23xN-n%3z(<)r+bVM9;0yWJr}RO(o1QXsh3U1^bIP-w1M zb?Mbsg%2Wv^OGoo zTi~m5^lFsQZo^d2k*Vhm7)U^Eh=6!%RM1o?@ar(lZQS*I0^X#y$tSVGVie5;ec#2B$3k&S8>n; zjQLe*Y4TvfjX@DH@8$MW#BfubaVrNK5izKC4aG-sEMB{h4qN4z!dx`$K@&8li=Das z`Q$gRZ}QH8ca68a_GZUNqK-8~%`MYK^tK+cLq`lMxb!J?B!a>T5NP?08n*W+;5@Qg zXkls!RA8B_umeZRNWO$N!=JjX_%yazWf#q6-}hw|Co^o?PJxq*tT?{a`j4m&15R0l3u!k(ncDz7U@Q#0e+#| zzjGH~h#?hd+78skV!{D?)(F1mG*Q5KRsL=$CVDgr%>YjNj9=;3^e~u4z)29)q(Ca z4%s1{>>-7f`R^}aK;On>Nf1No1DTTAEA%{tuiEkIGJ#_?zySmZy%MhV`Cdfh5!x6M z2u0wSF7C0X=34vD9R{yqA`rD_u&2vEQJ1e({dadGLZedn;b97gGYY&T=$LL7leB@O z=}p>G*Rbchgg?B zLzybiv^EC~HcBl3y$Ml@`Crbel_Ja@-Af;EkqNAD!YdDb!?1C8<$Vys&q;|x(iir^ zt&wrmQ&OYDQ?TD4?H*QHEc>hg;|xz_i-fCA@z-rOz4pkB z>0N|6k~xZN8^Vt}J{B?yR zwE|XQCZ$cm98L56I|-w59syVJssP}SiAlW185Vw(qhofFUmb?-J2!uy(Kb_ z3oYHuiyseSevF+5_>;}cydMwtO>#2GW$#4ZeJd4a6or3#(<8Y0P&oEmQqy@`C+0rD z$w8GhsmBo5d3JFH%?Uu9B`^ulPWLG11Yv^@3EsfNx~=;}7U)!WM`cQAUlei!b{8qx8GF)Nc>bY zEPwmhA6I%6>jaa{%=Z_r{&|5ekRj>_-%Rx8P!A}TD&eDx0Q7elmXt#zdxzHhpoi6k zc#3C1VQ1~(i>6~^iXxAw2)EPMjGkYiz?@^MN38aJpqQ1OXEl$O5i^btz@YAYATn1I zqlP7iC{VuX=lax7A_TJDCc>l~D)F!*3?Kqw?oi~VP^ZoO$ zjMRJMZY|-s)?;Jk2^Mn2dof6vzZ9)=pUMz)3zr0TKs3D4DCX$WOkOCl`sI_Fxq4j= zZ|G$r#@D`+Fy-HO{>!L zEhV2UJ}&f<#$Bd%FoDlolMi+PItnWzRD1P-8vg9wn)2Jnm|E=KyL`gb;m{($HE z=uo0(5<4{MZmnfax+Bw1eNdnCa)dBNUKP2T0p`Zii1ll8y(zBgDRiu~}# z51R}4+C*UUwuA~9BIz1K)<31dK|g(+(ZZP_7YX%sDJVS$MMy(;lwQ*8bYJ%aIGVW7 zgqrK!$ADsYA-(ygHn`-Dvk6uV>YN+u*awg)SDXchV~{Ca@lx`Ov1oxxjA0e-{dc0= zvoOCv-!Vd^|HkR8f0a@HnbZFk9sQH({2xU}|MT2G*!h3q^#3<;QP#iy`S|}io#9_| zdXC0M++H)X|5i`GCl~gLDy3rHiSjz>5O~{Tq|F?NB)&;Rb4rq^c(L8y=R*$t_-!@4 z04RSt0O5P~&ZNCrvJKjMqO9tOsjh8gMf5`FT2txw9v*(5mufoph)8Qy``o9&m){>) zz6(tw7s^^`iofK4Jh-)QH-*Q>7<&!)PkZRqd6ReAprWr@9(%kdDV-Pq?(RuYz3Dr< z_-`Zmage?F4>sNnJzlIk&IuDs38Vk(wU4Imk%r7WHK}tDYWGx;daCP@$oZn4fuBsL8;Up*BpD? zolmj1s;7$;-*&m!4*)L1^U$S-z*ALZ*~wr;AX}zw=76gu2)nfjJDeBu4VH{Tcv*&v z*mBL=etJrA5b4;VsH;iyyMO(i3vZ&hdL7m6u_InfAr-f5$+d(?a05b%!VU&CPFB(m z>#|!{lMa&Fi&nqk%a=2s@nR)R8?RMbZ?sSxYn-%o9Th1Z)M8IOShx^5h8(fuLE98SlUXW}e{alFg7%OMrKQd2KnZV+9ONF_`EZC zt|2;&-Dw9C|^&AmdJW?2MbmY`g{BPtf#+3E0aFvDtps zA(tERHa*uAdW0cOFm)~(nV%exv@u;*Es~3HAO5D=S2@^^{_VkGdJg=+!Et~Cv~+>= zoYfi7IM8O-;VfuEF%7-gn4Z89(x5eKc7?Lu5L02DD^VFB#d%OFU3;DQB}meeUAxuX z_zgi>j}{rSIsV>Db;nv&E*qjur0$>8t8&-;c{e@r&p;p^H&9GBz{+h{i9=E0n0?6G z!lXdSIt(cZi`E8_Kz_1*um&Clzk`H4vPOX-NK8t-Ez8d~8eWU3NJkj5N0#<~wIK>K z!S<1=j z3gF<(>b=JIB@prqyb8vi0t=BA@S)RRtQZfGj2hw&>FWcbZLgh;>Vpd>H(ZCoP9QAF zH!60%L0?U36%#Nv`4tbYEcW2MuT01dJ7s$A>BGAW6Z#Q&6Oa++ri@6uG2g_3#{dp=Bq#uXq6v4Wu4vI*tfp0S za>+x?^AzG&+?w9^r2u~mS2K507CPufTr1bVPO=)f5CgfBx_IHihRu$sM;xNei|0bx zsiFbZYKp%7lRvNb(E8vzRIPHJwX=I($a zx<*&zl+;87DH%v+Dh(;UApbxsO-y4#u#^%R-rAh1B;+n9=s2))l&W+Ek%TfyF+il# zF~tWTzHu~waxSbN&gSHJn;1mG_ah!qN6EX`PX^Y9V#)zqFRJsq2lOX042H0MhKm(~ zFO3EaP4F>Bbj+z<`u4j_e)Ct5wLiQ&`jw!Y8J~=i5ZQ3xUKUX}9JzhmkB?rK{$y^3 z2I^Gg{?-eb(^k1Vc$;YSCWO&&RSP9$(GY)Ne$;?!S29wW%iula3?xWzn%_w$^6!(| zZg9A*cA}p_9CUO==>()}*?9x*KpMuy8ZLRAN)TFc53}>H`OyT#2Nq6rU z*ASNFL{UriH-9q_1_;xH9 zl+r0^W2SYx%$f-xKz)$Ms|Uz5JY=2!k_}>K0!1}KV+7)Xx zaj*Htx5wzwvaAAmN|`tbQvLj#JZYl*L8eW~u>vk39t=^E0SsI7?coF#jkSo1w{C93 zg5@=Aw*$)WMi*c|V1c`38)^Gz&0TlN@A>j%fIV;FLKhHfs3;2reiVqO zc1Ai8d}9F+4py6XLu_4vC@s3g@@+;1g{0v=?trc+s?jsUNB*@E>}}AFeWmV+&!I;} zKe!B+p;c)eD3^o1V^b+udr8PNH9;K<()BvCpuY`s#sPnqZFlROSnS^nFGbrDc+tpCGZ#~%~9{k_Kz_Lli@^+ZZmE(9By&tl=? zLc#J$jTkENjJ|1FN~wdOX+bx1(i1H`wx<&}V4N+cMyyflcH94$rtj%e#}mKfs8$2N zJcjG6FVtnz3-`zBqg_s_VREUwr$&L!^>OtDo?bu}V@V`|}mWIpyKG?dwt05Y45K;fE-MjC#Y}0VOIhrI2gEGzm zVuN^21(|QTdKtJ^Fall=qMR=FvoTVOPz1knCZDZ-8Kyv1EbUm~fk&S6SfsJsRGac5}8bR_uSr8HZ6qvk~T*An`%G5q?zBIh0lR+pPaC zK`AYWe5zm8t3@tfC>0zzPYv7xUR^@*g!k1)ek@05Fo6Emaxht}A*+I94}B?=hg@A* zgGe`;Si7`Y+?}X^mw7q{l|Z1Q$e=~4&;Tdnd9+hp^-jy(jSCOT2r6YX-Gq zO+o|@e`^Z*n!Z#=O=1Nt@YJg2{2~Ln(WrA@#JQ8BcNGyXmM=CkUvw)zI>!Lb|5*-F zZSjgEPz~cqFUo@EC@_{5R>*`Qx8hy1v@g2ovWzmN&z!mSX2;g=SehKs;tDD*GpVOo1sb&j$}^&4niCm33=8P_K^wpvre-Y?eMn4XIbHP&!d z^{BmKi|&sorKp+h*W`7-RZow65%=^QtF>@n%VU5iyG6Le@25K^rgzoAMK1l6cX%g9 zV^5zPXGt8`mCe^RtxW^-!x6h%nh?yR-8abY{qd6|i`lL;+mV2=q;b1G$u`~6UO5vq zCkfgoh;O}r&f<1T?ex%WkLFu`vd?O@1n~v3si`_ZRHh>ThI?3%gG52O5tLXQ#ejM} zG5~J|NkE1@np21y6*>mTJgF!)f1S5NRuNd+jTo%R7+p94IJhe&mLu*R4XnNE%!syk z5v0Lm6=a;@o3tgc70v~ND?68{T5o(dOjaet!U9i{5Q(U|qo5;Cl1=(Nt(5E@miS@F zRX&oh)-*#y#1Rsp5}#YFyq&FRhmo7gGZF0GaJEY#r~~|}CDihYa6LGnZ35aAC9zl@ z>2Wixua(=@)1Mc(t3nV&q?1?o`$V+rkuG!b^C}SbAvHcD;ka$2^pPOG^^u^CkPn;j zDend1$O^4vClGoBepbQM^I=Qy zdjq&+tFJa9=uTs>@!m`-yxS^E922c=5BpK2xI1`*Dnm0OP-8qYNj{n)wV-?vrme!^ z5Cq4eTVHn>$UI_55#xkFv&!cVW>`Olw3xC$a~%MVK;4|>nGjX8QyFm?kSv53BKuEf zWjMYAQDH`Ot4_g@sE@E9=zP>j4qC8?d~1}K94hh4m3=2$1H=Q7D&=7}{{EjNpcQuI zut+j;S@@5X9^ z;?+OI#?}OPJX@r`A=C?@*MBH^@ zUT?GeTnmZuTpn%QQJyl``N;|27nEO^i_%B^^i6J574_uSMkKwY`A zr0rN8lc2OQ5ZlZ6q-|1F|4`HKVY_k#(K|1e#e-Oy@E25{MC!TwlCE8Y_ay4PiS9(^ z`Kl}W#B0f|+&f~gI;k+L_z3Z0+PhiWVvTRDL>tZ&Q4O zM;^;&SU=|RDw%LMP+E%k1<86Z>H0S|V*780!~X*v|5qa5&jp!(!$xfX@$mmrQvc6$ z|DZJfA2#}vKKQSJ@V}PP|5_sYcbxQ3i2!EKe|?=X221yUO^EXL^!rA_4MvilHu_rC zwh=>uL7F__BXohJkgb`iqv%GAn_c~K@1~rvw%5k03u7K2GUw1Y>5SOMv>&IYt#C?8 z6HPZc_;IrJad5LSLZJFHVy|wzVQMdsgJ8V}QnReNgCnwVdx67lkEw32>0@M1zE{s? zm$Irba@Cz0eu1Yzl7A{`{W6gW@id}`-VGmlJZP(s5}Wsh1J)pHETbS{&ZWWm7gOgi zo*7Mi_hr5an;kcb3(1j)j445lXXndPOx{Qv^*B2%lMzh^p3I%mJA*74PK_Bm?=Im` z#UYJQ3%uFc9E0ia)*FQ>cA{kMz;*L6V($mKp!qG57(N3r$9?qxZv&;NJhQ4&)ZnIX z&(ol`A8(rMaxKwWa*fvCq`dKYhSwQkPVE|^HzxY!hE3*D!YoCp6FnOx*kF3^nK(C? zqkkY+D(Qr(CfW-qVFfDhO!9*wa!k?(zf8}b%b5R$Ma*nJvzP$-O46l@QLj-cG1MX7 z^{Zjqz;lhI)2`&`8cAY!!u>l6A=Fa0yfQr zvqm~QRzCmU-;#}vv{Myg6&#$?6*N?Tjj`QD5H}NJ9GfkBo|lr`>i^J2`_%r-RL9O3Wwlj zb;?TSeUCXW%WE)_i}FBFEopG!i0G)+wrDK!m>Cd_{9&TvX7t=l>sM!Mwy54bwp_H{ z0WzVEIW80Y^`h{E$qE%VoG5*Qq{2kxh&YKY~j@td*vr zjPZ`e6jVn8l9?w)K3E;7{M$^?#xL)A%7|b!?mT%z5xMj_ z#gT$btTWw2tdP4g2`TC0WLI|}d*%3V_=kss$F4pyOgS>a0xdBl61>;yJy17rS|`h} z8xs(|vs=TM*bhA>);IXPtVOHz_)QLtYML0o9n(*D8BFT|Zko4-X-+Eww?BYYYD>%c ztcINn=zI$x#FzjE=c1G(2BjWh=mlX}=;|ZjAv1{4)t;2y5K#B5$joD#bq&tr=u2wN z*2l$B#M>)0;~lP&ss-b)SFUeY?!Qq?j>a21OCJflXkanosQ*lWxqYQpy{FJ#;M`YH zC+zA%0McC%!J}N`yNwvd6<=p*d`3Y6a`|2*4@~FF&c-5HTOqZSseX<@;LD?^sRA&h zbg`2sc6qy^6wpg3T`RIEc*Ck~FU#`G4Kqvnq1R~8A;rrCi*hJ<{K2h)+4CQ_;D(@$ z9)(^U@y8gLMA!$e(&Y914UX?-h30xSP*!_E>OE&?H&BAAeTW~}aF#l`f=%z%1d-?VNCdCXLTeQ77|!v#)sZxJWaBfR@At1v3My-hhZ zCP_AeZtYROy|t5^^I@-);xz$PO3c&{`%*ziuIrn7QJceL#STxWBbe&Irs2b9!y;;s zj0E=~bbykvi9@SMruL>%#c)_topPDDDa)(Cr(DG^mB1=UcL4o)3qJTU!G$d_m*=k% zy>!$mD&GU-qoI_IM7CF37ijoKdyhx9Jnyg121;x7`L7KWZ>&IEfneCCvqTmRLZKJ< zg>?w9x>;m8;I!`bTNpK9Y6*ElGoQF)UMigm<`b(5lsXv)GvdXjNS*vh;rWPx#!h8q zJoz#XNhf84)365{NQhBb@0BZm8Z>e5q*?&8l)#G^(Lnf#<;H+5821NqPghIX@&ZnR zeh_!>l9ov|+|R}ifY!y2?gG&j28tRW{(y4fznLs~ldf3G&6p1$VFrgGy!UVwC*wM3 zPrcTaesMNavHmFm(by}*Tnle5j9&r59_a(amt9}H)B#@<6r{3O3YUpmF-b{q%x96X z`Kwx?9vKU8z=M@@EhYU+q&1R#gac{1W&D2&^%P_+1Q@=h=C|k<`K2~wjh~oF zA)qiA5g)XqL)>NbD7C5rK{AgT%cts!NRWX{LubO@A`L2~!|Amj*xPG6BO#Em=pUgc z->6mi%^!D zhDPudq@s|Zz2xv_nHibi4YwEx2`o zFI{%I2`R`LUHnz)-HD#^J)uV+F=Z=0DFsZoeRg!~mAXv8gHaIa>fHe<49A?%V~QN# zi2z=Q_lRF0133P}N~)`6kqI~r5bRG_A=Enj+lA#hc}@V*+WU@stm>Wl&-L##VAIt* z;2}F$%158c_ggamTIyQ0lMg&6mCS?BF0gAjQK? z|Hj+MGXv@OYc-W_fTJ?{0I?d_YighV&HEW0Eq~rjsy(=eYonjwj`eTTgA*%A)O%;? zBM)yQuK@1ItNAe#JRs%-TxR#{dds$PxdxD!@q}4?EivJqq`<1hsyBRW#zyQ(ynir#S)K5 zX#auEWl;=WrPIyF{{@|6*7nZ-389X@8HCE6;jjg-jmZuF-(tV9X_9qd{?*M zqyU!*RaM#GIkz|wev8}oHQ#t1IHaR1+#Ztw+85nMFgw)_xyxri#1(!RZQK)lEC0Z? zt*(z9=@C=>ZLMeWAZFU|NDktAaKv#I8vM>B6g_oq=Z(w=`v9%YN?Z zvG%*X*G|O%X=T&)^W{1%i(55RHG6;^x-q)->|u_`*%FX##qBoblg9!hw`}7G95)Pl z136ot3jW;-RlLtX9=THvhQgBfT1Q!4t_9BC)Yn*R3Q6MDEvfoROmL&Q9iH7?QU&aZ z+rLc4@A;s5w(cjlMJtOF8Y8`>=%kAWzbaUq?iMpkTlr-K9@hCozAdkn=HPi5&oRIl zM?;DoqV;g5)-ju9cs$jOD;Fqf+WBR5*R~}MyY`T|kW+EMy2mrGBBg{(5gWsk_EBtP zu8`R|`c5ImZ^|jcZkv8|foaiQyUiAojS=UqX{<3|$Tf}BQlsP~V-crPkkVs_$xt?> zeiRSsFoemtBdEaJsfdqB<`Bku2g}&>t8*rX_Jp`Y63Ku+iOu5nJMkQcK8JKu!AZ=!%K_D59QiVx4$++3EYx3k9 z&U@3AHO+qMA)z$DUtfWV!&F1C$`Jf={Q?~?*!wVmV}VhDHWy> z?JqxUS27P_m_0FmI3zin6&j2f1s#)CME6zzd4ip>f|8t8XNW;yss<$rL&tf7%ccGn zs6s3{ZDS>~6hyAyG!l@USK5W!T}_`eK#p?~wOKgxGKilp;Y5Q;I6b4V?Xs|#>Xo*_ zuR#GLY5qB&@RP6aw5U&&FM3y}^6XL3{cWHX=JhDk8sTR(t^!x6+oZJSVkp=CoMaYi zIqddGupy8VHt2qZg9~qyUsxygP_YSloT)2NKJjOeuWZqwN#h#)EfyBYT@)`xLkpvL z+Xx0N$e)onUX>^{x{V&egb`72Ckrkqc2R5~Oo6uqib=a-X4q7cLOCQ}RcP#>?>21= z{xzi8iDih+XJ>q42|s~0Vt+N|ybWWySKty!y+Ftd;uY|WXZyZ$%@tt}2cQ3je!0 zyOWZoW|@xeFGA-D_@PJ*OTXytMy>!vhc!kq0n@0hFBOm0iG&3=^Jtbo8N(4-)8j5z zR=>EEc&!2fjhoaL3SF(yeS^+w8l8y2Th}Mjck$CCCuGTH^?@bRcmsa#Df%E4nl6?2 zNwv|_NKuXwDpuA!ORtXRsIS0;Rz}T*4eecrfW)f$nDwBMaI_&}w@&3$h7B;+sF6yN z9o`L)mk5)aT^lrLIIe;S@8`JP*}0(De7ISFsQ853e8Jw)=ewO8n0eC2`Zy?^dGhx* zIRBM*_4PVU?=fHmIrWNjxa@j%gPe5to_fDJm6!fbV4Un4=C5w zo5vKp5M>y1Ap=d{N#cjMfWFj^eW+2M7q+Z5sp^;?iQ$BVVq1G?mqrevrewpFHx$ z#{|;yh6#RJl|p~)v77EATKlWX!`4mh$oJ>)ufVwsZvTzs{E2QzWHK_e!FEo#T~=C- zI>>H}>?8`9=dfmN9)M4_Q_RAG zg+iz>$>r;`YS}z6ZpgZccKhkyt#!CLm+nrIwXlG2x&T-MM)>e*%I5@X4bA`{rEeRy zqUES!{#n^owV@TwIcXrG)<)woZdUQq?gzxZZzX;S010fVfrXG4SO9iPJk@^9Tx=Gb z&it}*%qo8HsHbg2W0zwl(Fhwj9)dotVm}EGH}yHy0aAM|kym6NFN!j%&wG6El>fu_ zz8WNDM77-qlF@b~1p?8?tEKdZZF9{R#BlU%FP8%pMd)tqoO6Pn(H$2Yl39u5Ofh5L z1}ejOD3HX9mKQ-0C?z`I4ZfcS$i0CWXG9DHY^lmY^5*+(bgKSoIQ`S>{I8XgO>I!N zGU}5s71eKcLmrSR+{49Xw~1mlwx&Oqcn3Q~Rj}9{`sAd46DL9*O5t7CsF!rzv@)-jQR9m0x zQv*37_H7_&u{B_L`WdLS5VV4ddHBSz2Eue_-*+}}pR!&Iu0v1u)f4UEvq@sClu8?u z?MXGJ_&BhPr3Enw-a4g0Xe+O$zVQ)!7<#3UDzk`vT8#%OP(}-hAOt^qGWk`CPg5As z9y6Z3DEE4uMxo;It#ib(s>>{M_<>cTuyL}uQ}YnM)4PYRX7bNJ5*uZ=5XD1$wXcy2 zaALn$`EXz8d;Pc>+W7_%eGG1-5IQ-u^X$Sz&x=)IKB$4^@XJ~yi6i>sgtG6dOK6j+ zybWQbFIFe3xX(;&jClbj>6uc6?Eh=+OW>jE-p3;esg#P|Qqv-`-I+0Ch!$IseXK*p zU@*+WES6-cNTtobCzMi_Qj$WONV1ejlonE!5|Zq{b7zp{yS(rB|DTVKnfu)HtmirB zJm);;-cu2*%+KhH);x?)RDJ2QFK7t~b)vv+{>8L~^Gl33TaFbin3pSfJ|bj$iGQrM zbfT}T(9Jhrt6j2}golVx*88mAR9>)bQQqwX!II}C!}g(+-)EF)Klfv%JiTpqJp7Zj z&S5*mohE~5;zq*@%GTQ~6Qctbx{K~~nO_w{>M_TbT@`-lrgh?|KkL0YW^~k~(D7tg zZ;4@gcf8wKLEV*)*cP7iy&^U)#cv!+`0-$W+>aYps}%Ad^{^goD<2s2vAXhG|GNB6 zwHD_3{LKx`UM)9qx`iE21w+mwhrcU#_f-e$wHtc$1V8KXFYCW#rH%>l?s{^Hlo+Ym z5Vm@(clpY!_e*Ycq6?R0<_&CLbL^F@MBIbt0(D{{4`c4^l}Iae`yD{9>h?ie%`b|) zR}=FbLAMxLA`qyS6Lr9EgkG_I@t@yv@(Us=p(UtyQ9)0dw@juF=PhU6w^TMgW6}IF4 zMNVA>Nd328DqwCvZ&4B{`eJ$Ka#Ub!dhw-H=^9#seP~--YRK({yHn*oCGm(1@xcMr z)>FAO`wPK5%->JreCWy-b0tD-Z@a11v%Y21)dBj1K>n^~T;ib@PnZ*F4CY|L~Dcl>F6_;y}{~ zspbzZpXI(tksr(HjYz9~yjH(A*<+)-_sFQ!+crcC2Jw5dhgw$rrQy_!aHAEeVt*}m zc51JalQ>9Uhrfe!+|uGwxz#wRsq%!^amF}`TpAHWa6K!c%fF~qg|$5TQvsV0Si8$+@tM$Ign4f!zt8$}+XzAZS8b(; zm&JrVR$nR>8a{ug?}KQh$=h`Os_?+(Y}zRT&;I_vGSer^wYoOu51qq5urqnFBcjcm z@!~k-gx^*5BHZuY=|Ew8Rq2LP53|uHh!)l=^k7_luqdsfRrJy!ROez+fXDex9$#== z{8C?e>xSKS(jhIB>&=OVr^}8VeR$Yt+^L-}PmmJ%B4_Kqb`|@ClfbhHJ4^56$37s;TuV1d9!rfW`($Rm|n*>gKTtR)1Vpzjadu~*iquBG)wreU*PT%KfS zWAAo@NE=pS-t|N8WI`Szl0Q3sxYo0i)aui3zPqaZq?1IuV5#|&$3IQ3Z1psb9pN|X zl)5W9f5egOpQg#VHV4T(^M7mr|wVzETnOhJ(rinu7cx<;#xD%P@OHoZtK0$<*c6 zytUDy0>}8D30es#^B$HGsJqJZdj9o6jq@Sr$}ZRJnirj37Pev~&s*NF5u102knPr* zJT*Z?iON`M)*C;q+jVTKNNkPbVVx}gWf8cS>U@byT2>=VF1jnv(^$c0we&JVIvAUw zdqf8HAYi^`+7Ubk>?#KpeqeSZ#Hwx@g z{pe&yhpkTmze(q~y7kd;aATa%IUC-lO1X0(YPDyUw&Qwg<1>i2ig~ZpkiV zfqEXRJu*%xlT(PCc`xJEUMO*Y)_VV7E|1>g%a@H(>GKrqF6mdTYj58CtNZfcu)|%s zV++NQchquM`UZ=A=xb0J-@H5JDZjj&AfMW8vGyE0IHRkBiJ=-OpDUr&pY<#;6ZX5nQ>6c4by5g~*uA)LzUS9EKmFuI~K0S8U zX~Rd8_a!%%D?9Jc?^qXNt1GcJk-+RLttczVSfe`hT*+1=TT?Q!B)9h3uLm#gH*dX* z_Sh+Y?a}kPm^P^{-;UqU^r=Pfk`7kXOCuw7v$EIt9e7TxWj`BRBIF#idD=QS{rlA?@ENSNrR#^%XoAbz)wEVYWIsm3uW4+7{j)>uN)7J-%{ZHS?}V ztD>c148uq{`;E<53M*^)wL$tjLHnd&#P^LuCIO!xzgM^|{)-uLg!hwgM735k>%Li& zd$CN-joWrksTo_Puej>gQZk(%1Qdtnv}kk}c%}wD)Va_|F0RRvy_>Tw;oE}*aa)%D zSDy>R!2>mCB~8*x!ycaxWn_gYK|1fs3)dH@Rdjk?V-oYqhYWKXMbo>#$Tuz0c2cbG zGT3e*YH`ybEnsu(%`aCjjBO~psy5suYEtX<3|%Pjsvwwp=x$>3ZX2(HU(1M=E5-`Z zaVN?KlgMOk57v+0-WL1=&&xW!n+3P#-1S?!XKiLxV_wh0v;^5zRNFnv8h;K53tS<8 zGSXw%(pP^ItZ!@xO=xVX{Q54fwCVl8h9ie7otHMc?f0|4Z{5+Pk)=9b(eMl_oLz)Q zhi08&Lbtk-FQ`{W#am1L)r#>hw>|&K$x}&J;(nBx$8Lj4@-eD9-?y3yQFF-`nQtGS zkCNKH|G2qBl!n=DGsfPcxAvvq;vCNEB`!?nMcHp*@Pchmwr!z6;%`5Y}53=`(J#cSg47Frd7uY7EF|^#+keuis z&G%MU8}s)w3zsjaUi(Nnv+V1g>N6#ttu{pors8`q(RMA?>nvprcWCTgIDDq-PVDM_ z|HJKPY;G|#?zBdc_Oad>-y;zoZOE=kF?nG{Z}3aWZTOYu!k%~FuecnSdr`MkSXS1r z-4Df7dRD2MdwRTnd!&u9$cr*m-u@z2nD8XV&9AzrPcgNczh`Kq?NI04J389CbXBB| zoh+$ai2r`lS0guh&~ISf&ok@~U&G5#&ZmMGR4+6yx?J=uRPu3*sy5EXtJd}2D}%aA z3+`QFx~;7*5~X-u8O{B1HK{uL*C)^BW4Apz(4U@M`yEk{R9r75=D~Y!@zSF<79@?Y zA6LoMc(UnfnhEO_AtSSn_iVo}$7M27TC54p)h>~lhqt}3$fGZjk~#aiNokR--1T^N z_fc7oWdDeLmFvY-A)0PsW8dJ{c!?3QHmz0LZyetsW#QS^7WaB*x$w?NTkWiG&f_7W zz2m&&q6=2ITAdM%-F@aVevI!*V)(N;!$0Ts6O%(ScgHZCE)arD+4d|ScM<}EfneCw zra90Z$uwsKj=R|f+D&FKS(+|H20{r522$eW1sGK=$&M@+CIUB+ywD&rNt_%6MA)Ni zz85d6X<(p>0!T1Wi^Ozbklk5y1_BF*BGb=$-~c9tQ)fDmXeQAkWCThsDL5_45(E+wJ=1gR;sT3lc1?e*>M5YTw;eOGb=`@lX#DHA~g`AWI#A1*=gXBqqsAL+Oi9k)s zi9lf>YX>3&P(8@~;{FG`VKb9qA>bdbkdqVm19CV~5NPxiVMQcRo(Kqgu<0xk6R@R_ zAf`LffdrAf9VkR9_lBcA1){O3_9O`VhhDHI|Dawjo3>Jh2n7n4YHI8IBKL;||fy{7VQz16Z5m?26&X_PR2agEZLk^H51oVNNAs2`Yxk7Fb z1)@SUhz_|!9uNa!LM(_4c|u;0H{=5yrg3ADDUKur3XPkpQxvGwKh#>5v~(_96dC?s#VR#+}{Hm7n;xvu5RCQ~?$ z!V$?x8@S+~#)QJ)rnqqKa|8iIxf0v6DHIY5o>sv=Poi?ZI2u4K2GNm3B{JL~<}5y3 zR60-+J55Qf3Pf-ugGLTiK%hXoo^0YM(6+h0>qz&aK^zZ--HrmB8**SX;BLVO0FZcooOVVAUxkD%_-i4^ZgNWCtPz^emG;%pf_F zVOAtZh)Q&T8>J%&baW(+yK|Z@?9fa$$JZHL$DX<(IQmNHhx;c;T^rJz6iJ(ltj$H%o`$SFg{8|aqsuL$JFSfFR2glS3uMS; zXT&XT#4T<#t+>%dfhjC1o5CWyQ+yyJZksgcqMCD2&8MN7PvH=_H_cq=3>pOdp9=af zdkPbRO%FO5BKJ0N8ZME`mN-R%$T0&EbUu@20JRMxleoyFX~>}JxV{RJxn;=QG84T8 zr?HWz%8-B=Xk2!5ZgD!dIDHyP`b2>#EJv~@*^va%xkg}f5!qZs_B2HH6owD?CTQZo z2tJeG>4P8VIH;M!EIi=NjnhOimv-Qi3_OdIgWnW-lDc-`n z|5|(ogE2;@VvGz+sd^jOKRH2g)9vczY6&rIt;_3xAmsDpvicr{7InRnr z9RtCqa=KNH_gYb|GKy@h$wl`=Fa<%SyS`=VIe5m*WZNuG$3} zFK%12@%IB`nP-{C$CYXnkw`unJ`Hi%Rh8)1g{>oz&kI=#Hkm30m!zha>{YN6;_cO6 zd3EthbRQlsy8HxUcfV7u+*r6 zkDub|s_lw?UFkMhUN29m&CkoqWbQviTzPHBmugWr+h)g|A~(`#o=$tI*V_wsJ^2|f znX_s~W22Xq+Hh)+Wp2OO$5i?7BLD3kwyOkl-ZbXf5lVviYex^_jy#b~xR>5DR%;RP z+2;cU7dLzB<}zx!UNZFFQ^!lT0@2P;>0d98j@ zBHO*=zT7x@&*;yV+vVL=&AmOsB9Lb%{(h`eS<+9*o+i=khFiIzVtMnERn`^ueljW0 zdbXZt{QT&Pm2^kd$VT&>>jV#2^yFPLygM|M!Ry(hCz0bT=AYH`rL__2Wc~ae{8+wh zeft3JPIp9qm`YEBa!dXzLF#?-#&-UJQ*lb$n>P4t>(u>P+JEfZxb1a4`K;j^awy-b zUt4n(=vReex^IuJlWDfO_N9oryLDLd-cqJ*lf0`mCE#;9bG&*m(cih@?x{n1`ThyF zH>Gvw75}cy-{PFT-`%$N&W4!7dl)nWyDrb{1LIox0hFSJ$<3WRtnC!MLn8<-F{3;R zXEr@7Q$CxK)8M6Kx%0S2nZf_JB?{C2(j$Bw-!70^TMxF z-H!{L>XIYZH?6ZMynufaGeGS>VXL0nX|*=J(5TzhQq|_MboH(AvW`M_x7;OK>>>~8 z?t9n!OV6HG&u&{8Trnd1{9eAe;=uz68*S@;4UdPti7?uB%zxB;ST{#!v+*%Ee0ov! zw`%z#8L3M?4&8n2BjvOGcY_o&ucz;XM#YJaafdgSjx4RRfStqJ>_WowuJ#nI_e!_X zEBax3{b``a1FY+V>qvx(6!ylI%{y^7q!Sj+n{VwMHD@BK2(Kysv%Yg;x7?qJC<;4m zA_`wjPDCeCbALK;EmLCyf*zQNniBrSL=+9r&8E-WIDkpvCMKd_Hu$$EqO;ijn~A70 zkoezCL_yy#uL2$`L7`AepwGwt>xn2g8l64`<%}8ARl!Z98-;AJNaVE1=ky0j{`TY( zg@w2*LA*K{u1+6oIghwZ+Ko%~ACI-%0ddY?h?>6K|38wR7{;d!v8aFUg>!;~KO^`w z!qbzy+|l|UBqzWT>6{N(S|C$E@QZ*KAy_0W5?GQU0VYCB7Fc|s3VAnv!@HT8zFEEC z$z9>zOo3BsXBzdR!U_>uM^-$RCGly^SC_$SeAm4b|27oIBf5Oo>a^5F+B`m2h#P{J zv5xU9D_O|9QtO3@32~!``wCfsWdIn1&|sip%Y?DR;_k z(BE=GnD@tK$-^f_Kid%=^ln|g$o=BEUBSG11pN*~n{(vsf1O#*Snc**h$;!kv5Z8h2uE3h#0EHXUtXGRpSVBCupR!UT+3Nl{H zT|bpiU`5!Kk9R!&!W{cVI&>~|`DaLYUwouo2%o^?Wjc0> z883dM6(EmaD1RCEPNZPh5h0aWE8fGZ?;Wj|^d|H?}{3+&I5^cADvHrRY{Ud?DWPR_Zk6W+N+-SU@K_{)og|+F$ogLql zD#cd?33~87DG7Y|lb831h_o&yZN<@YKACO1P<%4;%)}*3w~8y^*71}&z6=zQ(lH(A z(4KE57+IcPb9UZ*<0q!{>e%KLznX0O2Fg~-crE?Q-5Gg0%|#e`VE^*vSdw^ficJJj z2VwWpB3I4gph4Or$0LEUhlWg6I}DqJ8auock-2d0VrOaa4pp4ktM04%OJ(kvW1S10 zXMF8UdYyn_Yww6mS?@>bUcMN&DWyVh&FM;~pBMW-hGE|uFI(1^;;?;>pZ1e9SO4n; z_BZT&$SC^vEAG-tG>bjDzSp9DTGg8-xdq@Ki=_?36o1zv$D2xQ({YyYTKmS$;!W*# zqR#tpkCv3GLJ`7HE0SzlK3H?;>H4n~?T2ZY)^%T8RwKh_e1>Fg9ED(#HS5+ka6zxDYcgYkyqv9-)>qf zZ%j=N=+c+?K^v_lMCR8SIjIc43D-5JhALD#*xOV->7?~wWt%ByN6*#P-?{K+*Ye@w zrgLFUIsU62dw2RNVaWk_ghe%f0XFOq{a8dz;0styNRZ${isF z|1Ph)HKMDE_PZ5$D6m>6KF`gxy|(SP2e#S$OYZw~Qhv?0_N8T|iN`Lz{L*(|F`?gz z!fe_j^yUpsRn{vrEFr&b*(N87K+52jr{0VFJ|r&nZ82EB-?T`yQ?>J!(}hon!Ci^2 zw4|aW`(GjHnhn(Mnok=G{YM z8b*h@l1&Y0nRlX8>3h<5+^yF@ja+Zv(lqjIj46?NV9(?DzD*meJKDtF&{}9AsRN&e zi(h$_xf3E9bQ*V`zt!85=2mpgx2`8T;2xFX995kXpAgTgUHS2HL=~xRPZH{5a|6<4 z`0P(f`O{`qS?QO@9txR;uG?EVw@q&W}m*#)TGgoiZ zTU@PB`tIb}n0@VeMk4sJX8!{FzR?@iLaYrtqnoILSof6Qk;(n}zs@|d(e-^>ut2g* z*E9SZVZv4TJ_9!dV zYsWqJcWmfS+EnnhpSB^M`Qejq!r||R&nyWIFXZ}v1SziG7Wz!>s!ulkkr+X^;I~3! zY};$^doB2pZ7Yk?D%$(<4vU>!e3#jo|9(~1dX=}IUglYt;QI^q92h=U?DpoUSM9AO z!(yg+@%WB&+z9UPBq=5~a{Y-7cN=S4Xqs@76ku)*bDEZ<;0B$4&ZC|lH~kMO zidoG5O=PI_A0k5#I8US~&>%AWrzr|1{VWw2>+7z)l_&5THmiOwV@2<7Q)IK3nU8N=)REQIpJCKo-jBS^Wx z(Iy_O*K)r&-i1JO@>K|6cK9Ah6@jnm(J$xBp#Omvcq=?ikaN-{_~MesaQqa(d0!?T zf#parof&6e;eTKT5?23GG0tQ0cm(I+B=E)6jI$|dhAtdy{0H(VU^uR&I2HzCbB)8@ z?l@gg<+&SITHM|XxL1XVF<`9DsnJU!MoX3!nk4j>4Yc6W3#BU#C#6p-@Zrvt;s zodu>ons6QtB&D=Kgp82Z+J;6V(O}l3jKX2T63o_VzTnLuISC;VAcKgU{9u3~u)zLK zhzS@9ewdzf7eSkXp}{NnXTiWFs37?Br`$ByBs~lc2|v;`qZ~#Fhn`IjgTcXeoK+4B z?=hVL0~aV@PY!H~2Sy2=cX41-G6N$_()&{m3olsCC9)i#Uf$ zdPo%&)NGkS4b8DB3X7g&Q(zUaLwFWFV3$eQlwE)nL|$*r8t`}S`h`O&}Y(9M8ZAWOc+v0 zWi||h#LSUdQ5iGUwkCZXcq#n8w3+mjKpJlj3z@fz zLc_!H445KHQF(SbMNsLpbpz+d!ABy`z{TJc;mw#cV2T(dyw!6iOi^V{f2D}RD9`p6 zKn;HB@l0G`=GnR_Vo-DH189MoLr)nEFU8EHheOSg1p}&gw#)!F)z|&0Hyk`<&Y*|E zD9-U+0GrbmFhGwvxS)%etuF?LnWGy93_5emVO6H-2GYb}uLwg(O%0@=$OlRAcm(0; qbP$06>%n;^U78ae!5IVLg*>p>12UkTu?vG!!r_D@CAE!q3;iFo9U;;H diff --git a/doc/admin.txt b/doc/admin.txt new file mode 100644 index 0000000..d4b9ab1 --- /dev/null +++ b/doc/admin.txt @@ -0,0 +1,592 @@ +If you have any additions, corrections, ideas, or bug reports please stop by the +Builder Academy at telnet://tbamud.com:9091 or email rumble@tbamud.com -- Rumble + +The tbaMUD Administrator’s Manual +Originally by Jeremy Elson + +This document describes how to configure tbaMUD and how to compile it for the +first time. It also discusses how to run the server including documentation of +command-line options, a description of system logs and how to use them, and a +description of daily and long-term maintenance required by the MUD. The +intended audience is implementors new to tbaMUD or MUD administration in +general. + +More information about tbaMUD, can be found at http://tbamud.com. + +Contents + +1 Welcome to tbaMUD! + +1.1 Background and Introduction +1.2 Are you a Player or an Administrator? +1.3 So, you’re sure you want to run your own MUD? +1.4 Giving Credit Where Credit is Due + +2 Getting Started +2.1 Section Requirements +2.2 Downloading and Unpacking the Source +2.3 Configuring tbaMUD +2.4 Compiling tbaMUD + +3 Running tbaMUD +3.1 Execution and autorun +3.2 Command-Line Options +3.3 Creating an Implementor Character + +4 Customizing tbaMUD +4.1 CEDIT and config.c +4.2 TEDIT and Text Files +4.3 World Files + +5 System Logs +5.1 Player Information +5.2 Usage Information +5.3 Errors + +6 MUD Maintenance +6.1 Technical Maintenance +6.2 Diplomatic Maintenance + +7 Final Thoughts + +1 Welcome to tbaMUD! + +1.1 Background and Introduction +tbaMUD is a derivative of DikuMud, the Multi-User Dungeon developed at DIKU, +the Department of Computer Science at the University of Copenhagen. The original +circleMUD, version 1.0, was run by Jeremy Elson at the Johns Hopkins +University’s Department of Computer Science with moderate popularity from +January until September of 1992. The version 1.0 code, which was never released +to the public, was archived and remained inactive for several months after the +death of the original CircleMUD. In the summer of 1993, it was taken out of +storage and cleaned up with the intention of making it a public code base that +anyone could freely download and use to start a MUD. Version 2.0, the first +publically available version, was released in June of 1993. CircleMUD was +maintained as a public code base until 2002 with the final release of CircleMUD +3.1. After development stagnated for 3 years The Builder Academy offered to +take over development. After a 4th year of no continued development The Builder +Academy released circleMUD 3.5 in 2006. Soon after Jeremy Elson requested we +change the codebase name. Even though we still follow the CircleMUD vision we +agreed and the codebase is now known as tbaMUD. The Builder Academy is open to +anyone willing to learn how to build or start their own MUD. + +Thousands of carefully spent hours have gone into the development of this +codebase, but it is not a finished product – it is only a beginning. It has +only a small number of spells and skills, and only the 4 original DikuMud +classes. From a gamer’s point of view, it pales in comparison to other MUDs +which have dozens of spells spread over a dozen classes, and a rich palette of +skills. Yet from a programmer’s point of view, tbaMUD is very highly developed. +While the look and feel of the original DikuMud has been maintained, most of +the underlying code and many of the structures have been optimized, reworked, +or completely redesigned to be efficient, compact, and easily changeable and +extensible. Dozens of features which have become standard in the MUDding +world over the past few years, although they were not part of the original +DikuMud release, were added to tbaMUD as well. + +The result is that tbaMUD is a launching pad for your own MUD ideas. Our hope +in releasing it is that it will free potential MUD implementors from having to worry about dealing with bug-ridden code or wasting time reinventing the wheel +by re-coding standard MUD features, allowing them to devote more effort towards +creatively shaping tbaMUD into their own unique vision of how a MUD should look +and feel. The reason why tbaMUD has so few specialized spells, skills, classes, +and races is to encourage implementors just like you to create your own +unique system instead of just another stock MUD that everyone has seen before. + +So, it is with this message that we inflict our code on the world: don’t just +put another generic MUD on the Net – give us something new and exciting, and +have as much fun as possible in the process! + +1.2 Are you a Player or an Administrator? +If you’ve never played a MUD before, jumping right in and trying to run one of +your own will probably just get you hopelessly confused. Instead of trying to +compile and run the tbaMUD package yourself (which is presumably what you’re +trying to do if you’re reading this document), you should play someone else’s +copy of tbaMUD first to become familiar with the codebase. + +1.3 So, you’re sure you want to run your own MUD? +If you’re already an old hand at playing MUDs and you’ve decided you want to +start one of your own, here is our advice: sleep on it, try several other MUDs +first. Work your way up to an admin position and see what running a MUD is +really about. It is not all fun and games. You actually have to deal with +people, you have to babysit the players, and be constantly nagged about things +you need to do or change. Running a MUD is extremely time consuming if you do +it well, if you are not going to do it well then don't bother. Just playing +MUDs is masochistic enough, isn’t it? Or are you trying to shave that extra +point off your GPA, jump down that one last notch on your next job evaluation, +or get rid of that pesky Significant Other for good? If you think silly +distractions like having friends and seeing daylight are preventing you from +realizing your full potential in the MUD world, being a MUD Administrator is +the job for you. + +Don’t get me wrong: running a production MUD can be great fun. It can also be +overburdened by politics and plagued by spiteful players devoted to making your +life difficult, and otherwise be a highly frustrating endeavour. That’s why I +started The Builder Academy and develop the tbaMUD codebase. The enjoyment of +MUDding without the pesky players! + +1.4 Giving Credit Where Credit is Due +If I haven’t scared you away yet, and you’re still sure you want to use tbaMUD, +please stop for a moment and look at the license in the file license.txt. It +outlines the terms under which you must use tbaMUD. + +The license is simple. It boils down to the message, “Don’t rip off other +people’s work.” Unfortunately, this simple message ended up becoming somewhat +long-winded because I am trying to prevent people from abusing DikuMud in the +future as they have in the past. + +Also, out of courtesy if nothing else, please keep the credits file intact. You +can add your own credits on top of the existing file, but I’d appreciate it if +you would not simply remove it and all references to the word “Circle” +everywhere in the MUD. How would you feel if someone took your code and then +took credit for it? + +USE OF THIS SOFTWARE IN ANY CAPACITY IMPLIES THAT YOU HAVE READ, UNDERSTOOD, +AND AGREED TO ABIDE BY THE TERMS AND CONDITIONS SET DOWN BY THE LICENSE. + +2 Getting Started + +2.1 Section Requirements +tbaMUD was originally written as UNIX software and will automatically configure +itself (using GNU autoconf) and compile under most versions of UNIX, both BSD +and System V derivatives, including Mac OS X. With minor adjustments +(documented below), the same source should compile under Microsoft Windows, IBM +OS/2, and the Amiga. Users have also reported getting tbaMUD to compile and run +under MkLinux, the port of Linux to the Power Macintosh. tbaMUD will not work under DOS, Windows 3.x, Windows for Workgroups 3.x, or Mac System. +Specifically, the following variants of UNIX have been tested and are known to +work with tbaMUD: + +SunOS 4.1.4 +Solaris 2.3 and above +Irix 5.2, 6.2 +AIX 3.2 +Ultrix 4.x +HP-UX 9.x +Linux 1.x, 2.x +BSD/OS 2.1 +Mac OS X (10.0 and above) + +If your system is not listed, don’t despair; because of the autoconf program, +tbaMUD will compile under most versions of UNIX on its own. A large effort was +made to make tbaMUD more portable by converting many of its system calls over +to POSIX compliance. Converting tbaMUD to POSIX vastly helps portability on +modern operating systems, most of which are POSIX-compliant. Unfortunately, +on some older systems that are not (such as NextSTEP 2.x), it may be more +difficult to compile than it was to compile earlier versions of the code. +(POSIX stands for Portable Operating System Interface for UNIX and is an effort +to standardize the way UNIX programs talk to the operating system. For more +information, see Stevens’ excellent book, Advanced Programming in the UNIX +Environment.) + +For a small, private MUD, or a MUD used only for testing and development, about +20 MB of disk space and 32 MB of memory should be sufficient. For large, public +MUDs with a large player base, 30 to 50MB of disk space and at least 50 MB of +memory are recommended. Free memory is much more important than CPU speed; +tbaMUD uses virtually no CPU time. + +Historically, tbaMUD has always been developed under different variants of UNIX. +The original CircleMUD was run on a DECstation 3100 running Ultrix 4.0, which +remained Circle’s development platform until v2.0. Starting with v2.0, Circle +was developed under various versions of Linux and Solaris over the years +ranging from Linux 0.99.11 through the current Linux 2.2.x and including +Solaris x86 5.6. + +2.2 Downloading and Unpacking the Source +The first step in setting up tbaMUD is to make sure you have the most recent +version of the source. You can always find the most recent version of the +source at tbaMUD’s official website http://tbamud.com. + +Next, unpack the archive. If you have the .tar.gz version, unpack it using gzip +(GNU unzip) and the tar archiver. If you don’t already have them, both of these +utilities can be downloaded from the GNU FTP site . +To unpack the archive on a UNIX system, type: + +gzip -dc tbaMUD-xxx.tar.gz | tar xvf + +If you downloaded the .zip version, make sure to use an UNZIP program capable +of handling long filenames and which preserves the original directory structure +of the archive. + +For the next few sections, please note that the Cygnus Tools (Cygwin) are +available for the Windows platform, which allow users to use Unix tools on that +operating system. + +2.3 Configuring tbaMUD +Note: This section applies only to UNIX users. If you’re using Windows, OS/2, or +the Amiga, read README.WIN, README.OS2 or README.AMIGA instead. + +tbaMUD must be configured using the configure program which attempts to guess +correct values for various system-dependent variables used during compilation. +It uses those values to create Makefiles and a header file called conf.h. + +From tbaMUD’s root directory, simply type + +./configure + +If you’re using csh, it may not execute “configure” properly, giving you an +error message like “Permission denied”. If this occurs, try “sh ./configure” +instead. + +configure can take several minutes to run if you’re using a slow computer. It +will print out various status messages while it works, telling you what +characteristics of your computer it has found. It should create two Makefiles +(src/Makefile and src/util/Makefile) and one header file (src/conf.h). + +You should only need to run configure once – right after you unpack tbaMUD from +its archive. You will probably compile the source dozens of times as you add +new features, but configure only needs to be run before the first time you +compile. Please note that there is one exception to this rule: if you move your +MUD to a different computer, you must run configure again before you can +recompile the source code. To rerun configure after moving the source, make +sure to delete the file called config.cache and then run configure again. + +2.4 Compiling tbaMUD +Note: This section applies only to UNIX or Cygwin users. If you’re using +windows, OS/2, or the Amiga, read README.WIN, README.OS2, or README.AMIGA instead. + +The src directory contains the source code for the main MUD server; src/util has +the source for a dozen or so MUD maintenance utilities. There are two Makefiles, +one in each source directory, but all compiling is normally performed from the +src directory only. To compile the only tbaMUD server itself, type “make”. +Use “make utils” to compile the utilities, or “make all” to compile both the +server and the utilities. It is also possible to compile individual +utilities from the src/util directory: from src/util, type “make +[utility-name]”. All compiled binaries go to the bin directory. + +The stock (unmodified) tbaMUD code should compile with no warnings or errors. + +Despite my best efforts there’s a chance that you’ll have problems compiling +tbaMUD if you’re using some version of UNIX that I’ve never seen before. It’s +impossible to give general advice on how to port software, except to say that +you should ask a friend who knows a lot about both UNIX and C to help you. +Also, if you have problems, you should definitely look at the tbaMUD FAQ +(Frequently Asked Questions list with Answers), which you’ll find in tbaMUD’s +/doc directory. + +If you do port tbaMUD to some other platform successfully, please share your +hard work with others by sending a description of what you had to do to get +tbaMUD to compile on your system to rumble@tbamud.com. Be sure to include the +specific name of your operating system and hardware. Full details on porting to +a new system can be found in Porting.txt. + +The Makefile directs all compiled programs to the /bin directory. Although not +recommended, you may want to put tbaMUD’s /bin directory in your $PATH. The +reason that this is not recommended is that most of the resources are +referenced using relative paths, and thus require that you run the programs +from the base tbaMUD directory. + +3 Running tbaMUD +Note: This section applies only to UNIX or Cygwin users. If you’re using +Windows, OS/2, or the Amiga, read README.WIN, README.OS2, or EADME.AMIGA +instead. + +3.1 Execution and autorun +1. type ’autorun &’ +2. Wait a few moments for the server to boot. +3. type: telnet localhost 4000 +tbaMUD should always be run from tbaMUD’s “root” directory, not the /bin +directory. You can run it manually by typing bin/circle (useful for testing and +debugging). For running the game “for real,” it is better to use the autorun +shell script provided in tbaMUD’s root directory. + +Autorun lets tbaMUD run itself for long periods of time. It continuously runs +the game as well as removing old system logs, moving newer system logs to the +log directory, and saving certain log entries to permanent files. + +Autorun can be controlled by creating files with certain names. You can use the +’touch’ command to create a file, and, of course, the ’rm’ command to remove a +file. If a file called ’.fastboot’ exists, the tbaMUD will reboot immediately +if it crashes or is shut down instead of waiting 40 seconds as it normally does. +A file called ’.killscript’ will cause the script to terminate itself; i.e. if +you want to bring the game down. If you want to temporarily prevent the MUD +from rebooting, create a file called “pause”; the script will go into a wait +loop until ’pause’ is removed. + +Although you can create these files manually, the shutdown command from within +the MUD has several options which will create these files for you. See the +shutdown help entry for more information. + +3.2 Command-Line Options +tbaMUD recognizes a number of command-line options. You can use them by actually +specifying them on the command-line when running tbaMUD manually or, by adding +them to the FLAGS variable in your autorun script to use the options +automatically every time you run the MUD with autorun. + +The syntax is: +circle [-m] [-q] [-r] [-s] [-d ] [-p] + +-m Mini-Mud Mode. Mini-mud will be one of your most powerful debugging tools; it +causes tbaMUD to boot with an abridged world, cutting the boot time down to a +few seconds. It is useful for testing features which are not world-related (i.e, +new commands or spells). tbaMUD uses split world files (in the lib/world +hierarchy); each directory (i.e. wld, obj, mob, shp, trg, and zon) has a file +called "index" which specifies which files should be loaded at boot-time. The +file "index.mini" specifies which parts of the world should be loaded with the +-m option. + +-q Quick Boot. Prevents checking of timed out object files. Every time tbaMUD +boots, it checks every object file to see if it has timed out; if so, it is +deleted. This is done primarily to save disk space. If time is more important +to you than space, use the -q option. -q is automatically activated when you +use -m. + +-r Restricted Game. Allows you to decide at run-time whether or not the game +will allow new characters to be created. Using -r is equivalent to typing +"wizlock 1." + +-s Special Routines Disabled. Allows you to suppress the assigning and calling +of all mobile, object, and world special procedures. Historically used as a +debugging tool in conjunction with the -d option (see below), but now obsolete +because tbaMUD checks to make sure entities exist before attempting to assign a +special procedure to them. + +-d Data Directory. Useful as a debugging and development tool, if you want to +keep one or more sets of game data in addition to the standard set, and choose +which set is to be used at runtime. For example, you may wish to make a copy of +the entire world in a separate directory, so that you can test additions to the +world files without subjecting players to unnecessary hazards. The default data +directory is ’lib.’ Any core dumps (may they never happen to you!) will take +place in the selected data directory. + +-p Port Selection. Allows you to choose on which port the game is to listen +for connections. The default port is 4000, which is historically the port used +by most DikuMuds. You can change the default in CEDIT and the PORT= line of the +autorun script. (The PORT= line of config.c is ignored if it is set in CEDIT.) +The port specified on the command line or by the autorun script will take +precedence over the port specified in CEDIT or config.c. + +3.3 Creating an Implementor Character +The first character to log in to the MUD will be made the maximum (Implementor) +level. If you log in and aren’t made an implementor, then the playerfile +probably is not empty – take the MUD down, delete the index at +tbamud\lib\plrfiles, and start the MUD again. You should fix your stats using +the RESTORE command when you first create the character (i.e. type "RESTORE +". + +Once you are logged in as an implementor, type WIZHELP for a list of privileged +commands. In-depth helpfiles exist for all commands. + +To create additional wizard characters, log them in normally as level 1. Then, +advance them using your implementor character, using the ADVANCE command. + +4 Customizing tbaMUD +Once you get over the initial euphoria of having your own MUD compile and run +successfully for the first time, you should be aware of some of the files which +control how tbaMUD looks and feels so that you can configure it for your +personal taste. + +4.1 CEDIT and config.c +The first thing you should do is test out the online configuration editor; +CEDIT. Go through all of the menus and setup your MUD as you desire. This will +cover loadrooms, messages, PK, PT, etc. CEDIT replaces the required manual +editing of config.c, make, and reboot. But you should be familiar with both. +CEDIT info is saved and takes precedence over settings in config.c + +4.2 TEDIT and Text Files +The lib/text directory contains all of the text files read by players. All of +these files can be edited online by using the text editor TEDIT. The most +visible file is “motd”, (Message Of The Day), which is the message that mortals +see (though not necessarily read!) when they log in. Similarly, the “imotd” +(Immortal MOTD) is seen by immortals when they log in. Other interesting +files are “news” (for the NEWS command), “help” (for the HELP command with no +arguments), and others. + +One file is particularly important: “policy”. Despite what anyone tells you, +and your best efforts to the contrary, your MUD will have political problems. +If anyone tells you that you can run a MUD without politics, they’re wrong. If +you tell your players that you’re going to run a revolutionary MUD that doesn’t +have any politics, you’re lying. Every MUD has political problems sooner or +later. Unfortunately, this usually occurs “sooner”. There are various ways to +make political problems easier to handle, but the best way is to decide on some +ground rules from the very beginning, and then set those decisions down in +writing. That’s what the “policy” file is for. You probably know what kind of +political problems MUDs have (you are not trying to run a MUD without ever +having played one, are you!?) – stuff like playerkilling, thieving, kill +stealing, client use, multiplaying, reimbursements, etc. Decide on your +policies early and make sure your characters know what those policies are. + +It is also important to write down a set of rules dictating what immortals are +allowed to do and not allowed to do. That’s what the “handbook” (Immortal +handbook) is for. Immortals will always try to bend you as far as they can, so +it’s important for you to decide on answers to questions before those questions +come up. Can immortals assist players? What about giving a single ’cure light’ +for a player about to die? Can immortals kill mobiles for their own enjoyment? +Can they kill players for the same reason? Are they allowed to make policy? +Break policy? Moderate disputes? Turn over each others’ decisions? + +4.3 World Files +The root of the area hierarchy is lib/world/. lib/world/ has 6 subdirectories: +wld, mob, obj, shp, trg, and zon, which is where the world, mobile, object, +shop, trigger, and zone files go, respectively. + +Each directory has a set of world files in it with the appropriate extension +(i.e. the obj subdir will have a bunch of files ending with “.obj”, such as +30.obj, 31.obj, etc.) plus two special files called “index” and “index.mini”. +“index” is a list of which world files are to be loaded by tbaMUD. New zones +can be added in game with the "zedit new" command. “index.mini” controls which +(smaller) set of world files should be loaded in the debugging mode (Mini-Mud +Mode, explained below.) + +5 System Logs +tbaMUD writes a wide variety of information to standard output and standard +error. If you’re using the autorun script, the boot messages are put into a +file called “syslog”. During tbaMUD’s boot sequence, the system log keeps a +record of everything the MUD is doing to initialize itself; this can be useful +to determine what the problem is if the MUD dies while it is booting. Once the +game is up and running, the syslog contains player information, recording when +players connect, disconnect, rent, unrent, quit, die, hit death traps, etc. The +game also records status information about itself, falling generally into two +categories: usage information and errors. + +5.1 Player Information +The player information recorded by tbaMUD’s system logs will serve you very well +as your players start to make wild claims about strange bugs resulting in them +losing equipment or points. Many mudders prey on the insecurities of a new mud +administrator who is terrified that his or her MUD is riddled with bugs and +will do anything to satisfy grumpy players – don’t let yourself fall into that +trap! tbaMUD is bound to contain bugs, but most of the core systems have been +well tested, so you should take claims such as “I magically lost all my stuff!” +with a grain of salt and check your system logs. + +If a player ever asks you for reimbursement of equipment, money, gold, +experience points (XP), or whatever, your gut reaction should always be to +check the logs first. + +As a sidebar, let me point out that the value of system logs is twofold: 1) +they actually provide you with valuable information, and 2) they make your +players paranoid. When I first started mudding and I heard about this +mysterious “system log”, it made me incredibly paranoid. Now that I’ve done a +good deal of MUD administration, I’ve seen the same paranoia in many other +players. + +That paranoia is a very good thing. The system logs become an abstract and +shapeless but omnipresent force on the MUD. Players hear about “the System Log” +and then get paranoid that everything they do is being recorded, so they tend +to behave, lest the evil System Log betray their wrongdoings to the Gods. + +For this reason, when you go to check your logs, it’s a good idea to say something like “Hold on... let me go check the system logs, OK?” because it +reinforces the syslog’s presence in the collective psyche of your players. + +Back to the point. When someone claims that they’ve been wronged by the evil +system, always check the logs. The logs give you power to say things like “What +do you mean your items disappeared in rent? It says right here in the logs +‘Rasmussen has quit the game.’ You did not rent at all, you just quit!” + +To diffuse disputes such as, “The game dumped my stuff, but I had enough +money!!” or “I logged in and my stuff was gone, there must be a bug!!”, two +types of log entries are written. First, every time a character rents, the log +records the character’s per diem rent rate as well as the total amount of money +on hand and in the bank. Second, the log records makes a record of all +characters’ equipment dumped due to insufficient funds. + +Remember, rent is specified as a daily rate but is amortized on a per-second +basis! In other words, if you rent at the rate of 100 coins per day and come +back 36 hours later, you’ll be charged 150 coins. Or you can be nice and leave +rent disabled. + +The autorunscript saves 6 levels of raw system logs. In addition, it greps the +logs for certain pieces of extra-juicy information to save indefinitely. + +The system logs are your friends. Love them. + +5.2 Usage Information +Every 5 minutes, the game counts how many people are playing and records that +information in the system log. Optionally, if you define RUSAGE in comm.c, it +will also record system resource information such as CPU time and memory used. +The usage information currently logged by tbaMUD is, as you can see, somewhat +sparse; local MUD admins are encouraged to add to this code as is appropriate +for their particular site. + +Usage information isn’t critical, but it is interesting to look at the usage +patterns to determine when your peak playing hours are. If you’re good at using +‘cut’ and other Unix utilities, you can even dazzle your friends by graphing +your MUD’s system usage. + +Note: friends not included with the tbaMUD distribution. + +5.3 Errors +Just as your first gut instinct should be to look at the logs if a player starts +begging you for something, your first gut instinct in the event of a crash or +unexpected shutdown should also be to look at the system logs. + +A Unix utility called ‘tail’ is used to look at the last few lines of a text +file; it is very useful for looking at the last entries in the system log to +see the last thing that happened before the shutdown. This can be done in game +with the "file" command by using the "file crash" option. Often, tbaMUD will +report an error in the logs just before it crashes. This method is particularly +useful if the MUD crashes during its boot sequence, because the logging during +boot is intensive. + +If tbaMUD shuts down unexpectedly and there is no core dump in the /lib +directory, the game probably detected an internal error and killed itself. Such +shutdowns are always preceded by entries in the system log describing the error. + +If there is no error message at the end of the log, then there probably IS a +core dump, so you can use ‘gdb’ to examine the core dump and determine the +reason for the crash. The file hacker.txt, generously provided by Furey of MERC +Industries, offers useful insight into the art and science of debugging – you’d +be well advised to give it a look-see. + +tbaMUD sometimes encounters a serious but non-fatal error; in this case, the +error will be written to the system log with the prefix SYSERR, but the MUD +will not shut itself down. You should always be aware of any SYSERRs which occur +– they are often useful for foreseeing imminent danger or averting problems +before they become critical. If a SYSERR does occur, try to determine if a +change you’ve made recently has caused it. Ignoring SYSERRs is like ignoring +compiler warnings: you can be tempted to ignore them because the game keeps +going even if they exist, but you can easily get yourself into trouble by not +listening. The autorun script saves all SYSERRs to the file log/errors. + +6 MUD Maintenance +6.1 Technical Maintenance +Once you get the MUD up and running, you will surely want to modify it – adding +new areas, new features, new code, and new ideas, however these topics are +beyond the scope of this document. See coding.txt, building.txt, and other +documents in the /doc directory and online at http://tbamud.com. This section +focuses on some of the simple maintenance that’ll be necessary to keep your MUD +running smoothly. Make sure not to get so caught up in being a God that you +forgot you’re also supposed to be acting as a software engineer! + +First, you should look at the log/errors file regularly to make sure there are +no recurring problems, particularly problems that may have been caused by code +you’ve added. If the MUD crashes, it will usually generate what is called a +“core dump” – a big file called “core.#” in your lib directory, created by the +operating system to record the state the game was in the moment before it +crashed. You should look at the core dump using a debugger such as “gdb” to +determine why the MUD crashed. See the file “hacker.txt” for more information +about debugging. + +6.2 Diplomatic Maintenance +Okay, so now you have your wonderful tbaMUD up and running smoothly and all is +right with the world. Right? Wrong. + +Well, technically, right. tbaMUD requires very little day-to-day attention in +order to keep the program itself running smoothly. But the MUD itself is just a +series of instructions running on a computer, processing data. Never lose sight +of the fact that there will be dozens, hundreds, or maybe even thousands of +people connecting to your MUD – and they are not programs. They are people! + +From the technical side, there are relatively few things you have to do to keep +the game running. But you cannot just dump a MUD on the Internet and then ignore +it! Spend time on your MUD. Try to keep up with the boards, and make an effort +to respond to the complaints. Take a look at the ‘bug’, ‘typo’, and ‘idea’ files +from time to time – and respond to some of the ideas using Mudmail. Try to +respond to Mudmail you receive from players in a timely manner. Make sure that +your ‘news’, ‘policy’ and other text files are up-to date and suit the political +climate on your MUD. + +If you cannot or just do not want to deal with the player politics, make sure +that you choose someone who can and will, and make them responsible for dealing +with it. If no one does it, your MUD will stagnate and die. + +7 Final Thoughts +Try to remember that running a MUD should be fun. It can sometimes be easy to +lose sight of the ultimate goal of personal enjoyment that MUDs are supposed to +provide, particularly when MUDs start to get crushed under the weight of their +own politics or the egos of the administrators. If you find that your MUD is +more of a source of frustration than enjoyment, don’t be afraid to close it. + +Good luck with your MUD! Always feel free to email or stop by The Builder +Academy and let us know what you think of the MUD, and the interesting things +you’ve done with it. We cannot promise a timely response, but we love hearing +from people who are using our code. + +For further information and updates check out http://tbamud.com. \ No newline at end of file diff --git a/doc/building.pdf b/doc/building.pdf deleted file mode 100644 index 4f22972e36476f0ae0fc67c5b30f8d3fffe3e400..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 97238 zcmbTdV{~U-wmlr%c7CyK+p5^MZ6_7mP9>?hV%xSWwr%6Br*HTF_8r}0+`jMmw8tKM z?R`F+wdP#&%uV)9RGf~9o&|;lzzDE6vI6k(!Z661+L^mp0GL>qH~@cpU>L+LZCp&9 z01VBFL^geAgB06Cc`uof*9J3>_8ObsAq0* z?2S5Vc(m_;zgP28stwX0tk!@cnztgEh1wVx*&sLrYJ3s~Z&KfAtJYJn>LOz|4@(%a zjAv+QFzBw%D}lOE8VcK0S$yRt|edB75tC{;-H6Cox1QBOM5H%ZZn zL|yD#C`GCbJLVt@6-_8T&~;tt36b0pa{f#MDaiVX^iyXYLC3N2dsQ%}kuj)R z1DhfO`+S#@Uf(Lk!ccV1k?s5Jc0u$ns{1&JmVLYO~Shxp?nOXyzV7#A&l zVAX?57TTB_i`l>{PflzLpO451K|^}NtA|@5VG?Nsfk^fc5@%%UDIv{=xwXy`PmTkn zUb7)nq67p$;}+Fi%H8)kUboEk%t@Z^%~rnz)1F3qV0P(+F_P`_x$v zyp39U;dY2KD}|JsBu5W3OA?()g53hs7bc5dcEfrUpiNUyP}skmxx-Wcu?O*1)A3#x zkpitCc6rdoj&yYHD$B!nL$C~xHvje=DgZN>krU{sP&~_hTU{4*(>p%;e^$$~i5;R{mV2ou1l9!W~Z-zLl zRQ21Q*LRVv7YLI)a2%m>p z7sFAxoAOie5e zh3!26+KhiD*qN9C99+!0Fn_|G{>1&M+kace&ky+fL4Sq)qqd9x+5AtD|5M3XH~?&a zE&MZNW&v>ieaONEVESv9IgNmt#3qbb| z3jDug*#E5k$2ot;5O#Lf|AG*}|BfLC>61>YjA$WGydi0ieN|PTv~*H|V%n=2LsFP> zm?Xfg`-PX%YcsBLy{FKT03U%sND2Xa0a2{IvS3k@$JDr; znF%Ue(xiz(P37I0bOK?Vy^3(*`PVsPziewia0WH5s$$)8KF2uP8zYVS#L`8XL`r|d z7IMPRAIm(7gGM@L0;upQcLh7?%Llb4?a5PTN+k1YDwbs0bI`3DInoNhvIn3kb~qJ> zPt3kbi+8VCKrqS&^D9{KM^}&rT$q>-<73jsQ&+sv4KetaCtH+WHuVUkoBfm@3)Bh* zo&_jK;IS{1>h_eFuD?6r42Y6KX==IR63@F+o!xKb96r_3a(IQz%cIFY5d)r{tDxBx zt`>qwx2+P`e9XmLO&doM-Sn%@GuH+?SR<9G-stoyWK4*1u}LgZ3(452s5ef;T5VzS zWmB+*MNS`aupS$DERzPLhlkGdoxCzjKMJVbAbzMZkTgvDgsXp(3-Ty<7*!F5ETMX> zP%LJXIE{AF+ic#BmYHg-K`8gKN~RJ=0%@P1Jc){_d%^!+3#=01nJh~<+zBUvhNPXvs-E$wo~2^Ux}y&4wtAOshFdTQ?BUJmN3#B&=Kk$U3b zD(vmb3x_{K3nXX+DQUbQwG&{4|NAfpB#K{Vo`b)R-K2dR7x>d6mhu#VsDo}joetXmg%po`NwDeZ}XPvuSEEtiOc$5Gymtz{VVPtXZ_pM{qKDJ&vKOO zpEmpl&tqp~{7-q_frgCpAD-8Br2eetL~aBfFnvPhm?+OI=N-P9(S?8nEfY>93@*hp zR((b9CM8o#eo~ZX;sewIgt2Vj?K`qd9U|aJHb;yc(m`F$oZ#uYc>aS|U*P34h1!s+ zZ2r~C7qzKsP2eZ*=w6EC9qX&<-6pGXMqj{xktsG6 z_E)DLX!s&Uc%^7UDRH}28MV|rb)GuF&EXpHcNXM+s7H~BUSWb##Sz+zW(;jogBe?d z0Y!y-eXhoS!kzadfg=a270whxw7P0hm$U>JP+<9YwMh#p@iX8M>*lSqF7SOCRexCC zPB1k$h$UIN2dE0zSzWai4oLNzK>!2jcQVMA_8cA`oPAIHvRfG;`3AZ)KzCEu$;6tz zetZ*;*j~hE(l!IjgKMvzo`GfS_xrQibLj6s9&$BblkkTEi#etQAZ(wx%asEtWEf03 zoS=7$_&aKv=hw=L;t1JH1ga4E#`%ddWKCYVG8ez}S4rCk{G*%91z+kSH}PeEGa(m$ z40%L1H&BWt(^*~?A_)u+RLd{lY3qzjx+i5spvp9)^xidf=fFw`Sgk>RC}D6NPZR28 zl2Ox?>S~#)Dxp!YlXH@ETuKl|Q9E5ML@zxcLW(IJaS?tuPetcbCcT^8GA0t;C-O7U@2uYjA1!UdM+2Nks86CoY|_hqcn>woMj`9Uy=f)kc;sG zkkJHQ-;m*d5={S?JU)xLIJW?`kT!Y0RS`$9yJp2lD6SRqq%H_{2O`K7Jdeby6?qBL z<*ap99**?ln2U`e654ysvSg%_!bXip?H2@ter)HQ{<#CPqpC}$n#z(=y_K2PV%%NPZDaFckwRsI2>r2d8`FYpabP1`&amY-}u$lM-ej1d+Y z-uN0gIupX-a7iQ|G(kz)_K zYtHF;&FPopfh2&L6`yPw$`3j24i%Usz7Be`)C5ba%?$w|vW<7r@7dnScc{NUiDR!x z#0=mao^8o#_}v5X=n1?bos*LsNC#m%{fMX;mf12hm%^Fe+~v* zf04ssJMv9vqlZG+2THPBxt-02TNE?eo0UFJLyS>^P-HR{+}op&?bVU)g^xe?)5hr!}LW+qE`_3L}7BIpD=B!kvMzTSD6$HzZE{gKZg%{ z{}oIBqMiT1w||eNe*xD2#8Qs`n)yFt>0fdGIO~7G(m&jn6Ttj8y8WMVU*>-X>c8VE zGZ)8yte?1Qj@RuC!Ea2fujiDNC-iX?-C7mfl#r{AlK*Cl;)IQ~k-8vSfg^M#@$Ur2 zV-?dKEdp6p5~NZc**01~}uW+V1RYtor{EW(0g>YJGwT=@Ad%ZFPZ!57Q!Nol z={efxxxmTjpC{Cch}@$I&75n+O&glOmH9V`DIZrfao=Lx2O!6f10mWp69jWme*ARa z^0+ug^2rc9jV|-F&L9YsyrMs0@3dbZ$SQ2sC?*?k_{ltfp&EQa;qBcUM=hRg-+8=u zzWLy+EHBQrb?)Nnw6N4*M;R9*3lqHAvf1p4Ow4XN*w$bFv;Pw5h+(Z|ImBdvcK28J zkNx;D_-=p-qGXlN@t2)dOVqAvoL-^g zbrA;N-VW*;)DA92CXZZk5}*A?vHg-}Ybx2Wrvr{ol$tSx2u~K|9f`JZfs*C^=3PzS zD3hgV9Ckf;3aZ6?&+m}Ok|DLjFu7E4X-aEeli{;yKkAH|7m(2EEWQ;@^{o8fMWmR= zn`bA1l#Pb)*#6|DM!se>kPzA~8WR$(jC^OF#~jUTsmf%|L&xH`&LHdTF+&i1aS7I& zOwr@<+)mUa910BN&0J{MaaCO=VVdy#c|m9xU2lPTy07PbUY|Hmf^0d7>X{zQMpMMo zF@-?J5n*#mSZ@JOWSo|C@uM1{>zQL5?X`K;GRz0(Cib@dUAjhr$KtwuzunUldPzcz zFUxkEB}?nJeu@&D>{3ikykAix~qx^G*CX}Ll83TzHg<$oi z^;=vW(*$s|2@MPmu|Syh*2IC9UE+gh3N7J=C07#5FsEotc#Z{(61AF*ZyKbXX>YqL zYGfkgQL?m&o%{SonfL@Gce`qqY=^SOuCAlNyL0jEgUx-(L#n4q>9MBa9jnv{X_a%5 zD^JCEf@$t3M*WE6q{kHVoAlyEiNP1#>)JRF<9OT=oVtC|VQG}B_|HJmDNUAjGWC-3 zs297F>@fX|&)zHLN1r;0J!9*KRSp=f)w-F(%892T<~b`p%L9oF{wo))9eWE%%?bfr;EMIN|$K&fsBLgvrsb<)B~G5 zCC4Sd&^)SgN$bNwjx`8vCLxl{p|uzEF{Y_aE6S!SzmFzD1(B~df*#n8?MAJ@?*$Pl z7#iabKLSf10|g2sP`X3oe+o{Z#}HduNlo$yXPwg&ZRbhQU@BXiWd{i=x>7`8@=g{7 zSq@>bL@s;^K)8%w7cf9&IA&yyJG3(@JZzN{mKG3=O820sbW_NU=pc?WvyRU=Y>VaQ zKK-GdSKUA3UYz_>{s*VubZ{MP8>&}H(84ik^yH)q_zzW0G<>vqX2lvxHlTD@;FgYc z!gMGo%Jq(!#j)(5C7!ldFaJXGbS)cFSrd_?@$U#mxNHju{m&m=A2k-J+$gudlgQro zAV9d-jy>XspwVkAk8kkUteR)G>2E>rGfLhsW80=qHn`ErluIZiv~S^Bb9qA&ffXDu zSIQK|(+kEFl0DlvHAZbSV~ek5LuOLXse?JD7K0C4Sh|Iw=RyjQ1xC>qmKNOX*m#)d zvyeCXLUSSBpe+geU@C&qs?lkZ-YHZhdMx|4p`K!oM>LP4_$*)dXCazXD;b@`t`;Xj zwOW|P8-v3{!NYpxM->~2nuC)B^Q}BD(k}to#RK&sLS>p`1I+Nd+*vfeJADIg?zgA;5NWhb%2<1jbTO)d{Oej=SX9e zv_)&^dpk-Br0LQ^fW=&)Lt)ViF%*)yhMh7Stas8w;b<*bEHj|mhnhkwGK@-f80{?li6pPvQ{^1WV5qe5L$tBa`VLPfi_YLqqLgar%>*&4zNiHOU)w z7Z$2RtnKcizSQIfBfDK8$?^>vA5557&D~UCTUMWo)aC$5)>#9=_stXV+eDsa3?ORh zOPsYOFE0EU5QFS^`ThZGfB~v!b}yei4o7;UNw=8HhYdlqOK?fM%k6ZQbt+oA$mKKo zsg+8WlQ4H&sR>zP{><4*S#VxrXS<<pwa1egJw4v_xSL! zbouw*xrNX|FdGgnG%4zPCK&&BvFoc9WAAFVo+X(4ogzA`5mC;zlRELkP1aexgUC7r z7kFYGv3s=F`ER}V24bT>eyR?kB~Ds#pryCDDw0x=4M())CVl&=8P=&JN`db1Cb0}E3R9t|?kvTpX=_x~< zu~sEt-O1V0vp`yL)^sftq2qSxT-2br)WzcLx$**q6?@`vXT|?p&3Q1VaU}o=8 zeRn&_EoAXgL!=GIXg?D9muWDKaRG*Y!ZNvNwIM8ss>l)Ip5)V=`INJkfQ>Bqy7j5E^^|u_*wdC*39)9E+WGBFv-juyveUZ7 zTH9<7gZ_Z#RVAYZ9YZZ{n6h_5LC7j?<{yRShK>bP+_1gfmkn*#~b0sc034#CV@1 z@|V|@{pC-R@rDD6S(2|m78bgjPpc-|r^>i@K>ZEXBSkUvpjn0IXC)bUS_IDdi;pAP z)d&aaAbpfFm+{y=qCmIbGpd>{=hMG5E`JpB|86G!ZR7H{j^KYZF3f+^(qS0>uZ_#! z;{LZa$yUdykfDXCT`54&dBk zvuBS&wJ93-!_s7)N6h}dFJ!|RqacGosF4Mf3B>+|*#ailX#(e~4VLbRYr07o5108o zzR&&hVT1x{lOnlAwoClH_>#9}U+PW^Np94~lg6`$qk0drcnt)TF87?&C_GH+F(jy) z_p2pY!{xL|B|<#DHS+%Jys4TA--VJpu^5uMawL4`lxyhaYl}ft>~3j2d;L#$J)4yC z90-P^;2<~n#(~+t{9akI-JW5Tt;4GVmIlq8oi1g447 zoqN`yge9fuqDA3XUYM@w(X5EMy=kExl!9{YF->o0Muqw+HM$se1((ZC{cN*1@m5QGa~Kzk`D>aH>ylaJa})*%u0>CA607m>OCZOt_ZD?a<` zW=~sIZ&HI`6l>|dz4gnLjhi;b+lKI#*OrN&af(QCzI;kbJ2w^A0juT7{9z(2Fy(7~ z-!pf4<>oqRZND9?;%Fz0%Hr@jKxT6o=3G(DvXRarPQl~OH3v(F!aBUSN;tCrhlhP% zcLj}uibFXptwYd&krfjLq~W)^n9}vQeOpo@BEWu=*kD7^I5jfepiyXvtoy(1ZQ<3{P!icCS2`*&6lB z*{;ciD23Dook-Sc+X|%j+=neceJf9?Tmspahr7nMEXM%Y(Z-`Ao!5-S^|!!-ZZl1$ zhdN$!`~IshOE4%*Z9xTM00M##Y+MIoccj0;S%N7@Jg`mmxbCgxJqA-pIm(bqJQ%(# zKqcrcj-6H-w1lOsb|R8}%uZfHYSO8bEE)nM%OptQYWW`Zm*#@<1{F~r(~V`fkoRQ8 z;QF2|C3-dvAh40v>pK^J>9OhlR3J3VO~WpcUT86+2!Sc4gM{^uY8k|q5(`s`h1pe@ zzP=ElSdj6pHR$8!fcUT)l(=07)@--#pQhk~KFS~y4VG%^4UZ9S!0U;|UId;kia=Tf zI&o>rH5g1gx@d@s_CK35M@V>waF3CNA<|f zQ~C|Lw0d4o+AphV@Nvjjzn*(dyRI@Oz;S8Hf@*QuN^Wl5aDbE018D;KzV9}>sD~ao zNxaJA?8g)SD)Ec_ovWTKFcCuU4c8PG4`CP&vQR{h^Mdk7OKZ8CwUR#IJkshq;cwCi+1syn_+R+Wv3JrLG#OGFAf9R zEw8oaJ?8iA0xIGOW+|>Y!7bKh?0o1}Knu_hV+>Q7U?ze_gWporv|o{+;B<{L(LcA2z0#f=lVWtijGXIU&urnH!xv(}bX7QqomMd;>-y$L6-6LP#+k99%4W^7`; zHXFuCe*XuGVO0HNpN)kW#l_W2~w^Tf3NLM_ZLDWiZdH%oL^E1P3hXIm(@#QkPSD+JHjb%srs>L89Z?4JjwF> z9kmO+p}yLXpxsY0F|aw|JOpeE0VTz~9vC$;u;NM43t+UkYY)Wjmwt#Jt-=rd(U~X9 zeFPlKf+~%e`JJ`I6p02M{w>#a&a$gtPyQ0atf8LPC<(Fc>&_kL5Hz9BvAKh}g zxvSn!h!oCu$FnA~&_h)NU*+D?(I*p}RZp_D(TRg!*(vlxztY=Jr&(f!`(CaED(+_g z^}5eJ5POf7NMd?hbziKlXxgU3Hf9~s-|O{SU@Hb~=3fcjKbsf+J)!%%?)=|&4CcT2 zC;opBx_|zI{BM=$|5l&>_%!~XBjZ0JcPxLoH~zsE|3U898UJG?Iz&_3e!T_VZ@T(g zo2^GHl~OUSfU?Gt!vfX>H%|{uY#uUJ)H_-7kB1>~>hm=hmkq}|u`fW3ATf-$`3lcz zt{v=iuAQ}PPwBv2Om#?F-F@=<@M143%v}>%^VJx+o3q4vZ5zWy%kjaD_`#M{PX zc6(@W&C~F96i)@km#dJwPWC3YTVni9yWM5_r>%XQ-{tFOlYpQ^%IvY3=3d2hGh|W7 zhmYBulhgc>NT%qLyc&kj5f*1nt|!j**Yw`j<>fqgl`8NS?Na8x4((V;Iknch!ABYH zk6LYU!W3$cKM;2-;9Tu!z2$T_-{z4Utu(uB6Vq&KFcSP}@=hmT@2iEWdECFg(jff0 z`hwa#(NanMvy8($Ik$-?V};csIelM7qppK|mOx=d>Y&b~Hx{DlgDA%9vL{eH_YNKX zY$#R3_{(LR&JlywK<_mL*?}JVVax8uA^MG0>L;Qbe})vh&*eyRg+{vXDTE!?rw_5R zf8&Q+S1u$(Kdx?SXR4zE%c^eC?ELyl?ZtGMu!I8~yv!%}Es_R$r!-aS+zg&eXNCC2 z93E)uo?1VtqbdN-1jWX6ZRTb+bl*&)u=2i%tSB z(t7claA!{QPL)W9G?s4Dh#rtX@!RZ!~d_Hc7VMBZ4Bu?8MKsYOiCViOa*Qq;7 zd|$I~qa$oPnx`wdsRwetS~o|CMFZ-!x1d`A3Z)cV=zvARu5)-D`c5POn!;uW@dOEl z;GAI^E1n?bz-|~vJ{%yOcuYtk0dV0XLoBUX>+k*CUab~0VoOE}#{8m&zHQIQD*l*b z!?4vjnq9kN&%%eNh<6t0=L;F!_nt9w2|NdEQ1H^Hk30X!E=qo{zcJ5VhP6CzOb)liD(O6^IqD2B_--e>4M5TekkAw)J|WG9R(BW>ijt2z zc7TDJi@9*>v}+;l#bg8qm-S66c8tNshfROujdHF$?y$@zyqpJ=Dc=&Z&rAAuWTnAZ5$&SI|S~v2D+RT35fnTRnNz@e%Jwt&pgj>q*iuLA+nqB}m(xW?k>!1twOMluMI-{8x$>XGZfwMj>1L7RT(u>?W3SCpzU31gZ!&2Uw-yh~GpwibUaicbZNM@OGhZD6$+% zy5Y1SV9?|iX^C?I9*!iNNXQI=naaqUTEn zN{?lxN~su_w>={a5SdpcI0BneRPjL;v+8`a;=;pmzz2Q1Q7TjN8lBhmQZz-ODcb*p zPrb=22*dT1Ji{s<60NG1qr`5^E)M@(n3S_8f_+C&%t}D)5gqm{s!HA|jTUUl{{=mEngQfr{)={un`Xqqtk=pR4{hWv5=76$oD$kA|D(^Q-FgRuDFxhCg;Nb-Idm)Nu{ zcD@d+s=Xn1SW|C1`mKU`k2`E%Z%`~@o|mlbgJ}W&if%o8xXM$J$L1xsU3;!ulh;I5 zM-BZhPI+bLO24!)>*gzM%CGaVdyy{LquTx5-*iAmd*fHf<`HO$x(_h06Ai~nsvcHA zk18Fa;l`qe9zc(194N_qO|P)iBb$C3uhHUzqi0at6!A4?lU5}CDalg4W8NODxFt$J zA^a09tA)xYjsawyMD9StGoGOwhBbFdy(|1cQvtKMJg9KtQVCfpw{ndc?gBWY#t{nZ z=h3FD;M>IPw+L5iDJ{umnpR<+DL=C6>O`6tWA#lvrE+Ua8Wi(2o105DgxqPq_1

hnb1nXai+q#zY80}DQ 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%0A~opy?j42PUSKB&hOV`}-oWEuFAb9UV{SqG5T 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 A@dXSLgy7d0O)Z!og;;hC!Rkqc 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 +~ + +~ + +{zero or more direction fields and/or extra descriptions} +S + +There can be between 0 and 6 direction fields in the standard tbaMUD code. +There should not be more than one direction field for a particular direction. +For more information on adding directions to the standard “neswud”, see the +Coding tbaMUD document. 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 they type +“look,” or when they enter the room with brief mode off. + +Zone Number This number is obsolete and no longer used. Historically it +contained the zone number of the current room but it is currently ignored for +everything except debugging messages. It is maintained as part of the format +for backwards compatibility. + +Room Bitvector A bitvector (see section 2.4 on ‘Using Bitvectors’), with the +following values: + +1) DARK - The room is dark, players need a light source, or infravision. +2) DEATH - Players die on entry. All dropped items will be junked. +3) NO_MOB - Mobs will not enter this room. This can be used to define the + zone where any mob can wander. For example, lower level mobs + can be set so that only they can wander on the first level of + a dungeon by making the stairwells NO_MOB. A NO_MOB room will + also prevent pets and charmed mobs from following players. +4) INDOORS - Weather messages will not be sent to room, always lighted. + Call lightning will not work. +5) PEACEFUL - No violence will work here. Use sparingly. +6) SOUNDPROOF - Tell, gossip, shout, holler will not be heard here. This flag + should be used sparingly also, it is very annoying IMHO. +7) NO_TRACK - Track will never find a path through this room. +8) NO_MAGIC - No magic will work here. +9) TUNNEL - Only one person allowed at one time. +10) PRIVATE - Only room for 2 players/mobs i.e. a tunnel or small space. +11) GODROOM - Only allows GODS of level 33 or above to goto. +12) HOUSE - DO NOT USE. Room is a house. \ automatically +13) HCRSH - DO NOT USE. House needs saving. > set by +14) ATRIUM - DO NOT USE. The door to a house. / hcontrol +15) OLC - DO NOT USE. Is room modifiable. +16) * - DO NOT USE. Breadth-first search mark used by track and hunt. + +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 (the movement loss is controlled by +the array movement_loss[] in the file constants.c). The Sector Type can be one +of the following: + + This defines movement point, light, and boat requirements. +The following terrains may be selected (only one): + + Movement Points +0 INSIDE Indoors (no light required) 1 +1 CITY The streets of a city. 1 +2 FIELD An open field. 2 +3 FOREST A dense forest. 3 +4 HILLS Low foothills. 4 +5 MOUNTAIN Steep mountain regions. 6 +6 WATER_SWIM Water (swimmable). 4 +7 WATER_NOSWIM Unswimmable water. Boat required. 1 +8 FLYING Wheee! Requires AFF_FLYING. 1 +9 UNDERWATER Underwater requires AFF_SCUBA. 5 + +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 signaled with the letter +S. The Direction Fields and Extra Descriptions are described in more detail in +the following sections. + +3.2 The Direction Field +The general format of a direction field is: + +D + +~ +~ + + +Direction Number The compass direction that this Direction Field describes. It +must be one of the following numbers: + +0 North +1 East +2 South +3 West +4 Up +5 Down + +General Description The description shown to the player when she types “look +”. This should not be confused with the room description itself. +Unlike the room description which is automatically viewed when a player walks +into a room, the General Description of an exit is only seen when a player +looks in the direction of the exit (e.g., “look north”). Exit descriptions +take priority over extra descriptions. So if you creat a extra description for +north the player will see the exit description only when they "look north." + +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, such as: door oak big~ + +Door Flag Can take one of three values (0, 1 or 2): + +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 trigger assigned to the room or an object in +the room. + +1 Normal doors that can be opened, closed, locked, unlocked, and 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 Section 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 ” 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 +”, where 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 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 +,” where is one of the keywords specified in the Keyword +List of this Esection. + +3.4 World File Example +Here is a sample entry from a tbaMUD 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”. + +4 Mobile (Monster) Files + +4.1 The Format of a Mobile +The format of a mobile is: + +# +~ +~ + +~ + +~ + +{type-specific information; see below for details} + +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. + +Keywords 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 in this list; it cannot be identified by a word that appears only in +its name. Great care should be taken to ensure that the spellings of names and +keywords match. Fill words such as “the,” “a,” and “an” should not appear in +the Keywords 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 such as those +above. + +Long Description The description displayed when a mobile is in its default +position; for example, “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; for +example, “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 by typing “look at .” + +Mob flags bitvector (see section 2.4 on ‘Using Bitvectors’). With the 128 bit +expansion you actually have 4 separate bitvectors, i.e. <0 0 0 0> only the +first bitvector is used and the other three are for future expansion. + +L) NPC Flags : ISNPC +1) 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 + be written. Instead of using this use scripts. DO NOT SET. +2) SENTINEL Mob will not leave the room. +3) SCAVENGER The mob should pick up valuables it finds on the ground. More + expensive items will be taken first. +4) ISNPC Default is on, do not change. HELP ISNPC. +5) AWARE Set for mobs which cannot be backstabbed. +6) AGGR Mob will hit all players in the room it can see. See also the + WIMPY bit. +7) STAY_ZONE Mob will not leave its zone. All mobs should have this flag or + the SENTINEL flag. This keeps AGGRESSIVE mobs from wandering + into a newbie zone. +8) 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). +9) AGGR_EVIL Mob will attack players that are evil-aligned. +10) AGGR_GOOD Mob will attack players that are good-aligned. +11) AGGR_NEU Mob will attack players that are neutrally aligned. +12) MEMORY Mob will remember players that initiate attacks on it, and will + attack that player if it ever runs into him again. +13) 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. +14) NOCHARM Mob cannot be charmed. +15) NOSUMMON Mob cannot be summoned. +16) NOSLEEP Sleep spell cannot be cast on mob. +17) NOBASH Large mobs such as trees that cannot be bashed. +18) NOBLIND Mob cannot be blinded. + +Affection Flags Bitvector A bitvector (see section 2.4 on ‘Using Bitvectors’) +which is also 4 bitvectors <0 0 0 0> with only the first being used with the +following values: + +M) AFF Flags : NOBITS +1) BLIND Mob is blind. +2) INVIS Mob is invisible. +3) DET-ALIGN NOT USED. +4) DET-INVIS Mob can see invisible characters and objects. +5) DET-MAGIC Mob is sensitive to magical presence. +6) SENSE-LIFE Mob can sense hidden life. +7) WATWALK Mob can traverse unswimmable water sectors. +8) SANCT Mob is protected by sanctuary (takes half damage). + Adds text ...it glows with a bright light! to l-desc. +9) GROUP Reserved for internal use. Do not set. +10) CURSE Mob is cursed. +11) INFRA Mob can see in dark. +12) POISON Reserved for internal use. Do not set. +13) PROT-EVIL Mob is protected from evil characters. +14) PROT-GOOD Mob is protected from good characters. +15) SLEEP Reserved for internal use. Do not set. +16) NO_TRACK Mob cannot be tracked. +17) UNUSED Unused (room for future expansion). +18) UNUSED Unused (room for future expansion). +19) SNEAK Mob can move quietly without room being informed. +20) HIDE Mob is hidden; can only be seen with sense life. +21) UNUSED Unused (room for future expansion). +22) CHARM Reserved for internal use. Do not set. + +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 tbaMUD expects to find +next (i.e., in the file from the current point to the end of the current +mobile). + +Standard tbaMUD supports two types of mobiles: S (for Simple), and E (for Enhanced). + +4.2 Type S Mobiles +For type S mobs, the type-specific information should be in the following format: + + S + + + + +Level The level of the monster, from 1 to 34. + +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 100 Naked person +AC 0 Very heavily armored person (full plate mail) +AC -100 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 is loaded into the game right up 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 during its life, 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 initially loaded with. + +Experience The number of experience points the mobile is initially loaded with. + +Load Position The position the mobile is in when loaded into the game, which +should be one of the following numbers: + + 0) Dead - Reserved for internal use. Do not set. + 1) Mortally wounded - Reserved for internal use. Do not set. + 2) Incapacitated - Reserved for internal use. Do not set. + 3) Stunned - Reserved for internal use. Do not set. + 4) Sleeping - The monster is sleeping. + 5) Resting - The monster is resting. + 6) Sitting - The monster is sitting. + 7) Fighting - Reserved for internal use. Do not set. + 8) Standing - The monster is standing (DEFAULT). + +Default Position The position to which monsters will return 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. +~ +65738 0 0 0 65536 0 0 0 -200 S +1 20 9 0d0+10 1d2+0 +10 100 +8 8 1 + +This is mobile vnum 3062. The Fido has mob and affect flags set and has an +initial alignment of -200. After the S flag we see that the Fido is level 1, +has a THAC0 of 20, an Armor Class of 9, 0d0+10 hit points (10 hitpoints), and +will do 1d2 hit points of bare hand damage per round. The Fido has 10 gold +and 100 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 tbaMUD 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. The +literal letter Emust then come after all E-specs to signal the end of the mob. + +The format of an E mobile is as follows: + + E + + + +{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 players instead of hitting them. 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. +~ +65738 0 0 0 65536 0 0 0 -200 E +1 20 9 0d0+10 1d2+0 +10 100 +8 8 1 +BareHandAttack: 4 +Str: 18 +E +T 3010 + +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). The T stands for a +trigger followed by the attached trigger number. This is the same format for +rooms and objects also. + +4.6 E-Spec Keywords Valid in tbaMUD +The only keywords supported 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. + +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 6) crush 11) pierce + 1) sting 7) pound 12) blast + 2) whip 8) claw 13) punch + 3) slash 9) maul 14) stab + 4) bite 10) thrash 15) impale + 5) bludgeon + +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, so to modify the message given to players +when they are mauled, attack type number 309 in lib/misc/messages should be +changed. Note that adding new attack types requires code changes and cannot be +accomplished simply by adding new messages to lib/misc/messages (see the tbaMUD +Coding Manual for more information). + +Str, Int, Wis, Dex, Con, Cha The mobile’s Strength, Intelligence, Wisdom, +Dexterity, Constitution and Charisma, respectively. These values should be +between 3 and 18, but can be between 1 and 25 (which is the default statistic +maximum). + +StrAdd The mobile’s strength addition, which can range from 1 to 99. + +5 Object Files + +5.1 The Format of an Object +# +~ +~ +~ +~ + + + +{Zero or more Extra Descriptions and/or Affect Fields} + +There can be an unlimited number of Extra Descriptions and up to 3 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 object file. + +Keywords 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 this list; it cannot be identified by a word that appears only +in its name. Great care should be taken to ensure that the spellings of names +and keywords match. Fill words such as “the,” “a,” and “an” should not appear +in the keywords 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, for example, “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.txt. If no Action Description is present, a +default message will be used: + +Staves: Rasmussen taps three times on the ground. +$n taps $p three times on the ground. +Wands: Rasmussen points at . +$n points $p at $N. +Scrolls: Rasmussen recites . $n recites $p. +Potions: Rasmussen quaffs . +$n quaffs $p. + +For more information on the character codes used in the above strings, see the +act() Function document. 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: + +0 UNDEFINED Do not set. +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 Must be piercing to backstab. +6 FURNITURE Item may be sat on. +7 FREE Do not set. +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 Item is worn, but not armor. +12 OTHER Miscellaneous object with no special properties. +13 TRASH Trash is not bought by shopkeepers. +14 FREE2 Do not set. +15 CONTAINER Item is a container. Be creative, make robes with pockets, etc. +16 NOTE Item is a note HELP OBJ-NOTE for more info. +17 LIQ CONTAINER Item is a drink container. Do not include liquid type in s-desc. +18 KEY Item is a key. +19 FOOD Item is food. +20 MONEY Value set in the C) Applies. Cost not used. Max 1000 coins. +21 PEN Item is a pen. +22 BOAT Item is a boat; allows you to traverse water (noswim). +23 FOUNTAIN Item is a fountain. Set Values to -1 to make it unlimited. + +Extra (Effects) Bitvector A bitvector (see section 2.4 on ‘Using Bitvectors’), +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) GLOW Item is glowing (cosmetic). +2) HUM Item is humming (cosmetic). +3) NORENT Item cannot be rented. +4) NODONATE Item cannot be donated. +5) NOINVIS Item cannot be made invisible. +6) INVISIBLE Item is invisible. +7) MAGIC Item has a magical aura and cannot be enchanted. +8) NODROP Item is cursed and cannot be removed or dropped. +9) BLESS Item is blessed (cosmetic). +10) ANTI_GOOD Item cannot be used by good-aligned characters. +11) ANTI_EVIL Item cannot be used by evil-aligned characters. +12) ANTI_NEUTRAL Item cannot be used by neutral align characters. +13) ANTI_MAGIC_USER Item cannot be used by the Mage class. +14) ANTI_CLERIC Item cannot be used by the Cleric class. +15) ANTI_THIEF Item cannot be used by the Thief class. +16) ANTI_WARRIOR Item cannot be used by the Warrior class. +17) NOSELL Shopkeepers will not buy or sell the item. + +Wear Bitvector A bitvector (see section 2.4 on ‘Using Bitvectors’) with +the following values: + + 1) TAKE Item can be taken (picked up off the ground) (DEFAULT). + 2) FINGER Item can be worn on the fingers. (2 positions) + 3) NECK Item can be worn around the neck. (2 positions) + 4) BODY Item can be worn on the body, (AC multiplier = 3).* + 5) HEAD Item can be worn on the head, (AC multiplier = 2).* + 6) LEGS Item can be worn on the legs, (AC multiplier = 2).* + 7) FEET Item can be worn on the feet. + 8) HANDS Item can be worn on the hands. + 9) ARMS Item can be worn on the arms. +10) SHIELD Item can be used as a shield. +11) ABOUT Item can be worn about the body. +12) WAIST Item can be worn around the waist. +13) WRIST Item can be worn around the wrist. (2 positions) +14) WIELD Item can be wielded; e.g. weapons. +15) HOLD Item can be held (the "hold" command). + +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. + +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 spell numbers for use with magical objects can be found in the +Appendix Spell Numbers. + +LIGHT: (Type Flag 1) +value 0-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 spells are cast. +value 1: Spell number 1 +value 2: Spell number 2 +value 3: Spell number 3 + +WAND: (Type Flag 3) +value 0: Level at which wand’s spell is cast +value 1: Charge capacity of wand (>= 1) +value 2: Current number of charges remaining +value 3: Spell number + +STAFF: (Type Flag 4) +value 0: Level at which staff’s spell is cast +value 1: Charge capacity of staff (>= 1) +value 2: Current number of charges remaining +value 3: Spell 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 6) crush 11) pierce + 1) sting 7) pound 12) blast + 2) whip 8) claw 13) punch + 3) slash 9) maul 14) stab + 4) bite 10) thrash 15) impale + 5) bludgeon + +FURNITURE: (Type Flag 6) +value 0: Number of people that can sit on this object. +value 1-3: unused + +FREE: (Type Flag 7) unimplemented (do not use) + +TREASURE: (Type Flag 8) +value 0-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 AC; values <0 damage the AC (cursed armor, for example). +value 1-3: unused + +POTION: (Type Flag 10) +value 0: Level at which the potion’s spells are cast. +value 1: Spell number 1 +value 2: Spell number 2 +value 3: Spell number 3 +If less than 3 spells are desired, set unused values to -1. + +WORN: (Type Flag 11) +value 0-3: unused + +OTHER: (Type Flag 12) +value 0-3: unused + +TRASH: (Type Flag 13) +value 0-3: unused + +FREE2: (Type Flag 14) unimplemented (do not use) + +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 can’t be picked. +4 CLOSED Container is closed when loaded. +8 LOCKED Container is locked when loaded. +value 2: The vnum of the key object that opens this container. -1 if it has +no key. +value 3: Unused + +NOTE: (Type Flag 16) +value 0-3: unused + +DRINK CONTAINER: (Type Flag 17) See Appendix Item Values for Drink Containers. + +KEY: (Type Flag 18) +value 0-3: unused + +FOOD: (Type Flag 19) +value 0: The number of hours of hunger satisfied by this food. +value 1-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-3: unused + +PEN: (Type Flag 21) +value 0-3: unused + +BOAT: (Type Flag 22) +value 0-3: unused + +FOUNTAIN: (Type Flag 23) See Appendix Item Values for Drink Containers. + +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 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 +,” where 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. There can be up to three affect +fields per object. The format of an Object Affect Field is: + +A + + +Location The aspect of the character affected by the object. It must be one of +the following numbers: + +0 NONE No effect - used to quit the menu. +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 MAXMANA Apply to MAX mana points. +13 MAXHIT Apply to MAX hit points. +14 MAXMOVE Apply to MAX movement points. +15 GOLD Unimplemented. Do not use. +16 EXP Unimplemented. Do not use. +17 ARMOR Apply to armor class (AC). negative is better. +18 HITROLL Apply to hitroll. +19 DAMROLL Apply to damage roll bonus. +20 SAVING_PARA Apply to save throw: paralysis. negative is better. +21 SAVING_ROD Apply to save throw: rods. negative is better. +22 SAVING_PETRI Apply to save throw: petrify. negative is better. +23 SAVING_BREATH Apply to save throw: breathe. negative is better. +24 SAVING_SPELL Apply to save throw: spells. negative is better. + +Value The number used to modify the Location. + +For example, an A field which reads: + +A +12 50 + +will add 50 to the maximum mana of the character. + +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 00 +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 +A +4 2 + +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 Affect fields indicate +that this object affects breath weapon saving throws by -4 and increases Wisdom +by 2. + +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 +# +~ +~ + +{zero or more zone commands} +S + +Lines starting with *are considered comments and ignored. Zone commands +themselves may also be followed by a comment which does not need to be +delimited by a single *. Please note that the initial lines of a zone file +may not have comments on them at all. 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; for example, +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. + +Bottom Room Number The lowest numbered room belonging to this zone. This should +be a larger number than the TopRoom of the previous zone. + +Top Room Number The highest numbered room belonging to this zone. A room +belongs to a zone if its virtual number falls in the range from Bottom Room +to Top Room of that zone. + +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, 1, or 2): + +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 only after it reaches its Lifespan and after the zone becomes +deserted, i.e. as soon as there are no players located within the zone (checked +once every minute). This can make a zone more “fair” because it will keep the +hard mobs from reappearing in the zone until everyone leaves, but on a busy MUD +it can prevent a zone from ever being reset since the zone may never stay empty +for more than one minute. + +2 Reset the zone as soon as it reaches its Lifespan, regardless of who or what +is in it. This is the most commonly used Reset Mode. + +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, and R. + +M: load a mobile +Format: M 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 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 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 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: + +You are using: Trigedit positions + [200] a generic light light 0 + [201] a generic ring rfinger 1 + [202] a generic ring lfinger 2 + [203] a generic necklace neck1 3 + [204] a generic necklace neck2 4 + [205] a set of generic body armor body 5 + [206] a generic helm head 6 + [207] a pair of generic leggings legs 7 + [208] a pair of generic boots feet 8 + [209] a pair of generic gloves hands 9 + [210] a pair of generic sleeves arms 10 + [211] a generic shield shield 11 + [212] a generic cape about 12 + [213] a generic belt waist 13 + [214] a generic wristguard rwrist 14 + [215] a generic wristguard lwrist 15 + [216] a generic weapon wield 16 + [217] a generic staff hold 17 + inv 18 + +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 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 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 an object with vnum Obj Vnum exists +in the room with vnum Room Vnum, it will be removed from the room and purged. + +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 at any given time. +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 + +tbaMUD 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. Version +3 shops must have a special marker (described below) to tell the server that +the file is in the new format. + +7.1 tbaMUD Shop Format +The overall format of a v3 Shop File is: + +tbaMUD Shop File~ + + +. +. +. + +$~ + + +Version 3 shop files start with the literal line “tbaMUD v3.0 Shop File˜”, +followed by any number of shop definitions, and terminated by $˜. The format +of a shop definition is: + +#~ + + + +. +. + +-1 + + + [Buy Namelist 1] + [Buy Namelist 1] + [Buy Namelist 1] +. +. + [Buy Namelist n] +-1 +~ +~ +~ +~ +~ +~ +~ + + + + + + + +. +. + +-1 +