Updated World and files for 3.55 release. --Rumble

This commit is contained in:
Rumble 2008-01-16 23:19:50 +00:00
parent 453cbdaf0b
commit af18bd91b6
98 changed files with 7739 additions and 4409 deletions

View file

@ -1,10 +1,16 @@
TbaMUD is currently being developed by The Builder Academy. If you need any 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. help, find any bugs, or have ideas for improvement please stop by TBA at
Rumble telnet://tbamud.com:9091 or email rumble@tbamud.com --Rumble
The Builder Academy
builderacademy.net 9091
tbaMUD 3.55 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 [Jan 06 2008] - Rumble
Removed break in oedit_disp_val1_menu ITEM_NOTE that caused a delay. (thanks Rhade) Removed break in oedit_disp_val1_menu ITEM_NOTE that caused a delay. (thanks Rhade)
Fixed tlist when specifying a range. (thanks Rhade) Fixed tlist when specifying a range. (thanks Rhade)
@ -27,6 +33,7 @@ tbaMUD 3.55
[Dec 15 2007] - Rumble [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). 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) Fixed bug where showvnums would not show if attached. (thanks Sryth)
tbaMUD 3.54 tbaMUD 3.54
[Nov 12 2007] - Rumble [Nov 12 2007] - Rumble
Updated users command to fix GET_INVIS_LEV bug. 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.52 release: April, 2007
Version 3.51 release: February, 2007 Version 3.51 release: February, 2007
Version 3.5 release: December, 2006 Version 3.5 release: December, 2006
Version 3.1 (yes, no beta pl): November 18, 2002 See releases.txt
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)

View file

Binary file not shown.

857
doc/FAQ.txt Normal file
View file

@ -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

View file

View file

@ -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 Compiling tbaMUD
under Microsoft Windows using CygWin 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. tbaMUD compiles under Cygwin without needing any special modifications.
This free pseudo-Unix environment for Windows includes the "bash" shell, "gcc" 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 and a full set of programs and libraries for Windows users to compile and run
to compile and run programs from source code intended for Unix. It can be programs from source code intended for Unix. It can be downloaded from:
downloaded from: http://cygwin.com/ http://cygwin.com/
Compiling tbaMUD under Cygwin is basically the same as it would be under Compiling tbaMUD under Cygwin is basically the same as it would be under
another form of Unix: another form of Unix:
1) Download from: http://cygwin.com/setup.exe 1) Download from: http://cygwin.com/setup.exe
Select open. Select open.
Install from Internet Install from Internet.
Select "just me" "dos" Choose a root directory, I use C:\
Choose a mirror site. Select "just me" "Unix / binary"
Leave selected package as default. Select a local package directory, I use C:\WINDOWS\Temp
Select the following from devel: autoconf, gcc, make, and patchutils Leave Direct Connection selected.
Click Next. Choose a download site.
Install, follow prompts. 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: 2) Download the latest version of tbaMUD from http://tbamud.com
http://cwg.lazuras.org/modules.php?name=Downloads&d_op=viewdownload&cid=16 Create an account on tbamud.com as it will be a great resource for any
Join the forums as they will be a great resource for any problems that you problems that you encounter. Once you download and uncompress tbaMUD (I use
encounter. Once you download and uncompress tbaMUD (I use winRAR) read winRAR) read through the /doc directory.
through the /doc directory.
3) Start the Cygwin "bash" shell by double clicking the Cygwin Icon. This will 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 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 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 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 example "C:\tbaMUD". "cd c:/tbaMUD" then "dir" to list the files. You should
one called configure. DO NOT go into the SRC directory yet. 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: 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: clean:
The above is a "patch" file. All you need to do is add the two lines with 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 the +'s to your file Makefile.in (but delete the +'s). If you are still
links on how to patch: http://www.circlemud.org/cdp/wtfaq/handpatch.html 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 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

Binary file not shown.

184
doc/act.txt Normal file
View file

@ -0,0 +1,184 @@
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 act() Function
Originally by Alex Fletcher. Based on text from the DikuMud authors
This document is intended to give an overview of the act()function and give a
summary of the various flags and the associated descriptive control characters.
The act() function is one of the primary functions for sending a message from
the game to a character or number of characters in a room.
Contents
1 The act()Function
1.1 Overview
1.2 The Function
1.3 TheParameters
1.4 Control Characters
1.5 Examples
1 The act()Function
1.1 Overview
The act() function is used to process and send strings of text to characters
in a room. It can be used to send the same basic string to a number of
characters filling in certain segments designated by control characters
in different ways, dependant on what each character can see and who each
character is. Once the text string passed to the function has been parsed, it
is capitalized and a newline is added to its tail.
1.2 The Function
The act()function is found in the comm.c source file and is described as:
void act(const char *str, int hide_invisible, struct char_data *ch,
struct obj_data *obj, const void *vict_obj, int type)
These pieces are used as follows:
str: This is the basic string, a null terminated character array, including
control characters (see section 1.4 on Control Characters), to be sent to
characters designated by the targets.
hide_invisible: A TRUE or FALSE value indicating whether or not to hide the
entire output from any characters that cannot see the “performing character”.
ch: The “performing character”. This is the character that the output string
is associated with. The character is used to determine the room for the output
of the action in question.
obj: An object (an actual item obj_data) used in the course of the action.
vict_obj: This can be either a character involved in the action, another
object, or even a predefined string of text.
type: One of TO_VICT, TO_CHAR, TO_NOTVICT, or TO_ROOM. This indicates who it
is to be targeted at.
1.3 The Parameters
Of the various parameters passed to the act() function, the str is the most
important, as it is the basis for the actual final output. If this parameter
is a null-pointer or points to a null-character, then the function returns
immediately. The next important parameter is the ch parameter. This, as
mentioned, points to the central character associated with the output string
and action.
obj is an object of type struct obj_data *that is passed to the function. If
there is no object to pass to the function, then a NULL or 0 should be passed
in this location.
The next parameter vict_objcan be a number of things ranging from a game object
(strcut obj_data *), through to a character (struct char_data *), and even a
null terminated character array (char *).
Do note, however, that obj and vict_obj are both ignored if there is no control
character reference (see section 1.4 Control Characters) to them and the type
is set to TO_ROOM or TO_CHAR. In these cases, NULL should be supplied as the
input to the function.
The hide_invisible flag dictates whether or not the action output should be
hidden from characters that cannot see ch. If the flag is set to TRUE
(non-zero), then this is the case.
The type determines who the output is to be sent to. There are four options for
this (all defined in comm.h) described below:
TO_ROOM: This sends the output to everybody in the room, except ch.
TO_VICT: This option sends the output to the character pointed to by vict_obj.
In this case, vict_obj must point at a character rather than an object.
TO_NOTVICT: In another case where vict_obj must point to a character. This
sends the output to everybody in the room except ch and vict_obj.
TO_CHAR: Finally, this option sends the output to the ch.
TO_SLEEP: This is a special option that must be combined with one of the above
options. It tells act() that the output is to be sent even to characters that
are sleeping. It is combined with a bitwise or. i.e. TO_VICT | TO_SLEEP.
When the string has been parsed, it is capitalized and a newline is added.
1.4 Control Characters
In a manner similar to the printf() family of functions, act() uses control
characters. However, instead of using the % symbol, act() uses the $ character
to indicate control characters.
$n Write name, short description, or “someone”, for ch, depending on whether
ch is a PC, a NPC, or an invisible PC/NPC.
$N Like $n, except insert the text for vict_obj.*
$m “him,” “her,” or “it,” depending on the gender of ch.
$M Like $m, for vict_obj.*
$s “his,” “her,”or “it,” depending on the gender of ch.
$S Like $s, for vict_obj.*
$e “he,” “she,” “it,” depending on the gender of ch.
$E Like $e, for vict_obj.*
$o Name or “something” for obj, depending on visibility.
$O Like $o, for vict_obj.*
$p Short description or “something” for obj.
$P Like $p for vict_obj.*
$a “an” or“a”, depending on the first character of objs name.
$A Like $a, for vict_obj.*
$T Prints the string pointed to by vict_obj.*
$F Processes the string pointed to by vict_obj with the fname() function prior
to printing.*
$u Processes the buffer and uppercases the first letter of the previous word
(the word immediately prior to the control code). If there is no previous word,
no action is taken.
$U Processes the buffer and uppercases the first letter of the following word
(the word immediately after to the control code). If there is no following
word, no action is taken.
$$ Print the character $.
NOTE*: vict_obj must be a pointer of type struct char_data *.
1.5 Examples
In all of the following examples, ch points to male character Ras, vict always
points to the female character Anna. obj1 is a small sword, and obj2 is a small
sack.
act("$n smiles happily.", TRUE, ch, NULL, NULL, TO_ROOM);
This is sent to the room that Ras is currently in, and the string that they see
if they can see him is:
Ras smiles happily.
If a character cannot see Ras, then they will not see the action at all.
act("You kiss $M.", FALSE, ch, NULL, vict, TO_CHAR);
In this action, Ras is kissing Anna, and Ras will see:
You kiss her.
act("$n gives $p to $N.", TRUE, ch, obj1, vict, TO_NOTVICT);
The output from this string is sent to everyone in the room except for Ras and
Anna. Of course, if they cannot see Ras, then they will not see any output at
all. The string that each character in the room will see is:
Ras gives a small sword to Anna.
If a character cannot see Anna, then someone will be used in place of her name,
and if they cannot see the small sword, then something will be used in its
place.
act("$n gives you $p.", FALSE, ch, obj1, vict, TO_VICT);
Similar to the prior example, this is the output for Anna. She will see this
even if she cannot see Ras, and the output that she will get is:
Ras gives you a small sword.
Just as per the last example, if she cannot see Ras, someone will be used in
place of his name, and if she cannot see the sword, then something will be
used in its place.
act("$n puts $p in $s $O.", TRUE, ch, obj1, obj2, TO_ROOM);
This action uses two objects rather than two characters, and is displayed to
the entire room (with the exception of Ras of course). If the character can
see Ras, they will see:
Ras puts a small sword in his small sack.
Otherwise, they will see nothing. Again, as per the prior two examples,
something will be used in place of any objects that the viewing character
cannot see.
act("The $F opens quietly.", FALSE, ch, NULL, EXIT(ch, door)->keyword, 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.

Binary file not shown.

592
doc/admin.txt Normal file
View file

@ -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 Administrators 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, youre 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
Universitys 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 gamers 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 programmers 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: dont 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 youve 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 youre
trying to do if youre reading this document), you should play someone elses
copy of tbaMUD first to become familiar with the codebase.
1.3 So, youre sure you want to run your own MUD?
If youre already an old hand at playing MUDs and youve 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, isnt 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.
Dont 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. Thats 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 havent scared you away yet, and youre 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, “Dont rip off other
peoples 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 Id 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, dont 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 Circles 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 tbaMUDs 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 dont already have them, both of these
utilities can be downloaded from the GNU FTP site <ftp://ftp.gnu.org/pub/gnu/>.
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 youre 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 tbaMUDs root directory, simply type
./configure
If youre 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 youre 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 youre 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 theres a chance that youll have problems compiling
tbaMUD if youre using some version of UNIX that Ive never seen before. Its
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 youll find in tbaMUDs
/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 tbaMUDs /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 youre 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 tbaMUDs “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 tbaMUDs 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 <path>] [-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 arent 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
<your-name>".
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, theyre wrong. If
you tell your players that youre going to run a revolutionary MUD that doesnt
have any politics, youre 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. Thats 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. Thats what the “handbook” (Immortal
handbook) is for. Immortals will always try to bend you as far as they can, so
its 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 youre using the autorun script, the boot messages are put into a
file called “syslog”. During tbaMUDs 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 tbaMUDs 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 dont 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 Ive done a
good deal of MUD administration, Ive 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, its a good idea to say something like “Hold on... let me go check the system logs, OK?” because it
reinforces the syslogs presence in the collective psyche of your players.
Back to the point. When someone claims that theyve 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 characters 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, youll 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 isnt critical, but it is interesting to look at the usage
patterns to determine when your peak playing hours are. If youre good at using
cut and other Unix utilities, you can even dazzle your friends by graphing
your MUDs 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 youd
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 youve 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 thatll be necessary to keep your MUD
running smoothly. Make sure not to get so caught up in being a God that you
forgot youre 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
youve 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, dont 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
youve 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.

Binary file not shown.

1903
doc/building.txt Normal file

File diff suppressed because it is too large Load diff

Binary file not shown.

1678
doc/coding.txt Normal file

File diff suppressed because it is too large Load diff

Binary file not shown.

123
doc/color.txt Normal file
View file

@ -0,0 +1,123 @@
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
Using Color In tbaMUD
Originally by Jeremy Elson
This document is a description of how to write C code which displays messages
to players in color in the tbaMUD game engine. Its intended audience is for
Coders of tbaMUD.
tbaMUD allows you to create colorful messages by using ANSI control sequences.
Each player may select what “level” of color he/she desires from the four
levels “off,” “brief,” “normal,” and “complete.” Each player can select his/her
color level by using the TOGGLE COLOR command from within the MUD; you as the
programmer must decide which messages will be colored for each of the color
levels.
All files in which you wish to use color must have the line:
#include "screen.h"
This should be put in after all other includes in the beginning of the file.
There are 8 colors available “normal,” red, green, yellow, blue, magenta,
cyan and white. They are accessible by sending control sequences as part of
another string, for example:
sprintf(buf, "If youre %shappy%s and you know it clap "
"%d of your hands.\n\r", x, y, num_of_hands);
send_to_char(ch, buf);
In this example, x and y are the “on” and “off” sequences for the color you
want. There are 2 main series of color macros available for you to use (dont
actually use “x” and “y,” of course!): the K series and the CC series. The CC
(Conditional Color) series is recommended for most general use.
The name of the actual sequence starts with the name of its series, plus a
3-letter color code, as follows:
Normal: NRM
Red: RED
Yellow: YEL
Green: GRN
Blue: BLU
Magenta: MAG
Cyan: CYN
White: WHT
For example, white in the K series is KWHT; blue in the CC series is
CCBLU() (arguments defined below).
The K series requires no arguments, and is simply a macro to the ANSI color
code. Therefore, if you use a K-series color code, the color will ALWAYS be
sent, even if the person youre sending it to has color off. This can very bad.
Some people who do not have ANSI-compatible terminals will see garbage
characters instead of colors. If the terminal correctly ignores ANSI color
codes, then nothing will show up on their screen at all. The K series is mainly
used to print colors to a string if the players color level will later be
tested manually (for an example, see do_gen_com in act.comm.c).
The recommended series is the CC series (i.e. CCNRM(), CCRED(), etc.) The CC
series macros require two arguments a pointer to the character to whom the
string is being sent, and the minimum color level the player must be set to in
order to see the color. Color sent as 'brief' (formerly known as sparse it was
changed for consistancy with the syslog command) (C_SPR) will be seen by people
with color set to sparse, normal, or complete; color sent as normal (C_NRM)
will be seen only by people with color set to normal or complete; color sent as
complete (C_CMP) will be seen only by people with color set to complete.
To illustrate the above, an example is in order:
#include "screen.h"
/* include screen.h in all files that you use color in */
ACMD(do_showcolor)
{
char buf[300];
sprintf(buf, "Dont you just love %scolor%s, %scolor%s, " "%sCOLOR%s!\n\r",
CCBLU(ch, C_CMP), CCNRM(ch, C_CMP), CCYEL(ch, C_NRM), CCNRM(ch, C_NRM),
CCRED(ch, C_SPR), CCNRM(ch, C_SPR));
send_to_char(ch, buf);
}
What does this do? For people with color set to Complete, it prints:
Dont you just love color, color, COLOR! (blue) (yellow) (red)
People who have color set to Normal will see:
Dont you just love color, color, COLOR! (yellow) (red)
People who have color set to Sparse will see:
Dont you just love color, color, COLOR! (red)
People who have color set to Off will see:
Dont you just love color, color, COLOR! (no color, as youd expect)
There are several common pitfalls with using the CC series of color macros:
Do not confuse CCNRM with C_NRM. CCNRM() is a macro to turn the color back to
normal; C_NRMis a color level of “normal.” Always make sure that every pair of
“on” and “off” codes are at the same color level. For example:
WRONG: sprintf(buf, "%sCOLOR%s\n\r", CCBLU(ch, C_NRM), CCNRM(ch, C_CMP));
This is wrong because if someone has their color level set to Normal, the CCBLU
code will be sent but the CCNRM command will not, causing all subsequent output
to be blue.
WRONG: sprintf(buf, "%sCOLOR%s\n\r", CCBLU(ch, C_CMP), CCNRM(ch, C_NRM));
The above statement is also wrong, although not as bad. In this case, someone
with color set to Normal will (correctly) not get the CCBLU code, but will then
unnecessarily get the CCNRM code. Never send a color code if you dont have to.
The codes are several bytes long, and cause a noticeable pause at 2400 baud.
This should go without saying, but dont ever send color at the C_OFF level.
Special precautions must be taken when sending a colored string to a large
group of people. You cant use the color level of “ch” (the person sending the
string) each person receiving the string must get a string appropriately
colored for his/her level. In such cases, it is usually best to set up two
strings (one colored and one not), and test each players color level
individually (see do_gen_comin act.comm.c for an example).

335
doc/debugging.txt Normal file
View file

@ -0,0 +1,335 @@
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 Art of Debugging
Originally by Michael Chastain and Sammy
The following documentation is excerpted from Merc 2.0s hacker.txt file. It
was written by Furey of MERC Industries and is included here with his
permission. We have packaged it with tbaMUD (changed in a couple of places,
such as specific filenames) because it offers good advice and insight into the
art and science of software engineering. More information about tbaMUD,
can be found at the tbaMUD home page http://tbamud.com.
1 “Im running a Mud so I can learn C programming!”
Yeah, right. The purpose of this document is to record some of our knowledge,
experience and philosophy. No matter what your level, we hope that this
document will help you become a better software engineer. Remember that
engineering is work, and no document will substitute for your own thinking,
learning and experimentation.
2 How to Learn in the First Place
Play with something.
Read the documentation on it.
Play with it some more.
Read documentation again.
Play with it some more.
Read documentation again.
Play with it some more.
Read documentation again.
Get the idea?
The idea is that your mind can accept only so much “new data” in a single
session. Playing with something doesnt introduce very much new data, but it
does transform data in your head from the “new” category to the “familiar”
category. Reading documentation doesnt make anything “familiar,” but it
refills your “new” hopper.
Most people, if they even read documentation in the first place, never return
to it. They come to a certain minimum level of proficiency and then never
learn any more. But modern operating systems, languages, networks, and even
applications simply cannot be learned in a single session. You have to work
through the two-step learning cycle many times to master it.
3 Basic Unix Tools
man gives you online manual pages.
grep stands for “global regular expression print;” searches for strings in text
files.
vi, emacs, jove use whatever editor floats your boat, but learn the hell out
of it; you should know every command in your editor.
ctags mags “tags” for your editor which allows you to go to functions by name
in any source file.
>, >>, <, | input and output redirection at the command line; get someone to
show you, or dig it out of “man csh”
These are the basic day-in day-out development tools. Developing without
knowing how to use all of these well is like driving a car without knowing
how to change gears.
4 Debugging: Theory
Debugging is a science. You formulate a hypothesis, make predictions based on
the hypothesis, run the program and provide it experimental input, observe its
behavior, and confirm or refute the hypothesis.
A good hypothesis is one which makes surprising predictions which then come
true; predictions that other hypotheses dont make.
The first step in debugging is not to write bugs in the first place. This
sounds obvious, but sadly, is all too often ignored.
If you build a program, and you get any errors or any warnings, you should fix
them before continuing. C was designed so that many buggy ways of writing code
are legal, but will draw warnings from a suitably smart compiler (such as “gcc”
with the -Wall flag enabled). It takes only minutes to check your warnings and
to fix the code that generates them, but it takes hours to find bugs otherwise.
“Desk checking” (proof reading) is almost a lost art these days. Too bad. You
should desk check your code before even compiling it, and desk-check it again
periodically to keep it fresh in mind and find new errors. If you have someone
in your group whose only job it is to desk-check other peoples code, that
person will find and fix more bugs than everyone else combined.
One can desk-check several hundred lines of code per hour. A top-flight
software engineer will write, roughly, 99% accurate code on the first pass,
which still means one bug per hundred lines. And you are not top flight. So...
you will find several bugs per hour by desk checking. This is a very rapid bug
fixing technique. Compare that to all the hours you spend screwing around with
broken programs trying to find one bug at a time.
The next technique beyond desk-checking is the time-honored technique of
inserting “print” statements into the code, and then watching the logged
values. Within tbaMUD code, you can call printf(), fprintf(), or log()to dump
interesting values at interesting times. Where and when to dump these values
is an art, which you will learn only with practice.
If you dont already know how to redirect output in your operating system, now
is the time to learn. On Unix, type the command “man csh”, and read the part
about the “>” operator. You should also learn the difference between “standard
output” (for example, output from “printf”) and “standard error” (for example,
output from “fprintf(stderr, ...)”).
Ultimately, you cannot fix a program unless you understand how it is operating
in the first place. Powerful debugging tools will help you collect data, but
they cant interpret it, and they cant fix the underlying problems. Only you
can do that.
When you find a bug... your first impulse will be to change the code, kill the
manifestation of the bug, and declare it fixed. Not so fast! The bug you
observe is often just the symptom of a deeper bug. You should keep pursuing the
bug, all the way down. You should grok the bug and cherish it in fullness
before causing its discorporation.
Also, when finding a bug, ask yourself two questions: “What design and
programming habits led to the introduction of the bug in the first place?” And:
“What habits would systematically prevent the introduction of bugs like this?”
5 Debugging: Tools
When a Unix process accesses an invalid memory location, or (more rarely)
executes an illegal instruction, or (even more rarely) something else goes
wrong, the Unix operating system takes control. The process is incapable of
further execution and must be killed. Before killing the process, however, the
operating system does something for you: it opens a file named “core” and
writes the entire data space of the process into it.
Thus, “dumping core” is not a cause of problems, or even an effect of problems.
Its something the operating system does to help you find fatal problems which
have rendered your process unable to continue.
One reads a “core” file with a debugger. The two most popular debuggers on Unix
are adb and gdb, although occasionally one finds dbx. Typically one starts a
debugger like this: “gdb bin/circle” or “gdb bin/circle lib/core”.
The first thing, and often the only thing, you need to do inside the debugger
is take a stack trace. In adb, the command for this is “$c”. In gdb, the
command is “backtrace”. In dbx, the command is “where”. The stack trace will
tell you what function your program was in when it crashed, and what functions
were calling it. The debugger will also list the arguments to these functions.
Interpreting these arguments, and using more advanced debugger features,
requires a fair amount of knowledge about assembly language programming.
6 Using GDB
GDB has some online help, though it is not the best. It does at least give
a summary of commands and what they're supposed to do. What follows is
Sammy's short intro to gdb with some bughunting notes following it:
tbaMUD allows multiple core files to be created. Be sure to delete them when
you are done. If you've got a core file, go to your lib directory and type:
> dir
You should see the core files listed, something like:
core.#
To use the core file type:
> gdb ../bin/circle core.#
If you want to hunt bugs in real time (causing bugs to find the cause as
opposed to checking a core to see why the MUD crashed earlier) use:
> gdb bin/circle
If you're working with a core, gdb should show you where the crash occurred.
If you get an actual line that failed, you've got it made. If not, the
included message should help. If you're working in real time, now's the
time to crash the MUD so you can see what gdb catches.
When you've got the crash info, you can type ``where'' to see which function
called the crash function, which function called that one, and so on all the
way up to ``main()''.
I should explain about ``context'' You may type ``print ch'' which you
would expect to show you the ch variable, but if you're in a function that
doesn't get a ch passed to it (real_mobile, etc), you can't see ch because
it's not in that context. To change contexts (the function levels you saw
with where) type ``up'' to go up. You start at the bottom, but once you go
up, and up, and up, you can always go back ``down''. You may be able to go
up a couple functions to see a function with ch in it, if finding out who
caused the crash is useful (it normally isn't).
The ``print'' command is probably the single most useful command, and lets
you print any variable, and arithmetic expressions (makes a nice calculator
if you know C math). Any of the following are valid and sometimes useful:
print ch (fast way to see if ch is a valid pointer, 0 if it's not)
print *ch (prints the contents of ch, rather than the pointer address)
print ch->player.name (same as GET_NAME(ch))
print world[ch->in_room].number (vnum of the room the char is in)
etc..
Note that you can't use macros (all those handy psuedo functions like GET_NAME
and GET_MAX_HIT), so you'll have to look up the full structure path of
variables you need.
Type ``list'' to see the source before and after the line you're currently
looking at. There are other list options but I'm unfamiliar with them.
There are only a couple of commands to use in gdb, though with some patience
they can be very powerful. The only commands I've ever used are:
run well, duh.
print [variable] also duh, though it does more than you might think
list shows you the source code in context
break [function] set a breakpoint at a function
clear [function] remove a breakpoint
step execute one line of code
cont continue running after a break or ctrl-c
I've run into nasty problems quite a few times. The cause is often a memory
problem, usually with pointers, pointers to nonexistent memory. If you free
a structure, or a string or something, the pointer isn't always set to NULL,
so you may have code that checks for a NULL pointer that thinks the pointer
is ok since it's not NULL. You should make sure you always set pointers to
NULL after freeing them.
Ok, now for the hard part. If you know where the problem is, you should be
able to duplicate it with a specific sequence of actions. That makes things
much easier. What you'll have to do is pick a function to ``break'' at.
The ideal place to break is immediately before the crash. For example, if
the crash occurred when you tried to save a mob with medit, you might be
able to ``break mobs_to_file''. Try that one first.
When you `medit save', the MUD will hang. GDB will either give you segfault
info, or it will be stopped at the beginning of mobs_to_file. If it
segfaulted, pick an earlier function, like copy_mobile, or even do_medit.
When you hit a breakpoint, print the variables that are passed to the
function to make sure they look ok. Note that printing the contents of
pointers is possible with a little playing around. For example, if you
print ch, you get a hex number that shows you the memory location where ch
is at. It's a little helpful, but try print *ch and you'll notice that it
prints the contents of the ch structure, which is usually more useful.
print ch->player will give you the name of the person who entered the
command you're looking at, and some other info. If you get a no ch in this
context it is because the ch variable wasn't passed to the function you're
currently looking at.
Ok, so now you're ready to start stepping. When GDB hit your breakpoint, it
showed you the first line of executable code in your function, which will
sometimes be in your variable declarations if you initialized any variables
(ex: int i = 0). As you're stepping through lines of code, you'll see one
line at a time. Note that the line you see hasn't been run yet. It's
actually the _next_ line to be executed. So if the line is a = b + c;,
printing a will show you what a was before this line, not the sum of b and
c. If you have an idea of where the crash is occurring, you can keep
stepping till you get to that part of the code (tip: pressing return will
repeat the last GDB command, so you can type step once, then keep pressing
return to step quickly). If you have no idea where the problem is, the
quick and dirty way to find your crash is to keep pressing return rapidly
(don't hold the eturn key or you'll probably miss it). When you get the seg
fault, you can't step any more, so it should be obvious when that happens.
Now that you've found the exact line where you get the crash, you should
start the MUD over and step more slowly this time. What I've found that
works really well to save time is to create a dummy function. This one will
work just fine:
void dummy(void){}
Put that somewhere in the file you're working on. Then, right before the
crash, put a call to dummy in the code (ex: dummy();). Then set your
breakpoint at dummy, and when you hit the breakpoint, step once to get back
to the crashing code.
Now you're in total control. You should be looking at the exact line that
gave you the crash last time. Print *every* variable on this line. Chances
are one of them will be a pointer to an unaccessable memory location. For
example, printing ch->player.name may give you an error. If it does, work
your way back and print ch->player to make sure that one's valid, and if it
isn't, try printing ch.
Somewhere in there you're going to have an invalid pointer. Once you know
which one it is, it's up to you to figure out why it's invalid. You may have
to move dummy() up higher in the code and step slowly, checking your pointer
all the way to see where it changes from valid to invalid. You may just
need to NULL a free'd pointer, or you may have to add a check for a NULL
pointer, or you may have screwed up a loop. I've done all that and more :)
Well, that's it in a nutshell. There's a lot more to GDB that I haven't
even begun to learn, but if you get comfortable with print and stepping you
can fix just about any bug. I spent hours on the above procedure trying to
get my ascii object and mail saving working right, but it could have taken
weeks without gdb. The only other suggestion I have is to check out the
online gdb help. It's not very helpful for learning, but you can see what
commands are available and play around with them to see if you can find any
new tools.
7 Profiling
Another useful technique is “profiling,” to find out where your program is
spending most of its time. This can help you to make a program more efficient.
Here is how to profile a program:
1. Remove all the .o files and the “circle” executable:
make clean
2. Edit your Makefile, and change the PROFILE=line:
PROFILE = -p
3. Remake circle:
make
4. Run circle as usual. Shutdown the game with the shutdown command when you
have run long enough to get a good profiling base under normal usage
conditions. If you crash the game, or kill the process externally, you wont
get profiling information.
5. Run the profcommand:
prof bin/circle > prof.out
6. Read prof.out. Run “man prof” to understand the format of the output. For
advanced profiling, you can use “PROFILE = -pg” in step 2, and use the “gprof”
command in step 5. The “gprof” form of profiling gives you a report which lists
exactly how many times any function calls any other function. This information
is valuable for debugging as well as performance analysis.
Availability of “prof” and “gprof” varies from system to system. Almost every
Unix system has “prof”. Only some systems have “gprof”.
7 Books for Serious Programmers
Out of all the thousands of books out there, three stand out:
Kernighan and Plaugher, “The Elements of Programming Style”
Kernighan and Ritchie, “The C Programming Language”
Brooks, “The Mythical Man Month”

Binary file not shown.

133
doc/files.txt Normal file
View file

@ -0,0 +1,133 @@
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
tbaMUD File Manifest
The main tbaMUD/ directory has the following subdirectories and files:
autorun - Shell script to run the MUD (./autorun &).
FAQ - Frequently Aske Questions with answers.
README - Information for the new tbaMUDder.
changelog - A log of changes that can be added to and viewed in game.
syslog - The current system log. Also viewed in game with the file command.
bin/ - Directory of all the compiled programs (binaries).
doc/ - Documentation.
lib/ - MUD data.
log/ - System logs.
src/ - Source code.
The bin/directory contains only binaries: circle (the main MUD) and its
utilities, which are described in utils.txt.
The doc/ directory has its own README file, describing the contents of each
of the documentation files.
etc/ - Files maintained by the game which you should not touch while the
game is running.
house/ - Crash-save files for player houses.
misc/ - Miscellaneous database files such as fight messages, invalid names,
and socials.
plrfiles/ - ASCII files which combined the player, alias, and variable files.
plrobjs/ - The hierarchy containing player object files (i.e. crash files,
rent files, cryo-rent files, etc.) and utility scripts.
text/ - Files meant to be directly read by players such as MOTD (message of
the day), help files, and the immortal handbook. You can change
these files while the game is running, and then have the mud reload
them using the reload command.
world/ - The hierarchy of the world files (mobiles, objects, shops, rooms,
triggers, and zones).
The lib/etc/ directory contains the following files (the MUD actively
maintains these files while it is running; they should not be modified
unless the game is down):
badsites - List of banned sites.
Board.<name> - Binary files with the contents of the bulletin boards.
config - Configuration file you can modify via CEDIT.
hcontrol - Binary file with the state of the house control system.
last - File storing information for the last command. Delete occasionally.
plrmail - Binary file containing player mail.
time - Where the MUD time is saved.
The lib/misc/ directory contains the following files:
bugs - Bugs reported by players with the bug command.
ideas - Ideas from players from idea command.
messages - Spell and skill damage messages.
socials - Text file with text of the socials.
socials.new - New format of socials you can edit via AEDIT.
typos - Typos reported by players with the typo command.
xnames - Text file of invalid names.
The lib/plrobjs/ contains the following files and directories:
a-e \
f-j \
k-o \ Subdirectories where player objects files are stored.
p-t /
u-z /
zzz/
The lib/plrfiles/ combined player, alias, and variable files in ASCII format.
a-e \
f-j \
k-o \ Subdirectories where player data is stored.
p-t /
u-z /
zzz/
The lib/text/ directory contains the following files:
background - Background story (for option 3 from main menu).
credits - Text for credits command.
greetings - Greeting message.
handbook - Text for Immortal Handbook (handbook command).
immlist - Text for immlist command.
imotd - Immortal MOTD --seen by immortals on login.
info - Text for info command.
motd - MOTD --seen by mortals on login.
news - Text for news command.
policies - Text for policy command.
wizlist - Text for wizlist command.
/help/screen - Text for help command as a mortal with no arguments.
/help/iscreen - Text for help command an an immortal with no arguments.
The lib/world/directory contains the following subdirectories:
mob - Contains *.mob files (mobile files)
obj - Contains *.obj files (object files)
shp - Contains *.shp files (shop files)
trg - Contains *.trg files (trigger files)
wld - Contains *.wld files (world files)
zon - Contains *.zon files (zone files)
Each of the 6 subdirectories in the lib/world/ directory also contains two
additional files one called index, which specifies which files in that
directory should be loaded when the MUD boots, and index.mini, which
specifies which files should be loaded if the MUD is booted with the -m
(mini-mud) option.
The log/ directory contains several files of the form syslog.n, where n is a
small number. These are the most recent tbaMUD syslogs. In addition, it
contains the following more permanent system logs:
badpws - Records of bad password attempts.
delete - Players who have self-deleted.
dts - Players who have hit death traps.
errors - MUD system errors ("SYSERR" messages).
godcmds - All logged god commands.
help - All help queries that are not found.
levels - Records of all levels gained by all players.
newplayers - Records of the creation of new players.
olc - OLC log messages.
rentgone - Players who have lost their items in rent.
restarts - List of times at which the MUD rebooted.
rip - Player deaths.
trigger - Trigedit log messages.
usage - Mud system usage (player load & memory usage info).
The src/ directory contains all of the C and header files for the MUD, along
with a Makefile. The src/util/ directory contains source for tbaMUDs utility
programs. See admin.txt for more information on how to compile the MUD. See
utils.txt for more information on how to use tbaMUDs utilities.

Binary file not shown.

Binary file not shown.

View file

@ -237,3 +237,5 @@ If you make any major improvements on DikuMud we would be happy to
hear from you. As you will naturally honor the above rules, you will receive hear from you. As you will naturally honor the above rules, you will receive
new updates and improvements made to the game. new updates and improvements made to the game.
If you have any additions or corrections please stop by the Builder Academy at
telnet://tbamud.com:9091 or email: rumble@tbamud.com -- Rumble

Binary file not shown.

153
doc/porting.txt Normal file
View file

@ -0,0 +1,153 @@
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
Porting tbaMUD to New Platforms
Originally by Jeremy Elson
tbaMUD is a very portable program by design, but is not guaranteed to run on
every platform that exists. This document is for experienced programmers
trying to make tbaMUD work on their platform.
tbaMUD should work on most UNIX platforms without any modifications; simply run
the “configure” script and it should automatically detect what type of system
you have and anything that may be strange about it. These findings are all
stored in a header file called conf.h which is created in the src directory
from a template called conf.h.in. A Makefile is also created from the template
Makefile.in.
Non-UNIX platforms are a problem. Some cant run tbaMUD at all. However, any
multitasking OS that has an ANSI C compiler, and supports non-blocking I/O and
socket-based TCP/IP networking, should theoretically be able to run tbaMUD; for
example, OS/2, AmigaOS, Mac OS (Classic versions; Mac OS X supports tbaMUDs
configure script from the command line), and all versions of Windows.
The port can be very easy or very difficult, depending mainly on whether or nor
your OS supports the Berkeley socket API.
The general steps for porting tbaMUD to a non-UNIX platform are listed below. A
number of tips for porting can be found after the porting steps. Note that we
have already ported tba to Windows, so if youre confused as to how to perform
some of these steps, you can look at what we have done as an example (see the
files README.CYGWIN).
Note that you should not try to do this unless you are an experienced C
programmer and have a solid, working knowledge of the system to which you are
trying to port the code.
Porting the Code
Step 1. Create a “conf.h” file for your system. Copy the template “conf.h.in”
to “conf.h”, and then define or undefine each item as directed by the comments
and based on the characteristics of your system. To write the conf.h file,
youll need to know which header files are included with your system, the
return type of signals, whether or not your compiler supports the const
keyword, and whether or not you have various functions such as crypt()and
random(). Also, you can ignore the HAVE_LIBxxx and HAVE_xxx_PROTO constants at
the end of conf.h.in; they are not used in the code (they are part of UNIX
autoconf).
Step 2. Create a Makefile. Again, copy the template Makefile.in and make any
changes which may be appropriate for your system. Make sure to remove the @xxx@
variables such as @LIBS@, @CC@, @NETLIB@, etc., and replace them with the
appropriate values if necessary.
Step 3. Make the appropriate patches to the code so that the TCP/IP reads and
writes and signal handling are compatible with your system. This is the hardest
part of porting tbaMUD. All of the changes you will need to make will probably
be in the source file comm.c.
Step 4. Test your changes! Make sure that multiple people can log in
simultaneously and that they can all type commands at the same time. No player
should ever have a “frozen” screen just because another is waiting at a prompt.
Leave the MUD up for at least 24 hours, preferably with people playing it, to
make sure that your changes are stable. Make sure that automatic events such as
zone resets, point regeneration, and corpse decomposition are being timed
correctly (a tick should be about 75 seconds). Try resetting all the zones
repeatedly by typing “zr *” many times. Play the MUD and make sure that the
basic commands (killing mobs as a mortal, casting spells, etc.) work correctly.
Step 5. If you are satisfied that your changes work correctly, you are
encouraged to submit them to be included as part of the tbaMUD distribution so
that future releases of tbaMUD will support your platform. This prevents you
from re-porting the code every time a new version is released and allows other
people who use your platform to enjoy tbaMUD as well. To submit your changes
you must make a patch file using the GNU diff program. diff will create a
patch file which can be later used with the patch utility to incorporate
your changes into the stock tbaMUD distribution. For example, if you have a
copy of tbaMUD in the “stock-tba” directory, and your changes are in “my-tba”,
you can create a patch file like this:
diff -u --new-file --recursive stock-tba/src my-tba/src > patch
This will create a file called patch with your patches. You should then try
to use the patch program (the inverse of diff) on a copy of tbaMUD to make
sure that tbaMUD is correctly changed to incorporate your patches. This step is
very important: if you dont create these patches correctly, your work will be
useless because no one will be able to figure out what you did! Make sure to
read the documentation to diff and patch if you dont understand how to use
them. If your patches work, CELEBRATE!!
Step 6. Write a README file for your operating system that describes everything
that has to be done by another user of your operating system to get tbaMUD to
compile from scratch. You should include a section on required hardware,
software, compilers, libraries, etc. Also include detailed, step-by-step
instructions on how to compile and run everything. You can look at the other
README files in the distribution (README.CYGWIN, README.OS2, etc.) for examples
of what your README file should include.
Step 7. You are done! Congratulations! Mail your conf.h, Makefile, patches, and
README file to Rumble at <rumble@tbamud.com> so that they can be included in
future releases of tbaMUD. Please share your work so that other users can
benefit too.
3 Porting Tips
3.1 Making your own CIRCLE_system constant
Each system to which tba is already ported has a CIRCLE_xx constant associated
with it: CIRCLE_UNIX for plain vanilla UNIX tbaMUD, CIRCLE_WINDOWS for MS
Windows, CIRCLE_OS2 for IBM OS/2, and CIRCLE_AMIGA for the Amiga. You must use
a similar constant for your system. At the top of your conf.h, make sure to
comment out “#define CIRCLE_UNIX” and add “#define CIRCLE_YOUR_SYSTEM”.
3.2 ANSI C and GCC
As long as your system has an ANSI C compiler, all of the code (except for
comm.c) should compile with no major complaints. However, tbaMUD was written
using gcc, and some compilers are nitpicky about things that gcc does not care
about (and the other way around). Therefore, you are highly encouraged to use
gcc if at all possible. gcc has been ported to a very large number of
platforms, possibly including yours, and your port will be made much easier if
you use gcc.
3.3 Non-Blocking I/O
Make absolutely sure to use non-blocking I/O; i.e. make sure to enable the
option so that the read() system call will immediately return with an error if
there is no data available. If you do not use non-blocking I/O, read() will
“block,” meaning it will wait infinitely for one particular player to type
something even if other players are trying to enter commands. If your system
does not implement non-blocking I/O correctly, try using the
POSIX_NONBLOCK_BROKEN constant in sysdep.h.
3.4 Timing
tbaMUD needs a fairly precise (on the order of 5 or 10 ms) timer in order to
correctly schedule events such as zone resets, point regeneration (“ticks”),
corpse decomposition, and other automatic tasks. If your system supports the
select() system call with sufficient precision, the default timing code should
work correctly. If not, youll have to find out which system calls your system
supports for determining how much time has passed and replace the select()
timing method.
3.5 Signals and Signal Handlers
A note about signals: Most systems dont support the concept of signals in the
same way that UNIX does. Since signals are not a critical part of how tbaMUD
works anyway (they are only used for updating the wizlist and some other
trivial things), all signal handling is turned off by default when compiling
under any non-UNIX platform (i.e. the Windows and Amiga ports do not use
signals at all.) Simply make sure that CIRCLE_UNIX is not defined in your
conf.h file and all signal code will be ignored automatically.
4 Final Note
IMPORTANT: Remember to keep any changes you make surrounded by #ifdef
statements (i.e. “#ifdef CIRCLE_WINDOWS ... #endif”). If you make absolutely
sure to mark all of your changes with #ifdef statements, then your patches
(once you get them to work) will be suitable for incorporation into the
tbaMUD distribution, meaning that tbaMUD will officially support your platform.

Binary file not shown.

148
doc/releases.txt Normal file
View file

@ -0,0 +1,148 @@
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
CircleMUD Release History
Originally by Jeremy Elson
Abstract
This document lists the release history of CircleMUD and at the end is the post
to rec.games.mud.diku which originally anounced CircleMUD as a publically
available MUD source code.
Release history:
Version 3.54 release: December, 2007
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)
The CircleMUD press release is included below, in case you havent seen it
and want to.
Wake the kids and find the dog, because its the FTP release of
CIRCLEMUD 2.0
Thats right --CircleMUD 2.0 is done and is now available for anonymous FTP
at ftp.cs.jhu.edu!
CircleMUD is highly developed from the programming side, but highly UNdeveloped
on the game-playing side. So, if youre looking for a huge MUD with billions
of spells, skills, classes, races, and areas, Circle will probably disappoint
you severely. Circle still has only the 4 original Diku classes, the original
spells, the original skills, and about a dozen areas.
On the other hand, if youre looking for a highly stable, well-developed,
well-organized "blank slate" MUD on which you can put your OWN ideas for
spells, skills, classes, and areas, then Circle might be just what youre
looking for.
Just take a gander at some of Circles nifty features:
--In-memory mobile and object prototypes and string sharing for
decreased memory usage and blazingly fast zone resets
--All large realloc()s have been removed and replaced by boot-time
record counting and a single malloc() for superior memory efficiency
--Split world/obj/mob/zon/shp files for easy addition of areas; plus,
all the world files are still in the original Diku format for
compatibility with existing areas
--Boot-time and run-time error checking of most data files with
diagnostic messages a lot more helpful than "segmentation fault"!
--Player mail system and bank
--Rewritten board system: boards are now stable, robust, more
intelligent, and easily expandable --adding a new board is
as easy as adding another line to an array
--ANSI color codes with a fully documented programmers interface
--On-line system logs
--Optional automatically regenerating wizlist --a final end
to new immortals constantly asking you when theyll be added
to the immlist!
--"config.c" file allows you to change aspects of the game such
as playerkilling/playerthieving legality, max number of objects
rentable, and nameserver usage --WITHOUT recompiling the
entire MUD!
--All text (help, mortal/immort MOTDs, etc.) is rebootable at
run-time with the "reboot" command
--All players are given a unique serial number --no more messy,
time consuming str_cmp()s when youre trying to identify people!
--Fully integrated and robust rent/crash system --allows normal
renting, cryo-renting, crash protection, and forced rent
(at an increased price) after an hour of idling
--All the standard wizard stuff youre used to: level-sensitive
invisibility, settable poofin/poofouts, wizline
--Advanced set command which allows you to set dozens of aspects
of players --even if they arent logged in! "Stat" also allows
you to stat people who arent logged in!
--Intelligent autorun script handles different types of reboots,
organizing your system logs, and more!
--Circle comes with more than a dozen utilities, all fully
documented, to make maintenance a snap!
--And much, much more!
Unfortunately, the original Circle had more than its fair share of Bad People
when it was alive, but it DID lead to an impressive list of security and
"asshole control" features:
--3 types of sitebanning available: all to refuse all connections,
new to refuse new players, or select to refuse new players and
all registered players who dont have a SITEOK flag.
--wizlock allows you to close the game to all new players or all
players below a certain level.
--Handy mute command squelches a player off of all public
communication channels
--Handy freeze command freezes a player in his tracks: the MUD
totally ignores all commands from that player until hes thawed.
--Even handier DELETE flag allows you to delete players on the fly.
--set command (mentioned above) allows you to freeze/unfreeze/
delete/siteok/un-siteok players --even if they arent logged in!
--Bad password attempts are written to the system log and saved;
if someone tries to hack your account, you see "4 LOGIN FAILURES
SINCE LAST SUCCESSFUL LOGIN" next time you log on.
--Passwords dont echo to the screen; allows 3 bad PW attempts
before disconnecting you.
--Players arent allowed to choose their characters name as their
password --youd be surprised how many do!
--"xnames" text file specifies a list of invalid name substrings
to prevent creation of characters with overly profane names.
Listen to all the rave reviews of CircleMUD 2.0!
"How long ago was that deadline you set for yourself?" --My Friend
"NO ONE should be denied the power of computation." --My Professor
"Multi-user WHAT?" --My Mom
Give it a try --what do you have to lose other than your GPA/job, friends,
and life?
Good luck, and happy Mudding,
Jeremy Elson aka Ras
Circle and tbaMUDs complete source code and areas are available at
http://www.tbamud.com.

Binary file not shown.

168
doc/socials.txt Normal file
View file

@ -0,0 +1,168 @@
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
A social is the easiest command to add to the game thanks to the social editor;
aedit. Socials serve as a means of expression among players, and have no effect
on gameplay itself (unless you make a trigger to fire off a social). Socials
can be used locally or globally with gemote.
HELP AEDIT
Syntax: aedit <social>
Aedit is an online action (social) editor that allows you to create socials
on the fly. Anyone can add new socials just ask a level 33 or above to set your
OLC to 999 and explain how it works. Use astat to see examples.
Here is the much coveted list of $ codes applicable to socials: There are six
different dollar-sign codes which can be inserted into the messages. Each is a
dollar-sign followed by a letter. If the letter is lowercase, the player using
the social is referenced. If the letter is capital, the target character is
referenced. The letter N inserts the character's name, an E inserts a subject
pronoun (he, she, it), an S inserts a possessive pronoun (his, hers, its), and
an M inserts an object pronoun (him, her, it).
$e he/she/it person doing social
$E he/she target of social
$m him/her person doing social
$M him/her target of social
$n char name person doing social (your name)
$N char name target of social (other persons name)
$s his/her/its person doing social
$S his/her target of social
$t body part of victim
$p object
See also: ASTAT, SOCIALS, AUTOSAVE
This is all you really need to know to make socials. Now if you want to edit
the socials file directly or understand the format in depth keep reading.
The file is formatted as follows:
<command> <command sort name> <hide flag> <min pos of vict> <min pos of char>
<min level>
<messg to character if no argument>
<messg to others if no argument>
<messg to char if victim not found>
<messg to char if vict is char>
<messg to others if vict is char>
<messg to char if victim found>
<messg to others if victim found>
<messg to victim>
<messg to char if body part found>
<messg to others if body part found>
<messg to victim if body part found>
<messg to char if object found>
<messagee to others if object found>
All socials are 14 lines followed by a blank line. After the blank line is
either the beginning of the next social or a dollar sign which marks the end of
the file. The first line of any social has six elements: the command name, the
abbreviated version of the command, the "hide-flag", the minimum position of the
victim, the min pos of the char (below), and the minimum level. that any victim
must be. The hide-flag is a Boolean value. If it is 0, the social is visible to
anyone in the room. If it is 1, the social is only visible to the character who
uses it and the character who is the "victim". Most such socials are only usable
on characters who are awake, meaning that they are either resting or more alert,
and so the minimum position value we will use is 5.
Positions:
Dead 0 = POS_DEAD
Mortally Wounded 1 = POS_MORTALLYW
Incapacitated 2 = POS_INCAP
Stunned 3 = POS_STUNNED
Sleeping 4 = POS_SLEEPING
Resting 5 = POS_RESTING
Sitting 6 = POS_SITTING
Fighting 7 = POS_FIGHTING
Standing 8 = POS_STANDING
The next 13 message lines contain the statements that will be shown to various
characters in certain conditions. The first line is the message sent to the
player who uses a social when the social has no argument. The second line
contains the message sent to others in the room when the social has no argument.
The third message is sent to the player using the social when the player names
a target, and that target is present in the room. The fourth message is sent to
others in the room under the same circumstances. The fifth message is sent to
the target character. The sixth message is sent to the player who uses the
social when the player supplies a target, and that target is not available. The
seventh message is sent to the player who uses the social when they player
supplies his or herself as a target. The eighth message is sent to others in
the room under the same circumstances. The remaining follow the same theme but
for body parts and objects. A pound sign in any message line means that there
is no message.
Keep in mind that "messages", "socials", and the world files are not part of
the source code, but rather are strictly data files. They are read by the game
at runtime and throughout the course of the game. Changes made to them do not
require recompiling the executable, they only need for the game to stop running
and be restarted. You can change information in these files at any time. In the
tbaMUD codebase the socials appear in alphabetical order in the file, but they
can appear in any order and can be rearranged if necessary. The socials file is
located in the lib/misc/ directory. Socials are all handled through the
generalized command do_action where the $ codes listed above are parsed.
Each social must contain the first two messages (if the social ignores
arguments), or all thirteen messages (if the social takes an argument). Each
message must be contained in one line. The command-name indicates which social
is being specified. The command sort name is the shortest part of the command a
player must type for it to match. The hide-flag can be either 0 or 1; if 1, the
social is hidden from OTHERS if they cannot see the character performing the
social. The action is not hidden from the VICTIM, even if s/he cannot see the
character performing the social, although in such cases the characters name
will, of course, be replaced with “someone”. The min positions should be set to
dictate the minimum position a player must be in to target the victim and
perform the social. Min level allows you to further customize who can use what
socials.Where it makes sense to do so, text fields may be left empty. If
editing manually you should by put a # in the first column on the line. Aedit
does this automatically.
Examples:
A social only requires 2 message lines. This is the simplest form of a social.
~ack ack 0 0 0 0
ACK!
$n goes ACK!!
#
#
#
#
#
#
#
#
#
#
#
~lick lick 0 5 0 0
You lick your lips and smile.
$n licks $s lips and smiles.
You lick $M.
$n licks $N.
$n licks you.
Lick away, nobody's here with that name.
You lick yourself.
$n licks $mself -- YUCK.
You lick $S $t.
$n licks $N's $t.
$n licks your $t.
You lick $p.
$n licks $p.
~comfort com 0 5 5 0
Do you feel uncomfortable?
#
You comfort $M.
$n comforts $N.
$n comforts you.
Comfort who?
You make a vain attempt to comfort yourself.
#
#
#
#
You comfort $p.
$n comforts $p.

View file

@ -1,11 +1,10 @@
There are many common errors that can be created by changing things in the There are many common errors that can be created by changing things in the
code or having builders try inappropriate things. Here are a few, this is list code or having builders try inappropriate things. Here are a few, this list
will be continually developed, if you have any additions or corrections please will be continually developed. If you have any additions or corrections please
stop by the Builder Academy: builderacademy.net 9091 stop by the Builder Academy at telnet://tbamud.com:9091 or email:
rumble@tbamud.com -- Rumble
--Rumble 1. Errant Rooms (show error command)
1. Errant Rooms (show error)
2. SYSERR: Object # (oedit-s-desc) doesn't have drink type as last alias. 2. SYSERR: Object # (oedit-s-desc) doesn't have drink type as last alias.
3. SYSERR: Mob # both Aggressive and Aggressive_to_Alignment. 3. SYSERR: Mob # both Aggressive and Aggressive_to_Alignment.
4. SYSERR: Object # (oedit-s-desc) has out of range level #. 4. SYSERR: Object # (oedit-s-desc) has out of range level #.
@ -14,24 +13,27 @@ stop by the Builder Academy: builderacademy.net 9091
6. SYSERR: Object # (oedit-s-desc) uses 'UNDEFINED' spell #. 6. SYSERR: Object # (oedit-s-desc) uses 'UNDEFINED' spell #.
7. SYSERR: Object # (oedit-s-desc) contains (5) more than maximum (3). 7. SYSERR: Object # (oedit-s-desc) contains (5) more than maximum (3).
8. Char is already equipped: (medit-s-desc), (oedit-s-desc) 8. Char is already equipped: (medit-s-desc), (oedit-s-desc)
9. SYSERR: Attempt to assign spec to non-existant mob #
1: Errant Rooms 1: Errant Rooms
------------ ------------
1: [ 1233] Rumble's Room 12: (Nowhere) [ 8868] House of Elders Chamber in Silverwood City (south)
The most common are exits to 0 (the void). This happens when a builder The most common are exits to Nowhere. This happens when a builder
modifies a room exit but does not include an exit room vnum. These errant modifies a room exit but does not include an exit room vnum. These errant
rooms are listed by the command 'show error' The fix is simple, remove the rooms are listed by the command 'show error' The fix is simple, remove the
exit by purge exit in redit exit menu or by using 'dig <direction> -1' exit by purge exit in redit exit menu or by using 'dig <direction> -1' A few
builders actually create exits to nowhere just so they can set the exit
descriptions. So only delete if there is no exit description.
2: SYSERR: Object # (oedit-s-desc) doesn't have drink type as last alias. 2: SYSERR: Object # (oedit-s-desc) doesn't have drink type as last alias.
Another common error is caused by how shop code handles drink containers Another common error is caused by how shop code handles drink containers
poorly. In order for shops to display a jug as a jug of <drink type> they poorly. In order for shops to display a jug as "a jug of <drink type>" they
must have the drink type as the last alias. It is good practice to put the must have the drink type as the last alias. It is good practice to put the
drink type as the first and last word of an objects namelist (older verions drink type as the first and last word of an objects namelist (older verions
of CircleMUD expect it first). of CircleMUD expect it first and once the object is empty it removes one of
the drink aliases).
i.e. a shot of whisky should have the namelist: whisky shot whisky i.e. a shot of whisky should have the namelist: whisky shot whisky
a cup of slime mold juice namelist should be: juice cup slime juice a cup of slime mold juice namelist should be: juice cup slime juice
@ -44,21 +46,21 @@ to all.
4: SYSERR: Object # (oedit-s-desc) has out of range level #. 4: SYSERR: Object # (oedit-s-desc) has out of range level #.
A simple one. Limit spell levels to the levels available, on TBA that would A simple one. Limit spell levels to the levels available, on tbaMUD that
be 1-34. would be 1-34.
5: SYSERR: Object # (oedit-s-desc) has negative weight (-2147483644). 5: SYSERR: Object # (oedit-s-desc) has negative weight (-2147483644).
SYSERR: Object # (oedit-s-desc) has out of range level #2147483647. SYSERR: Object # (oedit-s-desc) has out of range level #2147483647.
These are really annoying. This happens when you use numbers larger than These are really annoying. This happens on older versions of CircleMUD when
necessary. This will actually crash many older versions of CircleMUD. Just do you use numbers larger than necessary. This will actually crash many older
not do it. Use realistic numbers. versions of CircleMUD. Just do not do it. Use realistic numbers.
6: SYSERR: Object # (oedit-s-desc) uses 'UNDEFINED' spell #. 6: SYSERR: Object # (oedit-s-desc) uses 'UNDEFINED' spell #.
There is no spell zero. Either select a spell or put -1 for none. There is no spell zero. Either select a spell or put -1 for none.
7: SYSERR: Object # (oedit-s-desc) contains (5) more than maximum (3). 7: SYSERR: Object # (oedit-s-desc) contains (#) more than maximum (#).
When making a drink container you will set how much it initially contains When making a drink container you will set how much it initially contains
on creation and the max it can hold if a player were to fill it. Common sense on creation and the max it can hold if a player were to fill it. Common sense
@ -72,3 +74,13 @@ the initial amount.
a single location. HELP ZEDIT-EQUIP for all the possible object equipping a single location. HELP ZEDIT-EQUIP for all the possible object equipping
locations. All you have to do to fix this is pick a different equip location locations. All you have to do to fix this is pick a different equip location
that is not used. that is not used.
9: SYSERR: Attempt to assign spec to non-existant mob #
To get rid of this "grep # spec_assign.c" and remove this assignment.
10: No associated object exists when attempting to create a board [vnum #].
You need to delete this board from lib/etc/boards/ and modify boards.c and
boards.h. Again "grep #" *.[ch] to search for this vnum in all of your .c and
.h files to remove the reference.

Binary file not shown.

148
doc/utils.txt Normal file
View file

@ -0,0 +1,148 @@
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
tbaMUD Utility Programs
Originally by Alex Fletcher
This document gives a brief summary of the various utility programs that come
with the tbaMUD distribution. The summaries include the description of the
utility, how it is called, and any caveats to watch out for when using them.
Contents
1 Conversion Utilities
1.1 shopconv
1.2 split
1.3 wld2html
1.4 webster
2 Maintenance Utilities
2.1 asciipasswd
2.2 sign
3 Informational Utilities
3.1 listrent
4 Internal Utilities
4.1 autowiz
1 Conversion Utilities
These utilities are generally one-time use utilities. Some are for converting
older CircleMUD data files to the versions used in CircleMUD v3, while others
are used to convert currently existing files into different formats.
Overall, these utilities have been created in an attempt to make the tbaMUD
administrators life a bit easier, and to give the administrator some ideas of
further and more grandiose utilities to create. Some are no longer applicable
but are retained as examples.
Please note that these utilities are not as rigorously tested as the rest of
the tbaMUD server, and you should be certain to backup your data before using
these utilities on it. Also note that the code layout and design for these
utilities is not as tight and as thought out as the rest of the source code
distributed with tbaMUD.
1.1 shopconv
The format of shops changed between CircleMUD 2.20 and CircleMUD v3. To make
the transition easier, Jeff Fink submitted a shop conversion utility, shopconv.
Similar to the player file converter, this should only be run against any file
once. It is best to run this immediately before the initial v2.20 to v3
changeover. The command line syntax for shopconvis as follows:
shopconv <file1> [<file2> .. <filen>]
where <file1>
is the first file to convert, <file2>
the second, and so forth.
1.2 split
The split utility is designed to split large world files into smaller, zone
sized files that are easier to manage and maintain. The utility reads its input
from the standard input and writes the output to files with names specified
within the larger world file. This is done by inserting =filename into the
world file at the appropriate points, where filename is the name of the file
for the following section.
The command line syntax for splitis as follows:
split < [filename]
where [filename] is the file to redirect into the utility. The syntax above
indicates how to do this on platforms that support command line redirection.
1.3 wld2html
This utility began its life as a small toy written by Jeremy Elson to put a
CircleMUD world file on the world wide web. It converts the world file into a
series of HTML files, one per room, all named according to the virtual number
of the room, and linked via their exits.
The command line syntax for wld2htmlis as follows:
wld2html <wldfile>
where <wldfile>
is the world file to be turned into web pages.
2 Maintenance Utilities
2.1 asciipasswd
This utility generates hashed passwords for ASCII player files.
2.2 sign
This utility allows you to display some static text on a port when anyone
connects to it. This is useful when the mud server is moving, changing ports,
or is down for maintenance.
The command line syntax for signis as follows:
sign <port> <filename | -(for stdin)>
where <port>
is the tcp port to put the information on. This is usually the same as the mud
server port (when the server is not running), which defaults to 4000. The
<filename> is an ASCII file to display on the port when a connection is made
to it. If -is specified as a filename, the utility will wait for you to enter
the text to be displayed and will take in all text until ended by an EOF marker
(ctrl-D on Unix based systems).
3 Informational Utilities
3.1 listrent
This utility allows you to view player rent files offline. It displays the type
of rent; Rent, Crash, Cryo, or lost link (TimedOut). It also displays the
object vnum and first keyword.
The command line syntax for listrentis as follows:
listrent <objfile1> [<objfile2> .. <objfilen>]
where <objfile1>
is the first object file to view, <objfile2> the second, and so forth.
This utility must be recompiled if you make any changes to the rent file
structure.
4 Internal Utilities
4.1 autowiz
This utility is called from within the tbaMUD server and manages the self
updating Wizlist and Immlist. At this point, it only works on Unix-based
systems, but a solution for all other systems is being designed. If you wish
to change the text in the headers of the Wizlist or the Immlist, this is
the utility to edit.
The command line syntax for autowizis as follows:
autowiz <wizlev> <wizlistfile> <immlev> <immlistfile> [pid to signal]
where <wizlev> is equal to whatever LVL_GOD is set to in your tbaMUD server,
<wizlistfile> is the filename for the file containing the games Wizlist.
<immlev> should be set to your games LVL_IMMORT, while <immlistfile>
is the name of the Immlist file.
This utility must be recompiled if you make any changes to the player file structure.

View file

@ -1,28 +0,0 @@
Getting To Know Your "lib" Directory
------------------------------------------------------------------------------
etc/ Files maintained by the game which you should not touch while
the game is running.
house/ Crash-save files for player houses.
misc/ Miscellaneous database files such as fight messages, invalid names,
and socials.
plralias/ All of your player's aliases are stored here in the same
three letter encoding scheme as the plrobjs/ directory.
plrfiles/ ASCII player files.
plrobjs/ The hierarchy containing player object files (i.e. crash files,
rent files, cryo-rent files, etc.).
plrvars/ Trigger variables.
text/ Files meant to be directly read by players such as MOTD (message of
the day), help files, and the immortal handbook. You can change
these files while the game is running, and then have the mud re-read
them using the 'reboot' command.
world/ The hierarchy of the world files (mobiles, objects, shops, rooms,
triggers, and zones).

View file

@ -1 +0,0 @@
This directory is to save objects in player houses.

View file

@ -1 +0,0 @@
This is a placeholder file so the directory will be created

View file

@ -1 +0,0 @@
This is a placeholder file so the directory will be created

View file

@ -1 +0,0 @@
This is a placeholder file so the directory will be created

View file

@ -1 +0,0 @@
This is a placeholder file so the directory will be created

View file

@ -1 +0,0 @@
This is a placeholder file so the directory will be created

View file

@ -1 +0,0 @@
This is a placeholder file so the directory will be created

View file

@ -1,7 +0,0 @@
#!/bin/sh
echo "Purging $1"
cd $1
date >> deleted
../../../bin/delobjs ../../etc/players *.objs >> ../deleted
cd ..

View file

@ -1,10 +0,0 @@
#!/bin/sh
echo "Purging old rent files, please wait..."
purgedir A-E
purgedir F-J
purgedir K-O
purgedir P-T
purgedir U-Z
rm -f ZZZ/*
echo "Done."

View file

@ -1,7 +0,0 @@
#!/bin/sh
../../bin/listrent A-E/* | fgrep -i $1
../../bin/listrent F-J/* | fgrep -i $1
../../bin/listrent K-O/* | fgrep -i $1
../../bin/listrent P-T/* | fgrep -i $1
../../bin/listrent U-Z/* | fgrep -i $1

View file

@ -1 +0,0 @@
This is a placeholder file so the directory will be created

View file

@ -1 +0,0 @@
This is a placeholder file so the directory will be created

View file

@ -1 +0,0 @@
This is a placeholder file so the directory will be created

View file

@ -1 +0,0 @@
This is a placeholder file so the directory will be created

View file

@ -1 +0,0 @@
This is a placeholder file so the directory will be created

View file

@ -1 +0,0 @@
This is a placeholder file so the directory will be created

File diff suppressed because it is too large Load diff

View file

@ -1,6 +0,0 @@
commands.hlp
info.hlp
socials.hlp
spells.hlp
wizhelp.hlp
$

View file

@ -1,6 +0,0 @@
commands.hlp
info.hlp
socials.hlp
spells.hlp
wizhelp.hlp
$

View file

@ -1,421 +0,0 @@
AC
"AC" is your armor class. It is a number from -10 to 10, roughly
defined as follows:
AC Roughly equivalent to
-----------------------------------------------------------
10 Naked person
0 Very Heavily armored (Plate mail, and "two shields")
-10 Armored battle tank
The score command displays your armor class as a number such as 78/10;
this means 78 on a scale from -100 to 100 (i.e., 7.8 on the scale from
-10 to 10.)
See also: SCORE
#
AREAS
This is a listing of the areas available for exploration on this
CircleMUD.
Limbo -- DikuMud
River Island Of Minos -- Mahatma of HexOynx
God Simplex -- CircleMUD, modified by Taz of Tazmania
The Straight Path -- Steppin of ChicagoMUD
The High Tower Of Magic -- Skylar of SillyMUD*
Midgaard -- DikuMud
The Three Of Swords -- C.A.W.
Miden'Nir -- Copper II, modified by VampLestat of MercMUD*
The Chessboard -- Exxon of SillyMUD
Mount Moria -- Redferne of DikuMud*
The Great Eastern Desert -- Rorschach
The Drow City -- Rorschach
The City Of Thalos -- Rorschach
The Great Pyramid -- Andersen of HexOynx*
New Thalos -- Duke Of SillyMUD*
The Haon-Dor Forest -- Quifael of DikuMud, extended by by Derkhil
of CircleMUD
The Orc Enclave -- C.A.W.
Arachnos -- Mahatma of HexOynx
Rand's Tower -- C.A.W.
The Dwarven Kingdom -- Depeche of DikuMud
The Sewers -- Redferne of DikuMud
Redferne's Residence -- DikuMud, modified by Cyron of VieMud
Rome -- Onivel of JediMUD
King Welmar's Castle -- CircleMUD*
Newbie Zone -- Maynard of StrangeMUD
All those marked with * have been heavily modified by Furry of VieMud
C.A.W. stands for the Curious Areas Workshop. For more information
mail <fletchra@qsilver.queensu.ca>.
See also: CREDITS
#
BOARDS
Bulletin boards are the forum of inter-player communication on the MUD.
There are different bulletin boards for different purposes -- for example,
a standard mortal board, a board for immortals, a board for fun "social"
messages, etc. Naturally, not all players may be allowed to read all
types of boards.
Type "LOOK BOARD" to see the messages already posted on a board. Type
"WRITE <subject>" to post a message to a board; terminate a message with
a '@' as the first character on a line. Type "READ <number>" to read a
post. Type "REMOVE <number>" to remove your own messages.
Example:
> look at board
> write Am I using these boards correctly?
[writes the message; terminates with a '@']
> look at board
> read 6
> remove 6
See also: MAIL, READ, WRITE
#
CLERIC
Clerics have an ancient belief in not carrying sharp weapons. Hence, they can
only wield bludgeoning weapons. This class gives you the wisdom of peace,
blessing and healing, though it is possible to learn more violent spells.
You can improve your spells by using the practice command.
See 'help spells' for a list of spells available.
See also: PRACTICE, SPELLS
#
EXPERIENCE XP
Whenever you kill a monster or a player, you earn experience points. When
enough experience points are earned, you raise a level.
Things you should know about experience points:
* When damaging a monster, you get experience points.
* If you kill a monster of higher level than yourself, you get bonus
experience points. If killing a monster of lower level you'll gain
less experience points
See also: GROUP, SCORE
#
FLAGS
Players sometimes have FLAGS after their names in the WHO list. These
flags are always in parentheses, not brackets or braces.
FLAG MEANING
----------- ---------------------------------------------------------
(KILLER) Player is trying to kill other players. That means you
can try to kill him/her without being flagged.
(THIEF) Player is trying to steal from other players. Fire away.
(invis) Player is invisible; you can see him/her because you are
sensitive to the presence of invisible things.
(writing) Player is writing on the board; do not disturb.
(mailing) Player is writing mail; do not disturb.
(deaf) Player has chosen not to hear shouts.
(notell) Player has chosen not to accept tells.
(quest) Player is participating in a quest currently being run by
the Gods.
See also: NOSHOUT, NOTELL, QUEST, STEAL, VISIBLE
#
GUILD
The Guildhouse is the place where mortals may go to escape the troubles and
perils of a cruel world. Each guild is heavily guarded, so that only members
may enter the building. Guilds are also the places where people come to
learn and practice the skills of their trade.
See also: PRACTICE
#
HOUSES
Houses have been implemented as of CircleMUD 3.0. A house entails two things:
access control and crash protection. Only you and your guests will be allowed
to enter the house. Your house will be crash-saved every five minutes. You
can force your house to save by typing 'save' while standing in your house.
In the event of a crash, the objects in your house as of the last crash-save
will be loaded back into your house when the MUD reboots. Also, if you own
a house, and quit from the game while standing in your house, you will be
loaded into your house next time you enter the game.
Guests of your house can be defined using the HOUSE command. See HOUSE for
more information.
Houses are an alternative to renting. You can simply enter your house and
quit; your objects will drop to the ground and be crash-saved for when you
return. There is currently no limit to the number of objects which can be
stored in your house. Of course, players must expect to pay a much higher
premium for the convenience of houses; contact your local Implementor for
a fee schedule.
See also: HOUSE
#
IMPLEMENTOR
The most powerful being in existence.
#
INN INNS CRYOGENIC CRYO RECEPTION
Inns are places where the weary traveler may rest while the innkeeper looks
after his equipment and treasure.
Specifically, the game will save your equipment while you are logged out.
There is a daily cost for renting, based on your equipment. Each item has
a per diem charge. The per diem charge is calculated to the nearest second,
however -- if you rent at the rate of 2400 coins per day, and you come back
39 hours later, you will be charged 3900 coins.
A CRYOGENIC CENTER will store your items for a one-time charge of four
days rent.
Rent files are deleted if you run out of money to pay the per diem charges
or after 30 days. Cryogenic-rent files are deleted after 60 days.
See also: OFFER, RENT
#
LINK
A lot of players have problems with their links to the game. This can be
very hazardous to your health in the middle of a battle, of course.
I. If your link is broken, you will automatically attempt to flee each
time someone attempts to hit you. If you manage to flee, then you
will be saved by divine forces, and put in a safe place until you
reconnect to the game.
II. If your link jams (freezes), you have a problem. The only solution we
can give is that you break your link as quickly as possible. By
breaking the link you can hope that the above procedure is initiated.
Do not try to get out of a fight by breaking link. You will be not
reimbursed for any experience or equipment if you purposefully
cut your link.
#
"MAGIC USER" WIZARD MAGE
This is the class of powerful and violent magic, but the magic user do not
control the nature, and can therefore not bless and such.
You can improve your spells by using the practice command.
See 'help spells' for a list of spells available.
See also: PRACTICE, SPELLS
#
MANA
Mana is used when casting spells. You must have a certain amount of mana
in order to cast any particular spell. If you do not have enough mana to
cast the spell you must rest until you gain enough points to cast.
See also: SPELLS
#
MIDGAARD MAP
Temple Altar
|
|
Reading -- Temple -- Donations
Room of
Midgaard Post Reception
| Office /
Cleric | | /
Guild----Temple Square----Grunting---Bar
(Fountain) Boar Inn
Magic |
Shop Bakery | Grocer Weaponsmith
| | | | | East
<---West-----+------+----Market----+--------+--------Gate--->
Gate | | Square | | |
| Mage Armory | Pet Warrior Wally's
(Wall Guild | Shop Guild World of Water
Road) |
| | Uncle Juans's
| | |
+-(Poor-Alley)-+----Square----+(Dark-Alley)-------+
| | | | | |
| Grubby | Thieves Levee Warehouse
| Inn | Guild |
(Wall Dump |
Road) Sewers/ |
| |
| Midgaard
<=== [Bridge] =============================== River =============>
|
|
+(Concourse)+------------+-------------+----------+
| | | | |
| + +----Cafe +---Penny |
| | Park--v | | Lane |
| City | +--+--+ | |
| Guard----+----+----+--o--+-----+----+---City |
| HQ | | Hall |
| + +--(Emerald)--+ |
(Concourse) | | (Concourse)
| +------(Park-+-Road)-------+ |
| | | |
| +--(Emerald)-+ +---Elm |
| | | Street |
| + + |
| | | |
+-----------+------(Concourse)---------+----------+
|
Graveyard
Entrance
#
SHOPS
Shops are places where the adventurer may purchase equipment for his quests,
and where he may sell his treasure if he should manage to survive the perils
with his life and sanity intact. Many shops trade only in a specific type of
merchandise. Thus, a baker may well refuse to buy your armor, even if it is
of high quality!
To some people, the prospect of obtaining the entire inventory of a shop by
murdering the keeper may appear tempting - but beware: The shopkeepers are
often rugged, capable men; roughened by years of trading and, indeed, surviving
in a world where the only safe prospect is death in the end.
See also: BUY, SELL, LIST, VALUE
#
SPELL SPELLS
Magic User Cleric
(1) Magic Missile (1) Armor
(1) - (1) Cure Light
(2) Detect Magic (2) Create Water
(2) Detect Invisible (2) Create Food
(3) Chill Touch (3) Detect Poison
(3) Infravision (3) -
(4) Invisibility (4) Cure Blindness
(4) Armor (4) Detect Evil
(4) - (4) Detect Alignment
(5) Burning Hands (5) Bless
(6) Locate Object (6) Blindness
(6) Strength (6) Detect Invisible
(7) Shocking Grasp (7) Infravision
(8) Sleep (8) Protection From Evil
(8) - (8) Poison
(9) Lightning Bolt (9) Cure Critical
(9) Blindness (9) Group Armor
(10) Detect Poison (10) Summon
(10) - (10) Remove Poison
(11) Color Spray (11) -
(12) - (12) Earthquake
(12) - (12) Word of Recall
(13) Energy Drain (13) -
(14) Curse (14) Detect Evil
(14) Poison (14) Detect Good
(14) - (14) Dispel Evil
(14) - (14) Dispel Good
(15) Fireball (15) Call Lightning
(15) - (15) Sanctuary
(16) Charm Person (16) Heal
(17) Sense Life (17) Control Weather
(19) - (19) Harm
(22) - (22) Group Heal
(26) Enchant Weapon (26) Remove Curse
#
THIEF THIEVES
Thieves are known to have very special qualities, that no other class offers.
Their specialty tends to be in the darker, sneakier art. Many of these
qualities can come in handy in many situations, such as picking locks.
You can improve you skills by using the practice command.
Skills available to thieves:
sneak, hide, steal, backstab, pick lock, track
See the help on each skill for more information.
See also: PRACTICE
#
WARRIOR FIGHTER
Warriors are known to have more strength than the average player. This makes
them better at hand-to-hand-combat, as they possess skills of violence and
fighting unequaled by the members of any other class. However, they lack the
ability to use magic of any sort.
You can improve your skills by using the practice command.
Skills available to warriors:
kick, rescue, track, bash
See also: PRACTICE
#
CIRCLE CIRCLEMUD CREDITS
C I R C L E M U D 3 . 0
CircleMUD was developed from DikuMud (Gamma 0.0) by Jeremy "Ras" Elson at
Johns Hopkins University's Department of Computer Science. All code unique
to CircleMUD is protected under a copyright by the Trustees of the Johns
Hopkins University.
Many, many people contributed to CircleMUD in one way or another throughout
the course of its development. Although it's impossible for me to remember
them all, I'd like to extend special thanks to certain people:
-- Jeff Fink and George Greer, for submitting a veritable mountain of
excellent code.
-- Chris Epler and Chris Herringshaw for extensive beta-testing and bug
reporting.
-- Furry (Alex Fletcher), for single-handedly managing Circle's world files.
-- Fred Merkel, Ryan Watkins, Jay Levino, and Sharon Goza, for other
code and area submissions.
-- Jean-Jack Riethoven for porting the code to the Amiga, David Carver
for porting it to OS/2, and Jack Patton and Steffen Haeuser for the
Amiga port.
-- Bill Bogstad and Tim Stearns for allowing Circle to exist at JHU.
-- The DikuMud folk, and the good old WhatMUD implementors Dave & Justin,
for starting the ball rolling.
-- Bryan Jolson, Steven Lacher, Cat Stanton, and Naved Surve, for being
there in the very early days of Circle's development.
-- Sharon, Ben, Erica, Aly, and Josh, for keeping me sane.
-- Jules (hamotek sheli) for being the greatest.
...plus everyone else in the Circle community who has submitted material!
Thanks everyone!
Anonymous FTP: ftp.circlemud.org or ftp2.circlemud.org in pub/CircleMUD
To report bugs: bugs@circlemud.org
To get help: help@circlemud.org
URL: http://www.circlemud.org/
Mailing List: listserv@post.queensu.ca
(write "subscribe circle <first name> <last name>")
--Jeremy Elson (jelson@circlemud.org)
See also: AREAS
#
$

View file

@ -1,35 +0,0 @@
FRENCH
Don't you know how they kiss in France?? -- try it!
#
KISS
Well can't you guess?
#
SMILE
Whenever you feel like smiling...
#
SOCIALS
Usage: <social> [<victim>]
Socials are commands used to show your affective state to others. The
actor, victim and bystanders may receive different messages. Generally,
social commands are used only to express emotion and not to take action,
but it is possible that some mobs (or players) will take action based on
the social. (Slap a dragon lately?)
Example:
> shake homer
> applaud marge
> stare
The SOCIALS command generates a canonical listing of all available socials.
> socials
See also: EMOTE
#
$

View file

@ -1,557 +0,0 @@
ARMOR
Usage : cast 'armor' [target]
Accumulative: No
Duration : 24 Hours
Level : Mage level 4, Cleric level 1.
The Armor spell will improve your AC by 2.
See also: AC
#
BLESS
Usage : cast 'bless' <victim | object>
Accumulative: No
Duration : 6 Hours, permanent for objects.
Level : Cleric level 5.
Bless on a victim will improve the victims saving throw versus spells
by 1, and furthermore improve the hitroll by 2.
Bless on an item currently has no defined action. It is only possible
to bless non-evil items, and the object blessed may weigh no more
than five pounds per level of caster.
#
BLINDNESS
Usage : cast 'blindness' <victim>
Accumulative: No
Duration : 2 hours.
Level : Mage level 9, Cleric level 6.
Blindness will blind a victim failing its saving throw.
A blinded person will have -4 penalty to both hitroll and AC.
See also: AC
#
"BURNING HANDS"
Usage : cast 'burning hands' <victim>
Accumulative: -
Duration : Instantaneous
Level : Mage level 5.
Save : Versus spell for half damage.
This spell is more powerful than the chill touch spell.
See also: "CHILL TOUCH"
#
"CALL LIGHTNING"
Usage : cast 'call lightning' <victim>
Accumulative: -
Duration : Instantaneous
Level : Cleric level 15.
Save : Versus spell for half damage.
This spell will use the "force of nature" to make a lightning
strike the victim. It is therefore only possible to call lightning
outside, and it has to be raining (or worse).
See also: "CONTROL WEATHER", WEATHER
#
CAST
Usage: cast '<spell name>' [target]
For "magical" people. If you want to throw a spell at someone or something.
Example:
> cast 'burning hands' <player>
Note that the name of the spell must be enclosed by "'"s.
See also: help on each individual spell:
Examples:
> help cure ligh
> help ventri
> help energy drain
#
"CHARM PERSON"
Usage : cast 'charm person' <victim>
Accumulative: No
Duration : (432/Intelligence points of person) hours
Level : Mage level 16.
Is is not possible to charm anyone that is already charmed, if
you're charmed yourself, or if the person is higher level than
yourself. The person will get a saving throw versus "paralysation".
A charmed person will follow you, and not be able to attack you, you
can order the charmed person using the order command.
See also: FOLLOW, ORDER
#
"CHILL TOUCH"
Usage : cast 'chill touch' <victim>
Accumulative: -
Duration : Instantaneous
Level : Mage level 3.
Save : Versus spell for half damage.
This spell is more powerful than the magic missile spell.
A victim failing its saving throw will get its strength
reduced by one.
See also: "MAGIC MISSILE"
#
COLORSPRAY "COLOR SPRAY"
Usage : cast 'color spray' <victim>
Accumulative: -
Duration : Instantaneous
Level : Mage level 11.
Save : Versus spell for half damage.
This spell is more powerful than the lightning bolt spell.
See also: "LIGHTNING BOLT"
For help on actual color, see: ANSI
#
"CONTROL WEATHER"
Usage : cast 'control weather' <'better' | 'worse'>
Accumulative: Yes
Duration : -
Level : Cleric level 17.
This spell will change the "course" of the current weather.
Example:
> cast 'control wea' worse
#
"CREATE FOOD"
Usage : cast 'create food'
Accumulative: -
Duration : Instantaneous
Level : Cleric level 2.
This spell instantly creates a fresh waybread. The waybread will be
filling for the next (5+level) hours, up to a maximum of 24 hours.
See also: "CREATE WATER"
#
"CREATE WATER"
Usage : cast 'create water' <drink container>
Accumulative: No
Duration : Instantaneous
Level : Cleric level 2.
Expect disastrous results if cast upon a drink container which contains
another liquid than water. Empty or water containers will be filled
depending on the level of the caster.
Double amount of water will be created if it is raining (or worse).
See also: "CREATE FOOD"
#
"CURE BLIND"
Usage : cast 'cure blind' <victim>
Accumulative: No
Duration : Instantaneous
Level : Cleric level 4.
This spell will cure a person blinded by the "blindness" spell, it
can not remove blindness caused by for example cursed items.
#
"CURE CRITIC"
Usage : cast 'cure critic' <victim>
Accumulative: -
Duration : Instantaneous
Level : Cleric level 9.
This spell cures 3d8+3 hitpoints of damage.
#
"CURE LIGHT"
Usage : cast 'cure light' <victim>
Accumulative: -
Duration : Instantaneous
Level : Cleric level 1.
Cures minor wounds and scratches.
#
CURSE
Usage : cast 'curse' <victim | object>
Accumulative: Yes
Duration : 7 Days, permanent on objects.
Level : Mage level 14.
Curse cast on a person that fails the saving throw, will reduce their
hitroll and damage roll both by one. It will also reduce the saving
throw versus paralysation by one.
When cast upon an object, the object will become undropable.
#
"DETECT ALIGNMENT"
Usage : cast 'detect alignment'
Accumulative: Yes (Duration)
Duration : 12 hours + level
Level : Cleric level 4.
Allows the caster to detect the alignment of those around them.
Evil will show as a red aura, good in a blue aura.
See also: "DETECT INVISIBILITY"
#
"DETECT INVISIBILITY"
Usage : cast 'detect invisibility' [self]
Accumulative: Yes (Duration)
Duration : 12 hours + level/4
Level : Mage level 2, Cleric level 6.
This spell enables you to see invisible items and players.
#
"DETECT MAGIC"
Usage : cast 'detect magic' [self]
Accumulative: Yes (Duration)
Duration : 12 hours + level
Level : Mage level 2.
This spell will let you see the magical aura surrounding magical
objects.
#
"DETECT POISON"
Usage : cast 'detect poison' <victim | food | drink>
Accumulative: No
Duration : Instantaneous
Level : Mage level 10, Cleric level 3.
Cast on food or drinks (drink containers) you will be able to
sense if it is poisoned.
Cast on a person you will be able to see if that person is
poisoned.
#
"DISPEL EVIL"
Usage : cast 'dispel evil' <victim>
Accumulative: -
Duration : Instantaneous
Level : Cleric level 14.
Save : Special
This spell will only affect evil creatures. An evil person of level
equal or less than caster will suffer 100 damage points.
If the victim is higher level than caster, the spell will inflict
(caster_level)d4 damage points, saving throw versus half damage.
See also: DISPEL GOOD
#
"DISPEL GOOD"
Usage : cast 'dispel good' <victim>
Accumulative: -
Duration : Instantaneous
Level : Cleric level 14.
Save : Special
This spell will only affect good creatures. A good person of level
equal or less than caster will suffer 100 damage points.
If the victim is higher level than caster, the spell will inflict
(caster_level)d4 damage points, saving throw versus half damage.
See also: DISPEL EVIL
#
EARTHQUAKE
Usage : cast 'earthquake'
Accumulative: -
Duration : Instantaneous
Level : Cleric level 12.
Save : -
This spell will damage everybody except the caster by
1d8+level_of_caster hitpoints.
#
"ENCHANT WEAPON"
Usage : cast 'enchant weapon' <weapon>
Accumulative: No
Duration : Permanent
Level : Mage level 26.
This spell will enchant non-magical (non-modifying) weapons only.
By non-modifying weapons we refer to weapons that might alter any
ability such as for example damage. The only way to know if a weapon
is suitable for enchantment is to fully identify it.
The enchantment will modify the weapon as:
Level Hit Roll Damage
0..17 +1 +1
18..19 +2 +1
20..20+ +2 +2
#
"ENERGY DRAIN"
Usage : cast 'energy drain' <victim>
Accumulative: -
Duration : Instantaneous
Level : Mage level 13.
Save : Versus spell for half damage.
This spell does not give much damage, but victims failing their
saving throws will loose up to 40,000 XP points. You will gain
a quarter of this XP.
Beware that this spell is evil.
#
FIREBALL
Usage : cast 'fireball' <victim>
Accumulative: -
Duration : Instantaneous
Level : Mage level 15.
Save : Versus spell for half damage.
This spell is the most powerful spell a magic user can cast.
See also: "COLOR SPRAY"
#
HARM
Usage : cast 'harm' <victim>
Accumulative: -
Duration : Instantaneous
Level : Cleric level 19.
Save : Versus spell for half damage.
This spell removes all but 1d4 hitpoints from the victim. The
maximum number of damage points are 100. It is not possible to
kill using this spell (but almost).
#
HEAL
Usage : cast 'heal' <victim>
Accumulative: No
Duration : Instantaneous
Level : Cleric level 16.
Heal will heal all the hitpoints from a person, except 1d4 points.
Maximum 100 points can be healed. A victim who is blinded will also
be cured by the heal spell.
See also: "CURE BLINDNESS"
#
INFRAVISION
Usage : cast 'infravision'
Accumulative: Yes (Duration)
Duration : 12 hours + level
Level : Mage level 3, Cleric level 7.
Allows the caster to detect the heat given off by objects giving them
the ability to have much better vision in dark conditions.
See also: "DETECT INVISIBILITY"
#
INVISIBILITY
Usage : cast 'invisibility' <victim | object>
Accumulative: Yes (Duration)
Duration : 24 hours, permanent on objects.
Level : Mage level 4.
Makes the target of the spell invisible to everyone except those who have
the "detect invisibility" spell.
Attacking while invisible will immediately break the spell.
See also: "DETECT INVISIBILITY"
#
"LIGHTNING BOLT"
Usage : cast 'lightning bolt' <victim>
Accumulative: -
Duration : Instantaneous
Level : Mage level 9.
Save : Versus spell for half damage.
This spell is more powerful than the shocking grasp spell.
See also: "SHOCKING GRASP"
#
"LOCATE OBJECT"
Usage : cast 'locate object' <object>
Accumulative: -
Duration : Instantaneous
Level : Mage level 6.
If possible you will know exactly where an object is, or the
name of the person using it. If more than one object by the
same name exists, you will get a listing of several objects.
The maximum number of objects you can simultaneously locate is
your level divided by 2.
#
"MAGIC MISSILE"
Usage : cast 'magic missile' <victim>
Accumulative: -
Duration : Instantaneous
Level : Mage level 1.
Save : Versus spell for half damage.
Causes a bolt of magical energy to be thrown from the casters hands at the
victim.
#
POISON
Usage : cast 'poison' <victim | food | drink>
Accumulative: Yes on persons.
Duration : Level hours, or permanent on food and drinks.
Level : Cleric Level 8, Mage level 14.
Casting poison on food or drink (containers) will poison it. Eating
poisoned food/drinks will poison the person eating or drinking.
A person who is poisoned will suffer damage every hour, lose strength, and
gain less points than usual.
See also: "REMOVE POISON", "DETECT POISON"
#
"PROTECTION FROM EVIL"
Usage : cast 'protection from evil' [self]
Accumulative: Yes (Duration)
Duration : 24 hours
Level : Cleric level 8.
The meaning of this spell is not yet fully defined.
#
"REMOVE CURSE"
Usage : cast 'remove curse' <victim | object>
Accumulative: No
Duration : Instantaneous
Level : Cleric level 26.
Will remove a curse on carried objects or any persons in the room.
#
"REMOVE POISON"
Usage : cast 'remove poison' <victim | food | drink>
Accumulative: No
Duration : Instantaneous
Level : Cleric level 10.
Will remove the affects of poison from a victim or an object.
See also: POISON
#
SANCTUARY
Usage : cast 'sanctuary' [self]
Accumulative: Yes (Duration)
Duration : 4 hours
Level : Cleric level 15.
When protected by sanctuary you will only receive 1/2 the normal damage
caused by a particular blow.
See also: ARMOR, BLESS
#
"SHOCKING GRASP"
Usage : cast 'shocking grasp' <victim>
Accumulative: -
Duration : Instantaneous
Level : Mage level 7.
Save : Versus spell for half damage.
This spell is more powerful than the burning hands spell.
See also: "BURNING HANDS"
#
"SENSE LIFE"
Usage : cast 'sense life'
Accumulative: Yes (Duration)
Duration : Level hours.
Level : Cleric level 5, Mage level 17.
Allows the caster to sense the presence of a player or monster in the
room which is hiding. The true identity will remain hidden however.
Invisible persons are also considered hidden.
See also: HIDE
#
STRENGTH
Usage : cast 'strength' <victim>
Accumulative: Yes
Duration : Level/2 + 4
Level : Mage level 6.
A person will gain 1 strength point per spell (2 points if level of
caster is greater than 18). Maximum strength is 18/100.
#
SUMMON
Usage : cast 'summon' <victim>
Accumulative: -
Duration : Instantaneous
Level : Cleric level 10.
Will summon a person of the name spoken. It is not possible to
summon someone of three or more levels above yourself.
If you attempt to summon a monster, it will get a saving throw.
See also: NOSUMMON
#
VENTRILOQUATE
Usage : cast 'ventriloquate' <victim | object> <text>
Accumulative: -
Duration : Instantaneous
Level : Mage level 1.
Save : Versus spell victim only sees attempted cast.
For all people in the same room as the caster that fail a saving throw, the
spell will make the object or victim appear to say the text written.
Example:
> cast 'vent' Mirlen I got 399,823 coins, don't even consider killing me!
#
"WORD OF RECALL"
Usage : cast 'word of recall'
Accumulative: -
Duration : Instantaneous
Level : Cleric level 12.
The caster will be transferred back to his hometown sanctuary (usually the
Temple of Midgaard).
#
$

View file

@ -1,728 +0,0 @@
ADVANCE
Usage: advance <victim> <level>
ADVANCE moves a player to a new level. If used to promote a player to an
immortal level, and if you have the autowiz program installed, the wizlist and
immlist will automatically be recreated.
Example:
> advance rasmussen 34
See also: SET
#
WIZAT
Usage: at <room VNUM | item | mob | player name> <command> <arguments>
AT can be used to perform an action in a location other than where you are
standing. The first argument can be a virtual room number or the name of a
character or object. The remainder of the line is passed to the command
interpreter.
Examples:
> at 3001 look
> at fido kill fido
> at 3.corpse get all corpse
> at catje wave catje
See also: GOTO
#
BAN UNBAN
Usage: ban [<all | new | select> <site>]
unban <site>
These commands prevent anyone from a site with a hostname containing the
site substring from logging in to the game. You may ban a site to ALL, NEW
or SELECT players. Banning a site to NEW players prevents any new players
from registering. Banning a site to ALL players disallows ANY connections
from that site. Banning a site SELECTively allows only players with site-ok
flags to log in from that site. Ban with no argument returns a list of
currently banned sites.
Unban removes the ban.
Examples:
> ban all whitehouse.gov
> unban ai.mit.edu
See also: WIZLOCK
#
DATE
Shows the current real time. (Not a social)
#
DC
Usage: dc <descriptor number>
DC (DisConnect) is used to disconnect a socket. If used on a playing socket,
the player will lose his/her link, but, unlike PURGE, will not extract the
player or dump the player's inventory on the ground.
DC is also useful for disconnecting people who have accidentally left
themselves at the main menu, or connections sitting in the "Get name" state.
See also: USERS
#
ECHO GECHO QECHO SEND
Usage: echo <message>
gecho <message>
send <victim> <message>
qecho <message>
ECHO displays a string to everyone in your room.
GECHO displays the string to everyone in the game.
QECHO displays the string to everyone with the QUEST flag.
SEND displays the string to a particular person.
Examples:
> echo Hi, everyone in the room.
> gecho Hi, everyone in the game, isn't this annoying?
> send rasmussen You are being watched.
#
FORCE
Usage: force <victim | all> <command> <arguments>
FORCE forces a character, either monster or player, to perform a certain
action. FORCE ALL forces everyone in the game; FORCE ROOM forces everyone in
your room.
Example:
> force fido drop meat
> force all save
> force room look fido
If you are invisible to the one being forced, the force will be performed
silently.
#
FREEZE THAW
Usage: freeze <victim>
thaw <victim>
FREEZE, originally invented here at CircleMUD (we think), is used to prevent
a player from playing. If frozen, the game will ignore all commands entered
by the player, including QUIT, until the player is unfrozen with THAW.
Obviously, this command should only be used in extreme disciplinary
circumstances.
See also: SET -> FROZEN
#
GOTO TRANS WIZTELEPORT
Usage: goto <location>
trans <victim>
teleport <victim> <location>
These commands are used to transports yourself and others to different rooms.
GOTO allows you to go to other rooms; TRANS transports a person from wherever
they are to the room YOU are in; TELEPORT transports your victim to some other
location.
For both GOTO and TELEPORT, the location specifier can be either a virtual
room number, or the name of a character or object.
Examples:
> goto 3001
> goto rasmussen
> trans fido
> teleport fido 3001
> teleport fido 2.fido
See also: POOFIN, POOFOUT, SET -> ROOM, WIZAT
#
HANDBOOK
Usage: handbook
Guidelines for having an Immortal character -- you should read it.
#
HCONTROL
Usage: hcontrol build <house vnum> <exit dir> <player name>
hcontrol destroy <house vnum>
hcontrol pay <house vnum>
hcontrol show
House control, controls the addition, removal, and payments of houses.
Hcontrol show will show all the houses currently defined in the game
along with their last 'rent' payment date.
See also: HOUSE, HOUSES
#
HOLYLIGHT
Usage: holylight
A toggle which allows you to see:
Invisible people and objects, even if you don't have 'detect invisibility'
Hidden people, even if you don't have 'sense life'
Dark rooms, even if you don't have a light
It is expected most immortals will keep HOLYLIGHT on most of the time;
it exists so that you have the ability to see what mortals see for
debugging purposes.
#
IMOTD
Usage: imotd
Displays the Immortal message of the day. This file usually contains
new information on commands recently added, new features and other
important information that immortals should be aware of.
See also: MOTD
#
INVIS
Usage: invis [level]
INVIS sets your invisibility level. With no argument, invis toggles between
making you fully visible and fully invisible. If you specify a level, only
people at and above the level you specify will be able to see you.
Examples:
> invis
> invis 31
See also: VISIBLE
#
LAST
Usage: last <player_name>
For checking the last time a person logged on, their sitename, and their
ID number.
Example:
> last ras
[ 24] [14 Cl] Ras : somesite.edu : Tue May 16 22:07:09 1995
See also: STAT
#
LOAD
Usage: load <mob | obj> <virtual number>
LOAD is used to create mobiles and objects. The first argument specifies if
you are trying to load a mobile or an object; the second is the virtual
number.
Example:
> load obj 3099
You create a bulletin board.
> load mob 3005
You create the receptionist.
See also: VNUM
#
MUTE
Usage: mute <victim>
MUTE is used to shut a player up. When muted, a player will not be able to
use most communication channels until he/she is unmuted.
See also: FLAGS
#
NOHASSLE
Usage: nohassle
Toggles a flag to prevent aggressive monsters from attacking.
#
NOTITLE
Usage: notitle <vicitim>
Prevent players from being able to set their own titles; i.e., if the
player consistently has an offensive title. The definition of offensive
is left as an exercise for the reader.
See also: TITLE
#
NOWIZ
Usage: nowiz
Allows you to hear or ignore messages coming over the wiznet.
See also: WIZNET
#
OLC
Usage: olc { . | set | show | obj | mob | room} [args]
.: Repeat last modification command
set: Set OLC characteristics
show: Show OLC characteristics
obj: Modify an object
mob: Modify a mob
room: Modify a room
OnLine Creation. A feature which will eventually allow the creation
of areas ONLINE, without having to reboot the system.
See also: SHOW->ZONES, ZRESET
#
PAGE
Usage: page <player | all> <message>
PAGE is used to send a message, along with a beep, to another player. Use
PAGE ALL to send a message and a beep to everyone in the game.
Examples:
> page rasmussen Hey, are you still at the keyboard?
> page all GAME WILL BE SHUTTING DOWN IN 10 MINUTES
Do not abuse this command.
#
PARDON
Usage: pardon <victim>
Removes killer and thief flags from a player.
#
POOFIN POOFOUT
Usage: poofin <message>
poofout <message>
Sets the message seen by players when you use GOTO to move to a different
room. POOFIN with no argument resets your poofin to the default "appears with
an ear-splitting bang"; POOFOUT with no argument defaults to "disappears in
a puff of smoke."
See also: GOTO
#
PURGE
Usage: purge [name]
Purge destroys things. If used with no arguments, it will clear a room of all
mobiles and objects, but will not harm players. If the argument is an object,
that object (and all of its contents, if any) will be destroyed. If the
argument is a mobile, the mobile will be destroyed, leaving its inventory and
equipment lying on the ground.
If the argument is the name of a player, the player's inventory and equipment
will drop on the ground and the player will lose his/her connection. For this
reason, PURGE should only be used on players in disciplinary situations.
Examples:
> purge
> purge Pom
> purge sword
> purge dragon
See also: DC
#
RELOAD
Usage: reload < '*' | all | file >
Reload is used to reload text files such as the MOTD from disk into memory.
reload * reloads all the text files below.
Valid files are:
background (/mud_dir/lib/text/background)
credits (/mud_dir/lib/text/credits)
greetings (/mud_dir/lib/text/greetings)
handbook (/mud_dir/lib/text/handbook)
help (/mud_dir/lib/text/help)
immlist (/mud_dir/lib/text/immlist)
imotd (/mud_dir/lib/text/imotd)
news (/mud_dir/lib/text/news)
motd (/mud_dir/lib/text/motd)
info (/mud_dir/lib/text/info)
policy (/mud_dir/lib/text/policies)
wizlist (/mud_dir/lib/text/wizlist)
xhelp (/mud_dir/lib/text/help/*)
#
REROLL
Usage: reroll <player>
REROLL gives a player new stats (i.e., Str, Int, Wis, Dex, Con, and Cha)
See also: STAT
#
RESTORE
Usage: restore <player | mobile>
RESTORE restores a player or mobile to full hit, mana, and movement points.
If used on immortals, it also sets all skill levels to 100%.
#
RETURN
Usage: return
RETURN returns you to your regular body if you are switched into a mob.
See also: SWITCH
#
ROOMFLAGS
Usage: roomflags
Toggles a flag which causes the virtual room number and room flags, if any,
to be displayed next to room names.
#
SET
Usage: set [ file | player ] <character> <field> <value>
SET is an extremely powerful command, capable of setting dozens of aspects of
characters, both players and mobiles.
SET PLAYER forces set to look for a player and not a mobile; useful for
players with names such as 'guard'.
SET FILE lets you change players who are not logged on. If you use SET FILE
on a player who IS logged on, your change will be lost. If you wish to set
a player who is in the game but is linkless, use set twice -- once with the
FILE argument, and once without -- to make sure that the change takes.
For toggled fields (BINARY), the value must be ON, OFF, YES, or NO.
The following are valid fields:
Field Level Required Who Value Type Decription
-----------------------------------------------------------------------------
age LVL_GRGOD BOTH NUMBER Character's age
brief LVL_GOD PC BINARY Brief mode
invstart LVL_GOD PC BINARY Invisible @ Start
title LVL_GOD PC MISC Player's title
nosummon LVL_GRGOD PC BINARY NOSUMMON flag
maxhit LVL_GRGOD BOTH NUMBER Max HP
maxmana LVL_GRGOD BOTH NUMBER Max mana
maxmove LVL_GRGOD BOTH NUMBER Max movement
hit LVL_GRGOD BOTH NUMBER Current HP
mana LVL_GRGOD BOTH NUMBER Current mana
move LVL_GRGOD BOTH NUMBER Current movement
align LVL_GOD BOTH NUMBER Alignment
str LVL_GRGOD BOTH NUMBER Strength
stradd LVL_GRGOD BOTH NUMBER Additional STR (18/xx)
int LVL_GRGOD BOTH NUMBER Inteligence
wis LVL_GRGOD BOTH NUMBER Wisdom
dex LVL_GRGOD BOTH NUMBER Dexterity
con LVL_GRGOD BOTH NUMBER Constitution
cha LVL_GRGOD BOTH NUMBER Charisma
sex LVL_GRGOD BOTH MISC Sex
ac LVL_GRGOD BOTH NUMBER Armor class
gold LVL_GOD BOTH NUMBER Gold (On hand)
bank LVL_GOD PC NUMBER Gold in bank
exp LVL_GRGOD BOTH NUMBER Experience points
hitroll LVL_GRGOD BOTH NUMBER To-Hit modifier
damroll LVL_GRGOD BOTH NUMBER Damage modifier
invis LVL_IMPL PC NUMBER Invisible (level)
nohassle LVL_GRGOD PC BINARY NOHASSLE flag
frozen LVL_FREEZE PC BINARY FROZEN flag
practices LVL_GRGOD PC NUMBER # of practices
lessons LVL_GRGOD PC NUMBER # of practices
drunk LVL_GRGOD BOTH MISC Drunkeness
hunger LVL_GRGOD BOTH MISC Hrs to hunger
thirst LVL_GRGOD BOTH MISC Hrs to thirst
killer LVL_GOD PC BINARY KILLER flag
thief LVL_GOD PC BINARY THIEF flag
level LVL_IMPL BOTH NUMBER Level
room LVL_IMPL BOTH NUMBER Move to room
roomflag LVL_GRGOD PC BINARY ROOMFLAGS flag
siteok LVL_GRGOD PC BINARY SITEOK flag
deleted LVL_IMPL PC BINARY DELETED flag
class LVL_GRGOD BOTH MISC Class (W/T/C/M)
nowizlist LVL_GOD PC BINARY Not Wizlistable flag
quest LVL_GOD PC BINARY QUESTING flag
loadroom LVL_GRGOD PC MISC Room to load in (#/off)
color LVL_GOD PC BINARY COLOR flag
idnum LVL_IMPL PC NUMBER ID Number
passwd LVL_IMPL PC MISC Player password
nodelete LVL_GOD PC BINARY Undeletable flag
See also: STAT
#
SHOW
Usage: show <mode> [argument]
Valid Modes:
death errors godrooms houses
player rent shops stats
zones
The SHOW command displays information. Some modes of show require additional
information, such as a player name.
death: Shows all death traps in the game.
errors: Shows errant rooms.
godrooms: Shows the rooms in the 'god zone'.
houses: Shows the houses that are currently defined.
player: Shows player summary information, simply provide a player name.
rent: Shows the filename and path to a players rent file.
shops: Shows all the shops in the game and their buy/sell parameters.
stats: Shows game status information including players in game, mobs etc.
zones: Shows all the zones in the game and their current reset status.
An age of -1 means it is in the 'to be reset next' queue.
See also: STAT, ZRESET
#
SHUTDOWN
Usage: shutdown [reboot | die | pause]
SHUTDOWN shuts the MUD down. The SHUTDOWN command works in conjunction with
CircleMUD's 'autorun' script. If you are not using autorun, the arguments are
meaningless. If you are using autorun, the following arguments are available:
REBOOT Pause only 5 seconds instead of the normal 40 before trying to
restart the MUD.
DIE Kill the autorun script; the MUD will not reboot until autorun is
explicitly run again.
PAUSE Create a file called 'paused' in Circle's root directory; do not
try to restart the MUD until 'paused' is removed.
#
SKILLSET
Usage: skillset <name> '<skill>' <value>
Sets the specified skill to the specified value.
See also: SET
#
SLOWNS
Usage: slowns
Toggles whether or not IP addresses are resolved into readable site names.
If slow nameserver is enabled, USERS will show only IP addresses.
(128.123.222.111 etc).
See also: USERS
#
SNOOP
Usage: snoop [player]
Snoop allows you to listen in on another player's session; everything the
player sees or types will be displayed on your terminal preceded by a '%'.
Obviously, there are many ethical considerations to the use of this command;
snoop should be used minimally, and only for disciplinary purposes.
Type snoop <your name> or just snoop to stop snooping.
#
SNOWBALL
Snowball is just a social -- it prints a funny message, and nothing more.
#
STAT
Usage: stat [player | object | mobile | file] <name>
Gives information about players, monsters, and objects in the game. The type
argument is optional.
STAT PLAYER will search only for players; useful for statting people with
names such as Red or Cityguard.
STAT OBJECT will search only for objects.
STAT MOBILE will search only for monsters.
STAT FILE is used to stat players who are not logged in; the information
displayed comes from the playerfile.
Examples:
> stat fido
> stat player red
> stat mobile red
> stat file niandra
> stat object thunderbolt
See also: VSTAT
#
STRING
Usage: string <type> <name> <field> [<string> | <keyword>]
For changing the text-strings associated with objects and characters. The
format is:
Type is either 'obj' or 'char'.
Field is one of the following(the names may be abbreviated):
Name (the call-name of an obj/char - kill giant)
Short (for inventory lists (obj's) and actions (char's))
Long (for when obj/character is seen in room)
Title (for players)
Description (For look at. For obj's, must be followed by a keyword)
Delete-description (only for obj's. Must be followed by keyword)
Where a string is expected as the last argument, a newline will make you enter
a string mode, and the game will prompt you for new lines to the string until
you exceed the maximum length for the string or you end a line with a '@'.
Mobiles and objects currently cannot be strung.
#
SWITCH
Usage: switch <monster>
SWITCH is used to take over the body of mobiles; useful for interactive
adventures. If the monster in which you are switched is killed you will be
returned to your own body.
See also: RETURN
#
SYSLOG
Usage: syslog [off | brief | normal | complete]
The SYSLOG command controls how detailed of an on-line system log you see.
Messages surrounded by '[' and ']' are syslog messages and are in green
if you have color on.
The messages you receive are level dependent.
Examples:
> syslog complete
> syslog off
See also: COLOR
#
UNAFFECT
Usage: unaffect <victim>
Removes all affections (i.e., spell effects) from a player.
See also: STAT
#
UPTIME
Usage: uptime
Displays when the game was booted and calculates how long ago that was.
#
USERS
Usage: users [switches]
USERS gives a list of all sockets (i.e., connections) currently active on the
MUD. The multi-column display shows the socket number (used by DC), class,
level, and name of the player connected, connection state, idle time, and
hostname.
The following switches are available:
-k or -o Show only outlaws (killers and thieves).
-p Show only sockets in the playing sockets.
-d Show only non-playing (deadweight) sockets.
-l min-max Show only sockets whose characters are from level min to max.
-n <name> Show the socket with <name> associated with it.
-h <host> Show all sockets from <host>.
-c list Show only sockets whose characters' classes are in list.
See also: DC, SLOWNS
#
VNUM
Usage: vnum <mob | obj> <name>
Gives a list of the virtual numbers of objects or mobiles which have the
specified name.
Examples:
> vnum obj ring
1. [ 904] a platinum ring
2. [ 2543] a seashell ring
3. [ 2588] a small emerald ring
> vnum mob dragon
1. [ 1] Puff
2. [ 908] the dragon turtle
3. [ 2548] the Master of Illusions
#
VSTAT
Usage: vstat < mob | obj > <virtual number>
Used to stat a prototypical mobile or object by virtual number.
Examples:
> vstat obj 3000
> vstat mob 3001
See also: LOAD, STAT, VNUM
#
WIZHELP
Usage: wizhelp
Gives a list of the special commands available at your level.
#
WIZLOCK
Usage: wizlock [value]
WIZLOCK allows you to restrict the game. WIZLOCK 1 prevents new characters
from being created. WIZLOCK n, 2 <= n <= 34, prevents new characters and
allows only characters level n and above to log on. WIZLOCK with no argument
displays the current WIZLOCK level.
See also: BAN
#
WIZNET ;
The immortal communication channel.
Usage: wiznet [ '@' | '+' | '-' | '#' ] [<text>]
Examples:
>; <text> - just sends text
>; @ - shows all gods that are on and visible to you
- also shows if the gods who are visible to you are writing
This code was provided by Gnort.
See also: NOWIZ
#
ZRESET
Usage: zreset < zone | '*' | '.' >
Used to force a zone to reset. '*' forces all zones to reset. '.' forces
the zone you are in to reset.
See also: SHOW -> ZONES
#
$

View file

@ -1,9 +1,13 @@
(lib/text/news) (lib/text/news)
THE 2007 tbaMUD HERALD THE 2008 tbaMUD HERALD
"We addict players for their own enjoyment." "We addict players for their own enjoyment."
NEW COMMANDS AND NEW MUD BEHAVIOR: NEW COMMANDS AND NEW MUD BEHAVIOR:
--------------------------------- ---------------------------------
** Check out the latest news and information on the tbaMUD codebase with
tbaMUDs new content management system (drupal) at http://tbamud.com.
Forums, blogs, etc. (thanks Mordecai)
** Doors are now visible in the exits menu. i.e. Exits: n (e) w s. ** Doors are now visible in the exits menu. i.e. Exits: n (e) w s.
** Added questpoints so be sure to ask about quests. ** Added questpoints so be sure to ask about quests.

View file

@ -982,6 +982,7 @@ He is covered in a film of dirt and grime. He smells even worse than you.
80 6400 80 6400
8 8 1 8 8 1
E E
T 206
#169 #169
citizen~ citizen~
a citizen~ a citizen~
@ -1277,10 +1278,11 @@ carries out their orders and makes a good job of it. He has been fighting more
years than you've been living. years than you've been living.
~ ~
2058 0 0 0 0 0 0 0 1000 E 2058 0 0 0 0 0 0 0 1000 E
30 10 -8 6d6+300 5d5+5 5 19 7 1d1+50 1d2+0
300 90000 50 2500
8 8 1 8 8 1
E E
T 207
#190 #190
cat pussy~ cat pussy~
the cat~ the cat~

View file

@ -482,7 +482,7 @@ T 3011
#3089 #3089
petshops shop boy~ petshops shop boy~
the Pet Shop Boy~ the Pet Shop Boy~
There is a Pet Shop Boy standing here cuddleing something furry in his hands. There is a Pet Shop Boy standing here cuddling something furry in his hands.
~ ~
As you look at him, he opens his hands to reveal a rat! As you look at him, he opens his hands to reveal a rat!
~ ~

View file

@ -40,6 +40,10 @@ The email listing of the gods is pinned against the wall.~
0 0 0 0 0 0 0 0
1 1 0 30 1 1 0 30
E E
emails listing~
HELP CONTACT
~
E
wizlist~ wizlist~
Implementors Implementors
~~~~~~~~~~~ ~~~~~~~~~~~
@ -56,10 +60,6 @@ wizlist~
Santa Shamra Shimmer Silvanos Smaug Snowlock Talgard Taylor Santa Shamra Shimmer Silvanos Smaug Snowlock Talgard Taylor
Theophilus Tocamat Torpidai Treestump Tuskony Zizazat Theophilus Tocamat Torpidai Treestump Tuskony Zizazat
~ ~
E
emails listing~
HELP CONTACT
~
#5 #5
foraged berries~ foraged berries~
some foraged berries~ some foraged berries~
@ -803,6 +803,20 @@ comfy bed~
This bed is beckoning you to lay down and get some much needed sleep. This bed is beckoning you to lay down and get some much needed sleep.
Just "sleep bed" Just "sleep bed"
~ ~
#49
quarter coin~
a quarter~
A typical U.S. quarter that appears to be perfect for flipping.~
~
12 0 0 0 0 a 0 0 0 0 0 0 0
0 0 0 0
1 1 0 0
T 37
E
coin quarter~
This quarter is perfect for deciding those difficult boolean questions you
may have. Just "flip quarter"
~
#50 #50
generic light~ generic light~
a generic light~ a generic light~

View file

@ -1063,8 +1063,8 @@ visible.
0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0
E E
september~ june~
. .:IIIIHIHHIHHHII::I:. . .:IIIIHIHHIHHHII::I:.
:IIIIHIHHHHHHMMHHIHHIIHHIII:. :IIIIHIHHHHHHMMHHIHHIIHHIII:.
,.:HIHHHHHHHHHHHHHHHHHHHHHIHIHHII:. ,.:HIHHHHHHHHHHHHHHHHHHHHHIHIHHII:.
.:IIHHHHHHHHMMMMMHHHHMMMHHMHHHIIIHIIII: .:IIHHHHHHHHMMMMMHHHHMMMHHMHHHIIIHIIII:
@ -1121,9 +1121,21 @@ IHHHHMHMMMMMMMHHHHHI:IT:TI:..:HI:.. ..:. . :IHII
::.:............. .. . ...AHIHIIIIIHHHI::""' 'VII:.. .. . ::.:............. .. . ...AHIHIIIIIHHHI::""' 'VII:.. .. .
::.:.:.......... .. . ...HHHIIIIIIHHHI::. . 'VII::. . . , ::.:.:.......... .. . ...HHHIIIIIIHHHI::. . 'VII::. . . ,
':::.:.:..... .. . . . ..:MHHIHIIIII:I::. . 'VII:::. .. . ':::.:.:..... .. . . . ..:MHHIHIIIII:I::. . 'VII:::. .. .
:::::.:..:.... . . . ...AHHHHIHIIII:::. . 'VII:::. . . :.
:::::::.:..... .. . ....MHHHHHIHIII::.:.. . 'VII::. . ::
:::::::::.:.... .. ....:MHHHHIHII:I::::... . 'VI::. . ::I)
'::::::::::.:... .. ...:MHHHHIHIIII::::.. . 'VI:. ...:V
.:::::::::::.:.... . .AMMHHIHIII:I::::... . . I::. ...:-"
:.::I::::::::.:. . ..MMMHHIHIIII:I:::... . . .::. ,..-"
:..:II:I:::::.:.. . ..MMMHHIHIIIIIII:I::.... . . ..::""'
.::.:III:I::::::.:.. ..MMMMIVHIHIIIII:I::::.... . .....:,
.:.::..:III:I:::::.:... .MMHMAIVHHIHIIIII:I::::.. . ..::..:,
. .:::.::III:I::::.:... .VMMHMAIVHHHIHIIII:I::::.. ..:...:::
. :::I.:::III:I:::.::.. .:MMHHMAIVHHIHIIIII:I::::....:::.::::
.::IIH.:::III:I::::.:.. .MMHMHMAIVHHHIHIIIIII:I
~ ~
E E
august~ april~
. nHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHn. . nHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHn.
.MS?MMMMMMMMMMMMMMMMMM?MM-MMMMMMMMMSHMMMMMMM .MS?MMMMMMMMMMMMMMMMMM?MM-MMMMMMMMMSHMMMMMMM
MMMMMH?MMMMMMMX*MM?MMX%MM/MMMMMM"HMMMMMMMMMMMM MMMMMH?MMMMMMMX*MM?MMX%MM/MMMMMM"HMMMMMMMMMMMM
@ -1176,7 +1188,7 @@ august~
%% % %%%%%% %% % %%%%%%
~ ~
E E
july~ March~
. ,.--.. . ,.--..
,::.'.. . . "VI:I:".':-.,. ,::.'.. . . "VI:I:".':-.,.
,I::. .. . 'VHMHII:.::;:.:,.. ,I::. .. . 'VHMHII:.::;:.:,..
@ -1242,183 +1254,6 @@ july~
':::.:... ..I::I::.:....:. .: .. ...::. . . III:II:. ' ':::.:... ..I::I::.:....:. .: .. ...::. . . III:II:. '
~ ~
E E
june~
. :AMMMMMMMMMMMMA:
:AMMMMMMMMMHHHHHMMMMMMMMA:
:AMHMMMMHHMHIHHIMMMHMMMMHHA:
:AM'MMMMMMHHIHHHIMMMMMIMMHHHH:
AM:IMMMMMHHIHIHHHIMMHHHHHHHHHH
AMIIHMMMMMHIHHHIHHIHHHHHHHHHHHH:
MMIHHMMMMMHHIHHHIHHHHHHHHHHHHHHH
AMMMMMHHHHHHI;;;;;;;IHHHI;;IHHHHH
MMMMHIIII;":AMMMMA ,[[, HH
MMMMHII; AW"'''' :: HH
IHHIHIII;:'' ,GFMF[ [MM[: IH
AHHIHII;::': ";[P,[ ;; :::: IH
IHHHIHII;;:: :[;: ;H
AHHHHHII;;;:: : : [ : ;H
IHHIIHI:[;;;:: ; ; ; , , IH
IHHIIHH:[;;;: ; ;: ':"::" '; IH
IHHIIHI:[;;: ::: ; ,,,, ' HH
:IHHHIHHMMA;::: [;;""""""[; AMI
;IHHHHIIHMM;: : : ;;[,,,,[; HHI
IIHHMMHHIHHM;:: '"""' AMHI
IIHHMMHMHHIIIM;:: AMMHI
IHHHMMHMHMHHHIHI;:: :AMMMHI
IHHHMMMMHMMHHHII;;;;:: :,;; MMMHHI
IHHHMMHHHHMMHHHI;:";;;;;;" MMMIH'
;IHHMMHMMMMHF"HHII MMMHH
IHHMMHV;;:: HHII;: : MMHHI
IHHMV;;::: HHII;: : : MMHI;
IHMV;;:: : "HII;: :: MMI;
:IHV;:: : 'HI: :: MM;
IV;:: : : "II;: ;
IH;;::: : ;;;I: ;
;M;;:::: : ';;;HI: '
MH;;:::: : ';;HI: ;
IM;;;::: : :[; ';I"I: ;
M;;;::: : : [;;,: ' : '
;;:::: : ::'' : ':
;;::: : : ': :
:;;:: : :: ':'
;;:: : : : '':
;;:: : : :;,:
;;:: : :: ;[[[,:
:;;:: : : ;;[[[;':
;;:: : : [:: : : ;[[[[;;[,
;:: : [;;;: : :, [[[[['[[;
;:: : :M;;: : :,[ [[[[ [['
;: : "[:: : ::[ ;[' ;[
;: : "[: : ::[ :' :'
:: :: : ", :::;[ :' :;
: :: ': : :::;[ ::' :;
:: ; : : ::::;[:,,::;;I' ;;
;;:;: : : : :::::::: '""' I[[;"'
;;;:: : : '::::' ;
;;;:: : : : ;
';;;;::: : : ': ;
';;:::: : :
M;:::: : ':
MMMI;:::: : ;
MMMMMA;::: :
AHHMMMMHA;:::: : ;
:MHHMMMMMMMA;: ' :
AHHHMMM;"TTTTL: : ;
AHHHHHHMMLLLLLH ': :
:MHHH:::;HHMMMMMA: : ;
:AHHH:::HH;;;;;MMM;: :
:MHH;: ;;;;;MMM:: : : ;
:MH;: : ';;;;MMM:: ': ':
,H;: ';;;MMM::: :':' ;
,;: : : : ;;;Y;H:: :
,;: : : : ';;;:; : : ; ;
[;:: : ;;:; ; ; ;
~
E
may~
. 8888 8888888
888888888888888888888888
8888:::8888888888888888888888888
8888::::::8888888888888888888888888888
88::::::::888:::8888888888888888888888888
88888888::::8:::::::::::88888888888888888888
888 8::888888::::::::::::::::::88888888888 888
88::::88888888::::m::::::::::88888888888 8
888888888888888888:M:::::::::::8888888888888
88888888888888888888::::::::::::M88888888888888
8888888888888888888888:::::::::M8888888888888888
8888888888888888888888:::::::M888888888888888888
8888888888888888::88888::::::M88888888888888888888
88888888888888888:::88888:::::M888888888888888 8888
88888888888888888:::88888::::M::;o*M*o;888888888 88
88888888888888888:::8888:::::M:::::::::::88888888 8
88888888888888888::::88::::::M:;:::::::::::888888888
8888888888888888888:::8::::::M::aAa::::::::M8888888888 8
88 8888888888::88::::8::::M:::::::::::::888888888888888 8888
88 88888888888:::8:::::::::M::::::::::;::88:88888888888888888
8 8888888888888:::::::::::M::"@@@@@@@"::::8w8888888888888888
88888888888:888::::::::::M:::::"@a@":::::M8i888888888888888
8888888888::::88:::::::::M88:::::::::::::M88z88888888888888888
8888888888:::::8:::::::::M88888:::::::::MM888!888888888888888888
888888888:::::8:::::::::M8888888MAmmmAMVMM888*88888888 88888888
888888 M:::::::::::::::M888888888:::::::MM88888888888888 8888888
8888 M::::::::::::::M88888888888::::::MM888888888888888 88888
888 M:::::::::::::M8888888888888M:::::mM888888888888888 8888
888 M::::::::::::M8888:888888888888::::m::Mm88888 888888 8888
88 M::::::::::::8888:88888888888888888::::::Mm8 88888 888
88 M::::::::::8888M::88888::888888888888:::::::Mm88888 88
8 MM::::::::8888M:::8888:::::888888888888::::::::Mm8 4
8M:::::::8888M:::::888:::::::88:::8888888::::::::Mm 2
88MM:::::8888M:::::::88::::::::8:::::888888:::M:::::M
8888M:::::888MM::::::::8:::::::::::M::::8888::::M::::M
88888M:::::88:M::::::::::8:::::::::::M:::8888::::::M::M
88 888MM:::888:M:::::::::::::::::::::::M:8888:::::::::M:
8 88888M:::88::M:::::::::::::::::::::::MM:88::::::::::::M
88888M:::88::M::::::::::*88*::::::::::M:88::::::::::::::M
888888M:::88::M:::::::::88@@88:::::::::M::88::::::::::::::M
888888MM::88::MM::::::::88@@88:::::::::M:::8::::::::::::::*8
88888 M:::8::MM:::::::::*88*::::::::::M:::::::::::::::::88@@
8888 MM::::::MM:::::::::::::::::::::MM:::::::::::::::::88@@
888 M:::::::MM:::::::::::::::::::MM::M::::::::::::::::*8
888 MM:::::::MMM::::::::::::::::MM:::MM:::::::::::::::M
88 M::::::::MMMM:::::::::::MMMM:::::MM::::::::::::MM
88 MM:::::::::MMMMMMMMMMMMMMM::::::::MMM::::::::MMM
88 MM::::::::::::MMMMMMM::::::::::::::MMMMMMMMMM
88 8MM::::::::::::::::::::::::::::::::::MMMMMM
~
E
January~
. 8888 8888888
888888888888888888888888
8888:::8888888888888888888888888
8888::::::8888888888888888888888888888
88::::::::888:::8888888888888888888888888
88888888::::8:::::::::::88888888888888888888
888 8::888888::::::::::::::::::88888888888 888
88::::88888888::::m::::::::::88888888888 8
888888888888888888:M:::::::::::8888888888888
88888888888888888888::::::::::::M88888888888888
8888888888888888888888:::::::::M8888888888888888
8888888888888888888888:::::::M888888888888888888
8888888888888888::88888::::::M88888888888888888888
88888888888888888:::88888:::::M888888888888888 8888
88888888888888888:::88888::::M::;o*M*o;888888888 88
88888888888888888:::8888:::::M:::::::::::88888888 8
88888888888888888::::88::::::M:;:::::::::::888888888
8888888888888888888:::8::::::M::aAa::::::::M8888888888 8
88 8888888888::88::::8::::M:::::::::::::888888888888888 8888
88 88888888888:::8:::::::::M::::::::::;::88:88888888888888888
8 8888888888888:::::::::::M::"@@@::::8w8888888888888888
88888888888:888::::::::::M:::::":::::M8i888888888888888
8888888888::::88:::::::::M88:::::::::::::M88z88888888888888888
8888888888:::::8:::::::::M88888:::::::::MM888!888888888888888888
888888888:::::8:::::::::M8888888MAmmmAMVMM888*88888888 88888888
888888 M:::::::::::::::M888888888:::::::MM88888888888888 8888888
8888 M::::::::::::::M88888888888::::::MM888888888888888 88888
888 M:::::::::::::M8888888888888M:::::mM888888888888888 8888
888 M::::::::::::M8888:888888888888::::m::Mm88888 888888 8888
88 M::::::::::::8888:88888888888888888::::::Mm8 88888 888
88 M::::::::::8888M::88888::888888888888:::::::Mm88888 88
8 MM::::::::8888M:::8888:::::888888888888::::::::Mm8 4
8M:::::::8888M:::::888:::::::88:::8888888::::::::Mm 2
88MM:::::8888M:::::::88::::::::8:::::888888:::M:::::M
8888M:::::888MM::::::::8:::::::::::M::::8888::::M::::M
88888M:::::88:M::::::::::8:::::::::::M:::8888::::::M::M
88 888MM:::888:M:::::::::::::::::::::::M:8888:::::::::M:
8 88888M:::88::M:::::::::::::::::::::::MM:88::::::::::::M
88888M:::88::M::::::::::*88*::::::::::M:88::::::::::::::M
888888M:::88::M:::::::::88@8:::::::::M::88::::::::::::::M
888888MM::88::MM::::::::88@8:::::::::M:::8::::::::::::::*8
88888 M:::8::MM:::::::::*88*::::::::::M:::::::::::::::::88@
8888 MM::::::MM:::::::::::::::::::::MM:::::::::::::::::88@
888 M:::::::MM:::::::::::::::::::MM::M::::::::::::::::*8
888 MM:::::::MMM::::::::::::::::MM:::MM:::::::::::::::M
88 M::::::::MMMM:::::::::::MMMM:::::MM::::::::::::MM
88 MM:::::::::MMMMMMMMMMMMMMM::::::::MMM::::::::MMM
88 MM::::::::::::MMMMMMM::::::::::::::MMMMMMMMMM
88 8MM::::::::::::::::::::::::::::::::::MMMMMM
~
E
february~ february~
. :AMMMMMMMMMMMMA: . :AMMMMMMMMMMMMA:
:AMMMMMMMMMHHHHHMMMMMMMMA: :AMMMMMMMMMHHHHHMMMMMMMMA:
@ -1492,7 +1327,184 @@ february~
[;:: : ;;:; ; ; ; [;:: : ;;:; ; ; ;
~ ~
E E
March~ January~
. 8888 8888888
888888888888888888888888
8888:::8888888888888888888888888
8888::::::8888888888888888888888888888
88::::::::888:::8888888888888888888888888
88888888::::8:::::::::::88888888888888888888
888 8::888888::::::::::::::::::88888888888 888
88::::88888888::::m::::::::::88888888888 8
888888888888888888:M:::::::::::8888888888888
88888888888888888888::::::::::::M88888888888888
8888888888888888888888:::::::::M8888888888888888
8888888888888888888888:::::::M888888888888888888
8888888888888888::88888::::::M88888888888888888888
88888888888888888:::88888:::::M888888888888888 8888
88888888888888888:::88888::::M::;o*M*o;888888888 88
88888888888888888:::8888:::::M:::::::::::88888888 8
88888888888888888::::88::::::M:;:::::::::::888888888
8888888888888888888:::8::::::M::aAa::::::::M8888888888 8
88 8888888888::88::::8::::M:::::::::::::888888888888888 8888
88 88888888888:::8:::::::::M::::::::::;::88:88888888888888888
8 8888888888888:::::::::::M::"@@@::::8w8888888888888888
88888888888:888::::::::::M:::::":::::M8i888888888888888
8888888888::::88:::::::::M88:::::::::::::M88z88888888888888888
8888888888:::::8:::::::::M88888:::::::::MM888!888888888888888888
888888888:::::8:::::::::M8888888MAmmmAMVMM888*88888888 88888888
888888 M:::::::::::::::M888888888:::::::MM88888888888888 8888888
8888 M::::::::::::::M88888888888::::::MM888888888888888 88888
888 M:::::::::::::M8888888888888M:::::mM888888888888888 8888
888 M::::::::::::M8888:888888888888::::m::Mm88888 888888 8888
88 M::::::::::::8888:88888888888888888::::::Mm8 88888 888
88 M::::::::::8888M::88888::888888888888:::::::Mm88888 88
8 MM::::::::8888M:::8888:::::888888888888::::::::Mm8 4
8M:::::::8888M:::::888:::::::88:::8888888::::::::Mm 2
88MM:::::8888M:::::::88::::::::8:::::888888:::M:::::M
8888M:::::888MM::::::::8:::::::::::M::::8888::::M::::M
88888M:::::88:M::::::::::8:::::::::::M:::8888::::::M::M
88 888MM:::888:M:::::::::::::::::::::::M:8888:::::::::M:
8 88888M:::88::M:::::::::::::::::::::::MM:88::::::::::::M
88888M:::88::M::::::::::*88*::::::::::M:88::::::::::::::M
888888M:::88::M:::::::::88@8:::::::::M::88::::::::::::::M
888888MM::88::MM::::::::88@8:::::::::M:::8::::::::::::::*8
88888 M:::8::MM:::::::::*88*::::::::::M:::::::::::::::::88@
8888 MM::::::MM:::::::::::::::::::::MM:::::::::::::::::88@
888 M:::::::MM:::::::::::::::::::MM::M::::::::::::::::*8
888 MM:::::::MMM::::::::::::::::MM:::MM:::::::::::::::M
88 M::::::::MMMM:::::::::::MMMM:::::MM::::::::::::MM
88 MM:::::::::MMMMMMMMMMMMMMM::::::::MMM::::::::MMM
88 MM::::::::::::MMMMMMM::::::::::::::MMMMMMMMMM
88 8MM::::::::::::::::::::::::::::::::::MMMMMM
~
E
may~
. 8888 8888888
888888888888888888888888
8888:::8888888888888888888888888
8888::::::8888888888888888888888888888
88::::::::888:::8888888888888888888888888
88888888::::8:::::::::::88888888888888888888
888 8::888888::::::::::::::::::88888888888 888
88::::88888888::::m::::::::::88888888888 8
888888888888888888:M:::::::::::8888888888888
88888888888888888888::::::::::::M88888888888888
8888888888888888888888:::::::::M8888888888888888
8888888888888888888888:::::::M888888888888888888
8888888888888888::88888::::::M88888888888888888888
88888888888888888:::88888:::::M888888888888888 8888
88888888888888888:::88888::::M::;o*M*o;888888888 88
88888888888888888:::8888:::::M:::::::::::88888888 8
88888888888888888::::88::::::M:;:::::::::::888888888
8888888888888888888:::8::::::M::aAa::::::::M8888888888 8
88 8888888888::88::::8::::M:::::::::::::888888888888888 8888
88 88888888888:::8:::::::::M::::::::::;::88:88888888888888888
8 8888888888888:::::::::::M::"@@@@@@@"::::8w8888888888888888
88888888888:888::::::::::M:::::"@a@":::::M8i888888888888888
8888888888::::88:::::::::M88:::::::::::::M88z88888888888888888
8888888888:::::8:::::::::M88888:::::::::MM888!888888888888888888
888888888:::::8:::::::::M8888888MAmmmAMVMM888*88888888 88888888
888888 M:::::::::::::::M888888888:::::::MM88888888888888 8888888
8888 M::::::::::::::M88888888888::::::MM888888888888888 88888
888 M:::::::::::::M8888888888888M:::::mM888888888888888 8888
888 M::::::::::::M8888:888888888888::::m::Mm88888 888888 8888
88 M::::::::::::8888:88888888888888888::::::Mm8 88888 888
88 M::::::::::8888M::88888::888888888888:::::::Mm88888 88
8 MM::::::::8888M:::8888:::::888888888888::::::::Mm8 4
8M:::::::8888M:::::888:::::::88:::8888888::::::::Mm 2
88MM:::::8888M:::::::88::::::::8:::::888888:::M:::::M
8888M:::::888MM::::::::8:::::::::::M::::8888::::M::::M
88888M:::::88:M::::::::::8:::::::::::M:::8888::::::M::M
88 888MM:::888:M:::::::::::::::::::::::M:8888:::::::::M:
8 88888M:::88::M:::::::::::::::::::::::MM:88::::::::::::M
88888M:::88::M::::::::::*88*::::::::::M:88::::::::::::::M
888888M:::88::M:::::::::88@@88:::::::::M::88::::::::::::::M
888888MM::88::MM::::::::88@@88:::::::::M:::8::::::::::::::*8
88888 M:::8::MM:::::::::*88*::::::::::M:::::::::::::::::88@@
8888 MM::::::MM:::::::::::::::::::::MM:::::::::::::::::88@@
888 M:::::::MM:::::::::::::::::::MM::M::::::::::::::::*8
888 MM:::::::MMM::::::::::::::::MM:::MM:::::::::::::::M
88 M::::::::MMMM:::::::::::MMMM:::::MM::::::::::::MM
88 MM:::::::::MMMMMMMMMMMMMMM::::::::MMM::::::::MMM
88 MM::::::::::::MMMMMMM::::::::::::::MMMMMMMMMM
88 8MM::::::::::::::::::::::::::::::::::MMMMMM
~
E
june~
. :AMMMMMMMMMMMMA:
:AMMMMMMMMMHHHHHMMMMMMMMA:
:AMHMMMMHHMHIHHIMMMHMMMMHHA:
:AM'MMMMMMHHIHHHIMMMMMIMMHHHH:
AM:IMMMMMHHIHIHHHIMMHHHHHHHHHH
AMIIHMMMMMHIHHHIHHIHHHHHHHHHHHH:
MMIHHMMMMMHHIHHHIHHHHHHHHHHHHHHH
AMMMMMHHHHHHI;;;;;;;IHHHI;;IHHHHH
MMMMHIIII;":AMMMMA ,[[, HH
MMMMHII; AW"'''' :: HH
IHHIHIII;:'' ,GFMF[ [MM[: IH
AHHIHII;::': ";[P,[ ;; :::: IH
IHHHIHII;;:: :[;: ;H
AHHHHHII;;;:: : : [ : ;H
IHHIIHI:[;;;:: ; ; ; , , IH
IHHIIHH:[;;;: ; ;: ':"::" '; IH
IHHIIHI:[;;: ::: ; ,,,, ' HH
:IHHHIHHMMA;::: [;;""""""[; AMI
;IHHHHIIHMM;: : : ;;[,,,,[; HHI
IIHHMMHHIHHM;:: '"""' AMHI
IIHHMMHMHHIIIM;:: AMMHI
IHHHMMHMHMHHHIHI;:: :AMMMHI
IHHHMMMMHMMHHHII;;;;:: :,;; MMMHHI
IHHHMMHHHHMMHHHI;:";;;;;;" MMMIH'
;IHHMMHMMMMHF"HHII MMMHH
IHHMMHV;;:: HHII;: : MMHHI
IHHMV;;::: HHII;: : : MMHI;
IHMV;;:: : "HII;: :: MMI;
:IHV;:: : 'HI: :: MM;
IV;:: : : "II;: ;
IH;;::: : ;;;I: ;
;M;;:::: : ';;;HI: '
MH;;:::: : ';;HI: ;
IM;;;::: : :[; ';I"I: ;
M;;;::: : : [;;,: ' : '
;;:::: : ::'' : ':
;;::: : : ': :
:;;:: : :: ':'
;;:: : : : '':
;;:: : : :;,:
;;:: : :: ;[[[,:
:;;:: : : ;;[[[;':
;;:: : : [:: : : ;[[[[;;[,
;:: : [;;;: : :, [[[[['[[;
;:: : :M;;: : :,[ [[[[ [['
;: : "[:: : ::[ ;[' ;[
;: : "[: : ::[ :' :'
:: :: : ", :::;[ :' :;
: :: ': : :::;[ ::' :;
:: ; : : ::::;[:,,::;;I' ;;
;;:;: : : : :::::::: '""' I[[;"'
;;;:: : : '::::' ;
;;;:: : : : ;
';;;;::: : : ': ;
';;:::: : :
M;:::: : ':
MMMI;:::: : ;
MMMMMA;::: :
AHHMMMMHA;:::: : ;
:MHHMMMMMMMA;: ' :
AHHHMMM;"TTTTL: : ;
AHHHHHHMMLLLLLH ': :
:MHHH:::;HHMMMMMA: : ;
:AHHH:::HH;;;;;MMM;: :
:MHH;: ;;;;;MMM:: : : ;
:MH;: : ';;;;MMM:: ': ':
,H;: ';;;MMM::: :':' ;
,;: : : : ;;;Y;H:: :
,;: : : : ';;;:; : : ; ;
[;:: : ;;:; ; ; ;
~
E
july~
. ,.--.. . ,.--..
,::.'.. . . "VI:I:".':-.,. ,::.'.. . . "VI:I:".':-.,.
,I::. .. . 'VHMHII:.::;:.:,.. ,I::. .. . 'VHMHII:.::;:.:,..
@ -1558,7 +1570,7 @@ March~
':::.:... ..I::I::.:....:. .: .. ...::. . . III:II:. ' ':::.:... ..I::I::.:....:. .: .. ...::. . . III:II:. '
~ ~
E E
april~ august~
. nHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHn. . nHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHn.
.MS?MMMMMMMMMMMMMMMMMM?MM-MMMMMMMMMSHMMMMMMM .MS?MMMMMMMMMMMMMMMMMM?MM-MMMMMMMMMSHMMMMMMM
MMMMMH?MMMMMMMX*MM?MMX%MM/MMMMMM"HMMMMMMMMMMMM MMMMMH?MMMMMMMX*MM?MMX%MM/MMMMMM"HMMMMMMMMMMMM
@ -1611,8 +1623,8 @@ april~
%% % %%%%%% %% % %%%%%%
~ ~
E E
june~ september~
. .:IIIIHIHHIHHHII::I:. . .:IIIIHIHHIHHHII::I:.
:IIIIHIHHHHHHMMHHIHHIIHHIII:. :IIIIHIHHHHHHMMHHIHHIIHHIII:.
,.:HIHHHHHHHHHHHHHHHHHHHHHIHIHHII:. ,.:HIHHHHHHHHHHHHHHHHHHHHHIHIHHII:.
.:IIHHHHHHHHMMMMMHHHHMMMHHMHHHIIIHIIII: .:IIHHHHHHHHMMMMMHHHHMMMHHMHHHIIIHIIII:
@ -1669,18 +1681,6 @@ IHHHHMHMMMMMMMHHHHHI:IT:TI:..:HI:.. ..:. . :IHII
::.:............. .. . ...AHIHIIIIIHHHI::""' 'VII:.. .. . ::.:............. .. . ...AHIHIIIIIHHHI::""' 'VII:.. .. .
::.:.:.......... .. . ...HHHIIIIIIHHHI::. . 'VII::. . . , ::.:.:.......... .. . ...HHHIIIIIIHHHI::. . 'VII::. . . ,
':::.:.:..... .. . . . ..:MHHIHIIIII:I::. . 'VII:::. .. . ':::.:.:..... .. . . . ..:MHHIHIIIII:I::. . 'VII:::. .. .
:::::.:..:.... . . . ...AHHHHIHIIII:::. . 'VII:::. . . :.
:::::::.:..... .. . ....MHHHHHIHIII::.:.. . 'VII::. . ::
:::::::::.:.... .. ....:MHHHHIHII:I::::... . 'VI::. . ::I)
'::::::::::.:... .. ...:MHHHHIHIIII::::.. . 'VI:. ...:V
.:::::::::::.:.... . .AMMHHIHIII:I::::... . . I::. ...:-"
:.::I::::::::.:. . ..MMMHHIHIIII:I:::... . . .::. ,..-"
:..:II:I:::::.:.. . ..MMMHHIHIIIIIII:I::.... . . ..::""'
.::.:III:I::::::.:.. ..MMMMIVHIHIIIII:I::::.... . .....:,
.:.::..:III:I:::::.:... .MMHMAIVHHIHIIIII:I::::.. . ..::..:,
. .:::.::III:I::::.:... .VMMHMAIVHHHIHIIII:I::::.. ..:...:::
. :::I.:::III:I:::.::.. .:MMHHMAIVHHIHIIIII:I::::....:::.::::
.::IIH.:::III:I::::.:.. .MMHMHMAIVHHHIHIIIIII:I
~ ~
#186 #186
scroll poem irish~ scroll poem irish~
@ -1712,6 +1712,20 @@ mushrooms~
The mushrooms appear not to be poisonous and are relatively clean. They look The mushrooms appear not to be poisonous and are relatively clean. They look
edible. edible.
~ ~
#188
iron bound wooden chest~
an iron bound chest~
A large wooden chest with bands of iron circling it is closed with its lock hanging open.~
~
15 0 0 0 0 a 0 0 0 0 0 0 0
50 5 -1 0
50 0 0 0
E
iron bound wooden chest~
The chest is in excellent condition. Made from a fine grain of wood it is
stained and polished to a shine. Bands of iron to wrap around the chest. But,
the lock hangs open.
~
#190 #190
potion deep green remove curse~ potion deep green remove curse~
a potion of remove curse~ a potion of remove curse~

View file

@ -679,7 +679,7 @@ A postal worker's shotgun is beckoning you.~
5 0 0 0 0 ano 0 0 0 0 0 0 0 5 0 0 0 0 ano 0 0 0 0 0 0 0
1 1 1 12 1 1 1 12
1 1 0 0 1 1 0 0
T 1361 T 45
E E
shotgun~ shotgun~
A shotgun with the emblem of the USPS on the hilt. A shotgun with the emblem of the USPS on the hilt.
@ -698,20 +698,6 @@ ruby slippers~
The depp red slippers sparkle with magic and energy. They are rumored to be The depp red slippers sparkle with magic and energy. They are rumored to be
able to take you home if you say there is no place like home. able to take you home if you say there is no place like home.
~ ~
#1396
quarter coin~
a quarter~
A typical U.S. quarter that appears to be perfect for flipping.~
~
12 0 0 0 0 a 0 0 0 0 0 0 0
0 0 0 0
1 1 0 0
T 1393
E
coin quarter~
This quarter is perfect for deciding those difficult boolean questions you
may have. Just "flip quarter"
~
#1397 #1397
christmas poem soldiers~ christmas poem soldiers~
a soldiers christmas poem~ a soldiers christmas poem~

View file

@ -22,6 +22,27 @@ CircleMUD v3.0 Shop File~
28 28
0 0
0 0
#1~
-1
1.00
1.00
-1
%s Sorry, I don't stock that item.~
%s You don't seem to have that.~
%s I don't trade in such items.~
%s I can't afford that!~
%s You are too poor!~
%s That'll be %d coins, thanks.~
%s I'll give you %d coins for that.~
0
0
-1
0
-1
0
28
0
0
#99~ #99~
91 91
92 92

View file

@ -8,7 +8,7 @@ Non-attachable trigger~
Mob Tutorial Example Quest Offer - M14~ Mob Tutorial Example Quest Offer - M14~
0 g 100 0 g 100
~ ~
* By Rumble of The Builder Academy builderacademy.net 9091 * By Rumble of The Builder Academy tbamud.com 9091
* A very basic 3 trigger receive quest. Trigs 1-3. * A very basic 3 trigger receive quest. Trigs 1-3.
* Make sure the actor is a player first. * Make sure the actor is a player first.
if %actor.is_pc% if %actor.is_pc%
@ -30,7 +30,7 @@ end
Mob Tutorial Example Kill Ogre - 16~ Mob Tutorial Example Kill Ogre - 16~
0 f 100 0 f 100
~ ~
* By Rumble of The Builder Academy builderacademy.net 9091 * By Rumble of The Builder Academy tbamud.com 9091
* A very basic 3 trigger receive quest. Trigs 1-3. * A very basic 3 trigger receive quest. Trigs 1-3.
say you got the best of me %actor.name%. But I'll be back. say you got the best of me %actor.name%. But I'll be back.
* Load the wings to be returned to the questmaster. * Load the wings to be returned to the questmaster.
@ -42,7 +42,7 @@ say you got the best of me %actor.name%. But I'll be back.
Mob Tutorial Example Completion - 14~ Mob Tutorial Example Completion - 14~
0 j 100 0 j 100
~ ~
* By Rumble of The Builder Academy builderacademy.net 9091 * By Rumble of The Builder Academy tbamud.com 9091
* A very basic 3 trigger receive quest. Trigs 1-3. * A very basic 3 trigger receive quest. Trigs 1-3.
* Check if this was indeed the right object. * Check if this was indeed the right object.
if %object.vnum% == 1 if %object.vnum% == 1
@ -64,7 +64,7 @@ end
Tutorial II Guard Greet - 24~ Tutorial II Guard Greet - 24~
0 g 100 0 g 100
~ ~
* By Rumble of The Builder Academy builderacademy.net 9091 * By Rumble of The Builder Academy tbamud.com 9091
* A basic guard bribe trigger. Trigs 4, 5, 7, 8. * A basic guard bribe trigger. Trigs 4, 5, 7, 8.
* This is a N S road so only greet players arriving from the south. * This is a N S road so only greet players arriving from the south.
if %direction% == south && %actor.is_pc% if %direction% == south && %actor.is_pc%
@ -78,7 +78,7 @@ end
Tutorial II Guard Bribe 10 - 24~ Tutorial II Guard Bribe 10 - 24~
0 m 1 0 m 1
~ ~
* By Rumble of The Builder Academy builderacademy.net 9091 * By Rumble of The Builder Academy tbamud.com 9091
* A basic guard bribe trigger. Trigs 4, 5, 7, 8. * A basic guard bribe trigger. Trigs 4, 5, 7, 8.
* This is a comment. Always use amplifying comments to explain your Triggers! * This is a comment. Always use amplifying comments to explain your Triggers!
* If actor gives 10 coins or more. * If actor gives 10 coins or more.
@ -108,7 +108,7 @@ end
Obj Command Magic Eight Ball - O47~ Obj Command Magic Eight Ball - O47~
1 c 2 1 c 2
shake~ shake~
* By Rumble of The Builder Academy builderacademy.net 9091 * By Rumble of The Builder Academy tbamud.com 9091
* Numeric Arg: 2 means in character's carried inventory. * Numeric Arg: 2 means in character's carried inventory.
* Command trigs do not work for level 32 and above. * Command trigs do not work for level 32 and above.
* There are 20 possible answers that the Magic Eight Ball can give. * There are 20 possible answers that the Magic Eight Ball can give.
@ -203,7 +203,7 @@ end
Tutorial II Guard Closes Gate - 24~ Tutorial II Guard Closes Gate - 24~
0 e 0 0 e 0
The gate is opened from~ The gate is opened from~
* By Rumble of The Builder Academy builderacademy.net 9091 * By Rumble of The Builder Academy tbamud.com 9091
* A basic guard bribe trigger. Trigs 4, 5, 7, 8. * A basic guard bribe trigger. Trigs 4, 5, 7, 8.
* This is required to close the gate after someone opens it from the other * This is required to close the gate after someone opens it from the other
* side. * side.
@ -216,7 +216,7 @@ lock gate
Tutorial II Guard Closes Gate 2 - 24~ Tutorial II Guard Closes Gate 2 - 24~
0 e 0 0 e 0
leaves north.~ leaves north.~
* By Rumble of The Builder Academy builderacademy.net 9091 * By Rumble of The Builder Academy tbamud.com 9091
* A basic guard bribe trigger. Trigs 4, 5, 7, 8. * A basic guard bribe trigger. Trigs 4, 5, 7, 8.
* This is required to close the gate after the guard is bribed and someone * This is required to close the gate after the guard is bribed and someone
* leaves to the north. * leaves to the north.
@ -229,7 +229,7 @@ lock gate
Tutorial Quest 1317 - Starter~ Tutorial Quest 1317 - Starter~
0 g 100 0 g 100
~ ~
* By Rumble of The Builder Academy builderacademy.net 9091 * By Rumble of The Builder Academy tbamud.com 9091
* Quest Trigs 9-12. If the player comes from the south and has not done the quest. * Quest Trigs 9-12. If the player comes from the south and has not done the quest.
if %direction% == south if %direction% == south
if %actor.varexists(solved_tutorial_quest_zone_0)% if %actor.varexists(solved_tutorial_quest_zone_0)%
@ -247,7 +247,7 @@ end
Tutorial Quest 1317 - Accept~ Tutorial Quest 1317 - Accept~
0 d 1 0 d 1
yes~ yes~
* By Rumble of The Builder Academy builderacademy.net 9091 * By Rumble of The Builder Academy tbamud.com 9091
* Quest Trigs 9-12. If the player has not done the quest give them a hint. * Quest Trigs 9-12. If the player has not done the quest give them a hint.
if !%actor.varexists(solved_tutorial_quest_zone_0)% if !%actor.varexists(solved_tutorial_quest_zone_0)%
wait 1 sec wait 1 sec
@ -261,32 +261,32 @@ end
Tutorial Quest 1317 - Completion~ Tutorial Quest 1317 - Completion~
0 j 100 0 j 100
~ ~
* By Rumble of The Builder Academy builderacademy.net 9091 * By Rumble of The Builder Academy tbamud.com 9091
* Quest Trigs 9-12. If the player returns the right object reward them. * Quest Trigs 9-12. If the player returns the right object reward them.
if !%actor.varexists(solved_tutorial_quest_zone_0)% && %object.vnum% == 1394 if !%actor.varexists(solved_tutorial_quest_zone_0)% && %object.vnum% == 1394
dance set solved_tutorial_quest_zone_0 1
wait 1 sec remote solved_tutorial_quest_zone_0 %actor.id%
say Thank you, %actor.name%. %purge% %object%
nop %actor.exp(50)% dance
nop %actor.gold(50)% wait 1 sec
say finally, now I can get some answers. say Thank you, %actor.name%.
wait 1 sec nop %actor.exp(50)%
emote shakes the magic eight ball vigorously. nop %actor.gold(50)%
wait 1 sec say finally, now I can get some answers.
emote does not seem too pleased with his answer. wait 1 sec
set solved_tutorial_quest_zone_0 1 emote shakes the magic eight ball vigorously.
remote solved_tutorial_quest_zone_0 %actor.id% wait 1 sec
%purge% %object% emote does not seem too pleased with his answer.
else else
say I don't want that! say I don't want that!
junk %object.name% junk %object.name%
end end
~ ~
#12 #12
Tutorial Quest 1441 - Load 8ball~ Tutorial Quest 1441 - Load 8ball~
2 g 100 2 g 100
~ ~
* By Rumble of The Builder Academy builderacademy.net 9091 * By Rumble of The Builder Academy tbamud.com 9091
* Quest Trigs 9-12. Drop the 8ball on their head when they enter. * Quest Trigs 9-12. Drop the 8ball on their head when they enter.
wait 1 sec wait 1 sec
%echoaround% %actor.name% A magic eight ball drops from the sky striking %actor.name% on the head. %echoaround% %actor.name% A magic eight ball drops from the sky striking %actor.name% on the head.
@ -309,7 +309,7 @@ end
Restorative Comfy Bed 1401 - Heal~ Restorative Comfy Bed 1401 - Heal~
1 b 100 1 b 100
~ ~
* By Rumble of The Builder Academy builderacademy.net 9091 * By Rumble of The Builder Academy tbamud.com 9091
* Healing Bed Trigs 13-15. Heals those who sleep on it. * Healing Bed Trigs 13-15. Heals those who sleep on it.
set room_var %actor.room% set room_var %actor.room%
set target_char %room_var.people% set target_char %room_var.people%
@ -336,7 +336,7 @@ end
Damage Example~ Damage Example~
2 g 100 2 g 100
~ ~
* By Rumble of The Builder Academy builderacademy.net 9091 * By Rumble of The Builder Academy tbamud.com 9091
* First put a wait in so the echo waits for the player to get into the room. * First put a wait in so the echo waits for the player to get into the room.
wait 1 sec wait 1 sec
%echo% As %actor.name% enters the room a bolt of lightning smites %actor.himher%. %echo% As %actor.name% enters the room a bolt of lightning smites %actor.himher%.
@ -410,7 +410,7 @@ end
Switch Echo Example~ Switch Echo Example~
2 g 100 2 g 100
~ ~
* By Rumble of The Builder Academy builderacademy.net 9091 * By Rumble of The Builder Academy tbamud.com 9091
* put a wait in here so it doesn't fire before the player enters the room * put a wait in here so it doesn't fire before the player enters the room
wait 1 wait 1
switch %random.3% switch %random.3%
@ -442,7 +442,7 @@ done
AT Example~ AT Example~
2 b 100 2 b 100
~ ~
* By Rumble of The Builder Academy builderacademy.net 9091 * By Rumble of The Builder Academy tbamud.com 9091
* put a wait in here so it doesn't fire before the player enters the room * put a wait in here so it doesn't fire before the player enters the room
%at% 33 %echo% at'd to a room %at% 33 %echo% at'd to a room
%at% Rumble %echo% at'd to Rumble %at% Rumble %echo% at'd to Rumble
@ -451,7 +451,7 @@ AT Example~
Rumble's Spy~ Rumble's Spy~
0 d 100 0 d 100
*~ *~
* By Rumble of The Builder Academy builderacademy.net 9091 * By Rumble of The Builder Academy tbamud.com 9091
* put a wait in here so it doesn't fire before the player enters the room * put a wait in here so it doesn't fire before the player enters the room
* Arguments: * means all speech will trigger this. * Arguments: * means all speech will trigger this.
* This will echo all speech to Rumble. * This will echo all speech to Rumble.
@ -461,16 +461,13 @@ Rumble's Spy~
Transform Example~ Transform Example~
0 g 100 0 g 100
~ ~
* %transform% test * By Rumble of The Builder Academy tbamud.com 9091
* as a greet trigger, entering the room will cause * As a greet trigger, entering the room will cause this mob to transform into
* the mob this is attached to, to toggle between mob 1 and 99. * a random mob vnum 100-199.
say Beginning transform. emote starts to twist and contort into something different.
if %self.vnum%==1 eval number %random.100% + 99
%transform% 99 %transform% %number%
else say Transform complete to mob %number%.
%transform% -1
end
say Transform complete.
~ ~
#22 #22
IF Example~ IF Example~
@ -541,32 +538,7 @@ end
While Damage Example - Grenade O1301~ While Damage Example - Grenade O1301~
1 h 100 1 h 100
~ ~
* By Rumble of The Builder Academy builderacademy.net 9091 * By Rumble of The Builder Academy tbamud.com 9091
* A small script to make a grenade go off 3 seconds after it is dropped.
* Set the rooms ID to a variable.
set room_var %actor.room%
wait 3 s
* Send a message when the bomb goes off.
%echo% The Grenade blasts into smithereens, striking everyone here.
* Target the first char.
set target_char %room_var.people%
* Now loop through everyone in the room and hurt them.
while %target_char%
%send% %actor% People: %target_char.name%
%send% %actor% Next_in_room: %self.next_in_room%
* Set the next target before this one perhaps dies.
set tmp_target %target_char.next_in_room%
* This is where the good/bad things are supposed to happen.
%send% %target_char% The explosion hurts you.
* Damage them... 30 hitpoints. To heal use -#.
%damage% %target_char% 30
* Set the next target.
set target_char %tmp_target%
* Loop back.
done
* After we go through everyone get rid of the grenade.
%purge% %self%
* By Rumble of The Builder Academy builderacademy.net 9091
* A small script to make a grenade go off 3 seconds after it is dropped. * A small script to make a grenade go off 3 seconds after it is dropped.
* Set the rooms ID to a variable. * Set the rooms ID to a variable.
set room_var %actor.room% set room_var %actor.room%
@ -594,7 +566,7 @@ done
Room While Teleport Example~ Room While Teleport Example~
2 b 100 2 b 100
~ ~
* By Rumble of The Builder Academy builderacademy.net 9091 * By Rumble of The Builder Academy tbamud.com 9091
* Target the first person or mob in the room. * Target the first person or mob in the room.
eval person %self.people% eval person %self.people%
wait 1 sec wait 1 sec
@ -612,69 +584,98 @@ done
Command Example~ Command Example~
2 c 100 2 c 100
l~ l~
* By Rumble of The Builder Academy tbamud.com 9091
* A command trigger to demonstrate basic usage. The Arg list 'l' will capture
* any 'l' word. We are looking specifically for the MUD command (all commands
* are listed under COMMANDS) 'look' with the abbreviated argument of 'window.'
if %cmd.mudcommand% == look && window /= %arg% if %cmd.mudcommand% == look && window /= %arg%
%echo% %actor.name% %arg% at the %arg%. %echo% %actor.name% typed %cmd% to %cmd.mudcommand% at the %arg%.
else
* Without this return zero a player would be unable to look at anything else
* in the room, leave, list, etc.
return 0
end end
~ ~
#26 #26
Blocks Mobs Not Following~ Blocks Mobs Not Following~
2 g 100 2 g 100
~ ~
* This trigger blocks all mobs except those that are charmed, pets, etc. Name: 'Blocks Mobs Not Following', VNum: [ 26], RNum: [ 26]
Trigger Intended Assignment: Rooms
Trigger Type: Enter , Numeric Arg: 100, Arg list: None
Commands:
* By Rumble of The Builder Academy tbamud.com 9091
* This trigger blocks all mobs except those that are following.
* If actor is a mob, !is_pc actually means not a PC.
if !%actor.is_pc% if !%actor.is_pc%
* If the mob does not have a master than do not let it enter. * If the mob does not have a master.
if !%actor.master% if !%actor.master%
* Return 0 prevents the mob from entering.
return 0 return 0
end end
end end
~ ~
#27 #27
Character Variables Example~ Actor Variables Example~
0 b 100 0 b 100
~ ~
* Variables Example by Rumble * By Rumble of The Builder Academy tbamud.com 9091
* Random trigger so we must define actor * A listing and demonstration of all actor variables.
* Random triggers do not have actors so we must define one.
set actor %random.char% set actor %random.char%
* Make sure actor can be seen and is a player. * Make sure the actor can be seen and is a player.
if %actor.canbeseen% && %actor.is_pc% if %actor.canbeseen% && %actor.is_pc%
%echo% ACTOR.NAME: %actor.name%
%echo% AGE: %actor.age%
%echo% ALIAS: %actor.alias%
%echo% CANBESEEN: %actor.canbeseen%
%echo% CHARISMA: %actor.cha% %echo% CHARISMA: %actor.cha%
%echo% CLASS: %actor.class%
%echo% CONSTITUTION: %actor.con% %echo% CONSTITUTION: %actor.con%
%echo% DEXTERITY: %actor.dex% %echo% DEXTERITY: %actor.dex%
%echo% INTELLIGENCE: %actor.int%
%echo% STRENGTH/STRADD: %actor.str%/%actor.stradd%
%echo% WISDOM: %actor.wis%
%echo% ALIAS: %actor.alias%
%echo% ALIGN: %actor.align%
%echo% AFFECT: %actor.affect%
%echo% CANBESEEN: %actor.canbeseen%
%echo% CLASS: %actor.class%
%echo% DRUNK: %actor.drunk%
%echo% EXPERIENCE: %actor.exp% %echo% EXPERIENCE: %actor.exp%
%echo% FIGHTING: %actor.fighting% %echo% FIGHTING: %actor.fighting%
%echo% GOLD: %actor.gold%
* %echo% HAS_ITEM: %actor.has_item(1300)%
%echo% ID: %actor.id%
%echo% INTELLIGENCE: %actor.int%
%echo% IS_KILLER: %actor.is_killer%
%echo% IS_THIEF: %actor.is_thief%
%echo% LEVEL: %actor.level%
%echo% HITPOINTS: %actor.hitp%
%echo% MANA: %actor.mana%
%echo% MOVEMENT POINTS: %actor.move%
%echo% MASTER: %actor.master%
%echo% FOLLOWER: %actor.follower% %echo% FOLLOWER: %actor.follower%
%echo% MAX HITPOINTS: %actor.maxhitp% %echo% GOLD: %actor.gold%
%echo% MAX MANA: %actor.maxmana% %echo% HAS_ITEM: %actor.has_item(1332)%
%echo% MAX MOVE: %actor.maxmove%
%echo% NEXT_IN_ROOM: %actor.next_in_room%
%echo% PRACTICES %actor.prac%
%echo% ROOM: %actor.room%
%echo% SEX: %actor.sex%
%echo% HISHER: %actor.hisher%
%echo% HESHE: %actor.heshe% %echo% HESHE: %actor.heshe%
%echo% HIMHER: %actor.himher% %echo% HIMHER: %actor.himher%
%echo% INVENTORY: %actor.inventory% %echo% HISHER: %actor.hisher%
%echo% HITPOINTS: %actor.hitp%
%echo% HUNGER: %actor.hunger%
%echo% ID: %actor.id%
%echo% INV: %actor.inventory%
%echo% IS_KILLER: %actor.is_killer%
%echo% IS_PC: %actor.is_pc%
%echo% IS_THIEF: %actor.is_thief%
%echo% LEVEL: %actor.level%
%echo% MANA: %actor.mana%
%echo% MASTER: %actor.master%
%echo% MAX HP: %actor.maxhitp%
%echo% MAX MANA: %actor.maxmana%
%echo% MAX MOVE: %actor.maxmove%
%echo% MOVE: %actor.move%
%echo% NAME: %actor.name%
%echo% NEXT_IN_ROOM: %actor.next_in_room%
%echo% POSITION: %actor.pos%
%echo% PRACTICES: %actor.prac%
%echo% QUESTPOINTS: %actor.questpoints%
%echo% ROOM: %actor.room%
%echo% SAVING_PARA: %actor.saving_para%
%echo% SAVING_ROD: %actor.saving_rod%
%echo% SAVING_PETRI: %actor.saving_petri%
%echo% SAVING_BREATH: %actor.saving_breath%
%echo% SAVING_SPELL: %actor.saving_spell%
%echo% SEX: %actor.sex%
%echo% SKILL BACKSTAB: %actor.skill(backstab)% %echo% SKILL BACKSTAB: %actor.skill(backstab)%
%echo% STRENGTH/STRADD: %actor.str%/%actor.stradd% %echo% THIRST: %actor.thirst%
%echo% TITLE: %actor.title% %echo% TITLE: %actor.title%
%echo% VAREXISTS: %actor.varexists(tba_greeting)%
%echo% VNUM: %actor.vnum% %echo% VNUM: %actor.vnum%
%echo% WISDOM: %actor.wis%
%echo% WEIGHT: %actor.weight% %echo% WEIGHT: %actor.weight%
* Objects TSTAT 28, Rooms TSTAT 29, Text TSTAT 30, Special TSTAT 31. * Objects TSTAT 28, Rooms TSTAT 29, Text TSTAT 30, Special TSTAT 31.
* *
@ -693,9 +694,19 @@ end
Object Variables Example~ Object Variables Example~
1 b 100 1 b 100
~ ~
* By Rumble * By Rumble of The Builder Academy tbamud.com 9091
* A listing and demonstration of all object variables.
%echo% CARRIED_BY: %self.carried_by%
%echo% CONTENTS: %self.contents%
%echo% COST: %self.cost%
%echo% COST_PER_DAY: %self.cost_per_day%
%echo% COUNT: %self.count%
%echo% HAS_IN: %self.has_in%
%echo% ID: %self.id% %echo% ID: %self.id%
%echo% IS_INROOM: %self.is_inroom%
%echo% NAME: %self.name% %echo% NAME: %self.name%
%echo% NEXT_IN_LIST: %self.next_in_list%
%echo% ROOM: %self.room%
%echo% SHORTDESC: %self.shortdesc% %echo% SHORTDESC: %self.shortdesc%
%echo% TIMER: %self.timer% %echo% TIMER: %self.timer%
%echo% TYPE: %self.type% %echo% TYPE: %self.type%
@ -704,44 +715,39 @@ Object Variables Example~
%echo% VAL2: %self.val2% %echo% VAL2: %self.val2%
%echo% VAL3: %self.val3% %echo% VAL3: %self.val3%
%echo% VNUM: %self.vnum% %echo% VNUM: %self.vnum%
%echo% CARRIED_BY: %self.carried_by% %echo% WEARFLAG: %self.wearflag%
%echo% NEXT_IN_LIST: %self.next_in_list%
%echo% WORN_BY: %self.worn_by%
%echo% WEIGHT: %self.weight% %echo% WEIGHT: %self.weight%
%echo% COST: %self.cost% %echo% WORN_BY: %self.worn_by%
%echo% COST_PER_DAY: %self.cost_per_day%
%echo% CONTENTS: %self.contents%
%echo% IS_INROOM: %self.is_inroom%
%echo% ROOM: %self.room%
%echo% VNUM: %self.room.vnum%
%purge% self %purge% self
~ ~
#29 #29
Room Variables Example~ Room Variables Example~
2 b 100 2 b 100
~ ~
* By Rumble * By Rumble of The Builder Academy tbamud.com 9091
%echo% ID: %self.id% * A listing and demonstration of all room variables.
%echo% NAME: %self.name% %echo% CONTENTS: %self.contents%
%echo% NORTH: %self.north% %self.north(vnum)% %echo% NORTH: %self.north% %self.north(vnum)%
%echo% SOUTH: %self.south% %self.south(key)% %echo% SOUTH: %self.south% %self.south(key)%
%echo% SOUTH: %self.south% %self.south(vnum)% %echo% SOUTH: %self.south% %self.south(vnum)%
%echo% EAST: %self.east% %self.east(bits)% %echo% EAST: %self.east% %self.east(bits)%
%echo% WEST: %self.west% %self.west(room)% %echo% WEST: %self.west% %self.west(room)%
%echo% UP: %self.up% %echo% UP: %self.up%
%echo% DOWN: %self.down% %echo% DOWN: %self.down%
%echo% VNUM: %self.vnum% %echo% ID: %self.id%
%echo% PEOPLE: %self.people% %echo% NAME: %self.name%
%echo% WEATHER: %self.weather% %echo% PEOPLE: %self.people%
%echo% SECTOR: %self.sector% %echo% RANDOM.DIR: %self.random.dir%
%echo% CONTENTS: %self.contents% %echo% SECTOR: %self.sector%
%echo% VNUM: %self.vnum%
%echo% WEATHER: %self.weather%
~ ~
#30 #30
Text Variables Example~ Text Variables Example~
2 d 100 2 d 100
*~ *~
* By Rumble * By Rumble of The Builder Academy tbamud.com 9091
* The Arguments: * means all speech will fire the trigger. * A listing and demonstration of all text variables.
%echo% SPEECH: %speech% %echo% SPEECH: %speech%
%echo% STRLEN: %speech.strlen% %echo% STRLEN: %speech.strlen%
%echo% TRIM: %speech.trim% %echo% TRIM: %speech.trim%
@ -749,38 +755,34 @@ Text Variables Example~
%echo% CDR: %speech.cdr% %echo% CDR: %speech.cdr%
%echo% MUDCOMMAND: %speech.mudcommand% %echo% MUDCOMMAND: %speech.mudcommand%
%echo% CONTAINS: %speech.contains(test)% %echo% CONTAINS: %speech.contains(test)%
%echo% CHARAT 3: %speech.charat(3)%
~ ~
#31 #31
Special Variables Example~ Special Variables Example~
2 d 100 2 d 100
*~ *~
* By Rumble * By Rumble of The Builder Academy tbamud.com 9091
* A listing and demonstration of all special variables.
%echo% SELF ID: %self.id% %echo% SELF ID: %self.id%
%echo% HOUR: %time.hour% %echo% HOUR: %time.hour%
%echo% DAY: %time.day% %echo% DAY: %time.day%
%echo% MONTH: %time.month% %echo% MONTH: %time.month%
%echo% YEAR: %time.year% %echo% YEAR: %time.year%
%echo% PEOPLE: %people.1233% %echo% PEOPLE: %people.3%
%echo% RANDOM NUM: %random.99% %echo% RANDOM NUM: %random.99%
%echo% RANDOM PC: %random.char% %echo% RANDOM PC: %random.char%
%echo% SPEECH: %speech% %echo% SPEECH: %speech%
%echo% FINDOBJ: There are %findobj.1233(1300)% objects of vnum 1300 in room 1233. %echo% FINDOBJ: There are %findobj.3(33)% objects of vnum 33 in room 3.
%echo% There is %findobj.1233(1346356)% object of ID 1346356 in room 1233. %echo% There are %findobj.3(guide)% objects of name guide in room 3.
%echo% There are %findobj.1233(app)% objects of name app in room 1233. %echo% FINDMOB: There are %findmob.3(33)% mobs of vnum 33 in room 3.
%echo% There are %findobj.1233(apprehension)% objects of name apprehension in room 1233.
%echo% FINDMOB: There are %findmob.1233(1300)% mobs of vnum 1300 in room 1233.
%echo% There is %findmob.1233(64741)% mobs of ID 64741 in room 1233.
* not working
%echo% There are %findmob.1233(fried)% mobs of name fried in room 1233.
%echo% There are %findmob.1233(friedrich)% mobs of name friedrich in room 1233.
%echo% There are %findmob.self(fried)% mobs of name fried in room 1233.
%echo% There are %findmob.self(friedrich)% mobs of name friedrich in room 1233.
~ ~
#32 #32
Mob Checks Player Inventory~ Mob Checks Player Inventory~
0 g 100 0 g 100
~ ~
* By Jamie Nelson modified by Rumble* Checks if the actor is wielding the item * By Rumble of The Builder Academy tbamud.com 9091
* This trigger has been replaced by the has_item variable. But this is still a
* good example. if %actor.has_item(1300)% does the same thing.
if %actor.eq(wield)% if %actor.eq(wield)%
eval wep %actor.eq(wield)% eval wep %actor.eq(wield)%
if %wep.vnum%==1300 if %wep.vnum%==1300
@ -967,44 +969,41 @@ say %msg%
Switch Example~ Switch Example~
0 g 100 0 g 100
~ ~
* By Falstar * By Falstar of The Builder Academy tbamud.com 9091
switch %random.6% * Pick a random number 1-7, 7 is actually for the default case.
case 0 switch %random.7%
case 1
set book 'Creative cooking with human flesh' set book 'Creative cooking with human flesh'
break break
case 1 case 2
set book 'Re-animating the Dead for Dummies' set book 'Re-animating the Dead for Dummies'
break break
case 2 case 3
set book 'How to teach your henchman to rob graves in 7 days' set book 'How to teach your henchman to rob graves in 7 days'
break break
case 3 case 4
set book 'An A-Z guide of Mage-induced maladies and mutations' set book 'An A-Z guide of Mage-induced maladies and mutations'
break break
case 4 case 5
set book '101 Easy ways to rescue a damsel in distress' set book '101 Easy ways to rescue a damsel in distress'
break break
case 5 case 6
set book 'Witch Hazel's Bumper Book of rare herbs and potions' set book 'Witch Hazel's Bumper Book of rare herbs and potions'
break break
case 6
set book 'Arcane Artifacts made easy'
break
default default
* this should be here, even if it's never reached set book 'Arcane Artifacts made easy'
set book default reached done
done *
* wait 1 s
wait 1 s %echo% Dr. Von Erhartz seems engrossed in reading a large leatherbound book through a battered pair
%echo% Dr. Von Erhartz seems engrossed in reading a large leatherbound book through a battered pair %echo% of reading glasses. The title reads: %book%.
%echo% of reading glasses. The title reads: %book%. %echo% The doctor looks up at you, seeming to notice you for the first time.
%echo% The doctor looks up at you, seeming to notice you for the first time. wait 1 s
wait 1 s say ah %actor.name%, I was wondering when you'd drop by.
say ah %actor.name%, I was wondering when you'd drop by.
~ ~
#35 #35
Mob Room Wander Switch~ Mob Room Specific Speeches~
0 b 100 0 b 5
~ ~
* By Rumble * By Rumble
* So we don't get problems if more than one is loaded. * So we don't get problems if more than one is loaded.
@ -1065,7 +1064,7 @@ done
Time Example~ Time Example~
0 b 1 0 b 1
~ ~
* By Rumble w/help from Jamie Nelson on http://groups.yahoo.com/group/dg_scripts/ * By Rumble of The Builder Academy tbamud.com 9091
* A replica of the "time" command. * A replica of the "time" command.
* Convert hour from 24 hour to 12 hour clock with am/pm * Convert hour from 24 hour to 12 hour clock with am/pm
if %time.hour% > 12 if %time.hour% > 12
@ -1188,28 +1187,44 @@ eval months %%m%time.month%%%
%echo% The %time.day%%suf% Day of the %months%, Year %time.year%. %echo% The %time.day%%suf% Day of the %months%, Year %time.year%.
~ ~
#37 #37
Emote Copycat~ Obj Command quarter flip example~
0 c 100 1 c 2
e~ flip~
if %cmd.mudcommand% == emote && %arg% * By Rumble of The Builder Academy tbamud.com 9091
wait 2 sec * Numeric Arg: 2 means in character's carried inventory
emote %arg% * does not work for level 32 and above.
if coin /= %arg% || quarter /= %arg%
%echoaround% %actor% %actor.name% flips a coin high up into the air.
%send% %actor% You flip the coin up into the air.
switch %random.2%
case 1
%echo% The coin falls to the ground, bounces, rolls, and ends up showing heads!
break
case 2
%echo% The coin falls to the ground, bounces, rolls, and ends up showing tails!
break
default
%echo% The coin falls on its edge and balances perfectly.
break
done
else
%send% %actor% flip What?
end end
~ ~
#38 #38
Mob Receive and Assemble Example~ Mob Receive and Assemble Example~
0 j 100 0 j 100
~ ~
* Example by Aeon * By Aeon of The Builder Academy tbamud.com 9091
wait 2 sec * Check mob's inventory (this does not include equipped items).
* Check mob's inventory (this does not include equipped items)
if %self.inventory(16701)% && %self.inventory(16702)% && %self.inventory(16703)% && %self.inventory(16704)% && %self.inventory(16705)% if %self.inventory(16701)% && %self.inventory(16702)% && %self.inventory(16703)% && %self.inventory(16704)% && %self.inventory(16705)%
* Removing items from the mob * Removing items from the mob.
%purge% flour %purge% %self.inventory(16701)%
%purge% salt %purge% %self.inventory(16702)%
%purge% sugar %purge% %self.inventory(16703)%
%purge% soda %purge% %self.inventory(16704)%
%purge% egg %purge% %self.inventory(16705)%
wait 2 sec
* For roleplay sake * For roleplay sake
say Thank you %actor.name%! Now here is the cake. say Thank you %actor.name%! Now here is the cake.
* Give the reward * Give the reward
@ -1222,7 +1237,8 @@ end
Mob Following Assist Master~ Mob Following Assist Master~
0 b 100 0 b 100
~ ~
* By Rumble * By Rumble of The Builder Academy tbamud.com 9091
* Make following mob assist.
if %self.master% if %self.master%
eval master %self.master% eval master %self.master%
if %master.fighting% if %master.fighting%
@ -1233,33 +1249,65 @@ if %self.master%
end end
~ ~
#40 #40
mfollow Example~ Random Equipment Scatter and Teleport~
0 b 100 2 g 100
~ ~
* By Welcor * By Random of The Builder Academy tbamud.com 9091
set actor %random.char% * Scatter the player and all of their equipment randomly across the zone.
mfollow %actor% wait 1 sec
say I follow you now %actor.name% %send% %actor% You feel you must not have been worthy when a powerful force hurls you back through the gates.
say self.master: %self.master% wait 2 sec
say actor: %actor% eval stunned %actor.hitp% -1
eval follower %self.master% %damage% %actor% %stunned%
say follower: %follower% eval num %random.99% + 20300
say follower.name : %follower.name% %teleport% %actor% %num%
while %actor.inventory%
eval item %actor.inventory%
if %item.type% == CONTAINER
while %item.contents%
eval stolen %item.contents.vnum%
%echo% purging %item.contents.shortdesc% in container.
%purge% %item.contents%
eval num %random.99% + 2300
%at% %num% %load% obj %stolen%
done
end
eval item_to_purge %actor.inventory%
eval stolen %item.vnum%
%purge% %item_to_purge%
eval num %random.99% + 2300
%at% %num% %load% obj %stolen%
done
eval i 0
while %i% < 18
eval item %%actor.eq(%i%)%%
if %item%
eval stolen %item.vnum%
eval item_to_purge %%actor.eq(%i%)%%
%send% %actor% You drop %item.shortdesc%
%purge% %item_to_purge%
eval num %random.99% + 20300
%at% %num% %load% obj %stolen%
end
eval i %i%+1
done
%force% %actor% look
~ ~
#41 #41
Hunt Example~ Memory and Mhunt Example~
0 o 100 0 o 100
~ ~
* Mob must first have a memory trig, attach 74. * By Rumble of The Builder Academy tbamud.com 9091
* Fires if player is in mobs memory via mremember and the mob sees the actor.
%echo% Sleeping for 10 secs, give %actor.name% a head start. %echo% Sleeping for 10 secs, give %actor.name% a head start.
sleep sleep
%echo% Targetting %actor.name% %echo% Targetting %actor.name%
wait 10 s wait 10 s
wake wake
stand stand
north %random.dir%
north %random.dir%
up %random.dir%
%echo% Hunting...%actor.name% %echo% Hunting...%actor.name%
mhunt %actor% mhunt %actor%
~ ~
@ -1380,15 +1428,13 @@ done
Rumble's Shotgun~ Rumble's Shotgun~
1 b 100 1 b 100
~ ~
* By Rumble of The Builder Academy builderacademy.net 9091 * By Rumble of The Builder Academy tbamud.com 9091
* If the object is being wielded. * If the object is being wielded.
if %self.worn_by% if %self.worn_by%
* This is a random trigger so actor has to be defined. * This is a random trigger so actor has to be defined.
eval actor %self.worn_by% eval actor %self.worn_by%
* If the person wielding the object is fighting. * If the person wielding the object is fighting.
if %actor.fighting% if %actor.fighting%
* Evaluate uniquely to this player.
context %actor.id%
* Count the shots. * Count the shots.
eval shotgun_rounds %shotgun_rounds% + 1 eval shotgun_rounds %shotgun_rounds% + 1
* Remember the count for the next time this trig fires. * Remember the count for the next time this trig fires.
@ -1500,7 +1546,7 @@ end
Eval and Set Example~ Eval and Set Example~
2 d 100 2 d 100
test~ test~
* By Rumble of The Builder Academy builderacademy.net 9091 * By Rumble of The Builder Academy tbamud.com 9091
* This is a speech trig @RHELP TRIGEDIT ROOM SPEECH@n, say 'test' to activate. * This is a speech trig @RHELP TRIGEDIT ROOM SPEECH@n, say 'test' to activate.
* There is much confusion about the difference between set and eval. So this is * There is much confusion about the difference between set and eval. So this is
* the simplest way I can think of to explain it (assume %actor.level% = 34): * the simplest way I can think of to explain it (assume %actor.level% = 34):
@ -1818,7 +1864,7 @@ Mob Entry Example~
* first find the room the mob is in and put the value in %inroom% * first find the room the mob is in and put the value in %inroom%
eval inroom %self.room% eval inroom %self.room%
* then check on the rooms vnum * then check on the rooms vnum
if %inroom.vnum% == 1233 if %inroom.vnum% == 33
say I, %self.name%, declare this room Rumble's. say I, %self.name%, declare this room Rumble's.
end end
eval person %inroom.people% eval person %inroom.people%
@ -1923,7 +1969,8 @@ done
Mob Memory Example Part 1~ Mob Memory Example Part 1~
0 g 100 0 g 100
~ ~
* This must be set by another trigger first before the mem trigger can be used. * By Rumble of The Builder Academy tbamud.com 9091
* mremember must be used before you can use the trigger type memory.
mremember %actor.name% mremember %actor.name%
say I'll remember you now, %actor.name% say I'll remember you now, %actor.name%
~ ~
@ -1931,6 +1978,8 @@ say I'll remember you now, %actor.name%
Mob Memory Example Part 2~ Mob Memory Example Part 2~
0 o 100 0 o 100
~ ~
* By Rumble of The Builder Academy tbamud.com 9091
* Fires if player is in mobs memory via mremember and the mob sees the actor.
wait 4 s wait 4 s
poke %actor.name% poke %actor.name%
say i've seen you before, %actor.name%. say i've seen you before, %actor.name%.

View file

@ -443,7 +443,7 @@ end
Mob Act - 156 speaker greet~ Mob Act - 156 speaker greet~
0 e 0 0 e 0
has entered the game.~ has entered the game.~
* By Rumble of The Builder Academy builderacademy.net 9091 * By Rumble of The Builder Academy tbamud.com 9091
* Num Arg 0 means the argument has to match exactly. So trig will only fire off: * Num Arg 0 means the argument has to match exactly. So trig will only fire off:
* "has entered game." and not "has" or "entered" etc. (that would be num arg 1). * "has entered game." and not "has" or "entered" etc. (that would be num arg 1).
* Figure out what vnum the mob is in so we can use zoneecho. * Figure out what vnum the mob is in so we can use zoneecho.
@ -602,7 +602,7 @@ end
Thief Guildguard - 177~ Thief Guildguard - 177~
0 q 100 0 q 100
~ ~
* By Rumble of The Builder Academy builderacademy.net 9091 * By Rumble of The Builder Academy tbamud.com 9091
* This replaces stock guildguard spcial procedure that stops non-class members. * This replaces stock guildguard spcial procedure that stops non-class members.
if %direction% == up if %direction% == up
* Let the guildmaster pass to pawn players items. T137. * Let the guildmaster pass to pawn players items. T137.
@ -624,7 +624,7 @@ end
Thief Guildmaster Steals - M122~ Thief Guildmaster Steals - M122~
0 b 100 0 b 100
~ ~
* By Rumble of The Builder Academy builderacademy.net 9091 * By Rumble of The Builder Academy tbamud.com 9091
* Idea taken from cheesymud.com * Idea taken from cheesymud.com
* Thief guildmaster steals from players who idle in his guild. Then pawns the * Thief guildmaster steals from players who idle in his guild. Then pawns the
* item in the shop downstairs so player has to buy their equipment back :-P * item in the shop downstairs so player has to buy their equipment back :-P
@ -665,74 +665,111 @@ end
Questmaster Greet - 3~ Questmaster Greet - 3~
0 g 100 0 g 100
~ ~
* By Rumble of The Builder Academy builderacademy.net 9091 * By Rumble of The Builder Academy builderacademy.net 9091
* Part of a timed quest to kill a mob or find an object. Trigs 138-144. * Part of a timed quest to kill a mob or find an object. Trigs 138-144.
* Simple quests, probably too simple so only let players earn 50 qp's doing this. * A simple automated quest so only let players earn up to 50 questpoints.
if %actor.is_pc% && %actor.questpoints% < 50 if %actor.is_pc% && %actor.questpoints% < 50
wait 2 sec wait 2 sec
* Check to see if they are not on a zone 1 quest. * Check to see if they are not on a zone 1 quest.
if !%actor.varexists(on_quest_zone_1)% if !%actor.varexists(on_quest_zone_1)%
say Welcome %actor.name%, are you interested in a simple quest? say Welcome %actor.name%, are you interested in a simple quest?
else else
say How is your quest going %actor.name%, do you have a quest token or the quest mobs head for me? *get the values from the player variable
end extract day 1 %actor.on_quest_zone_1%
extract hour 2 %actor.on_quest_zone_1%
* Set this value to the number of mud hours in a mud day
set HOURS_IN_DAY 24
* Compare the values to the current time
* (Your hours per day and days per year vary on each mud.)
* (You may also want to check for 'time.year')
eval current_ticks (%time.day%/%HOURS_IN_DAY%)+%time.hour%
eval start_ticks (%day%/%HOURS_IN_DAY%)+%hour%
*find out the time difference in ticks
eval ticks_passed %current_ticks%-%start_ticks%
*check if 10 ticks (~10 mins) have passed
if %ticks_passed% > 10
rdelete on_quest_zone_1 %actor.id%
say Welcome %actor.name%, are you interested in a simple quest?
else
say How is your quest going %actor.name%, do you have a quest token or the quest mobs head for me?
end
end
end end
~ ~
#139 #139
Questmaster Quest Assignment - 3~ Questmaster Quest Assignment - 3~
0 d 1 0 d 1
*~ *~
* By Rumble of The Builder Academy builderacademy.net 9091 * By Rumble of The Builder Academy builderacademy.net 9091
* Part of a timed quest to kill a mob or find an object. Trigs 138-144. * Part of a timed quest to kill a mob or find an object. Trigs 138-144.
* Don't let them do more than one quest at a time or earn more than 50 qp. if %actor.varexists(on_quest_zone_1)%
if %actor.varexists(on_quest_zone_1)% || %actor.questpoints% > 50 *get the values from the player variable
halt extract day 1 %actor.on_quest_zone_1%
end extract hour 2 %actor.on_quest_zone_1%
* Set this value to the number of mud hours in a mud day
set HOURS_IN_DAY 24
* Compare the values to the current time
* (Your hours per day and days per year vary on each mud.)
* (You may also want to check for 'time.year')
eval current_ticks (%time.day%/%HOURS_IN_DAY%)+%time.hour%
eval start_ticks (%day%/%HOURS_IN_DAY%)+%hour%
*find out the time difference in ticks
eval ticks_passed %current_ticks%-%start_ticks%
*check if 10 ticks (~10 mins) have passed
if %ticks_passed% > 10
rdelete on_quest_zone_1 %actor.id%
else
halt
end
end
if %actor.questpoints% > 50
halt
end
* This loop goes through the entire string of words the actor says. .car is the * This loop goes through the entire string of words the actor says. .car is the
* word and .cdr is the remaining string. * word and .cdr is the remaining string.
eval word %speech.car% eval word %speech.car%
eval rest %speech.cdr% eval rest %speech.cdr%
while %word% while %word%
* Check to see if the word is yes or an abbreviation of yes. * Check to see if the word is yes or an abbreviation of yes.
if yes /= %word% if yes /= %word%
say Very well %actor.name%. Would you like to find an object or hunt a mobile? say Very well %actor.name%. Would you like to find an object or hunt a mobile?
halt halt
end end
* Pick a room from 100 to 365. * Pick a room from 100 to 365.
eval loadroom 99 + %random.265% eval loadroom 99 + %random.265%
if mobile /= %word% || hunt /= %word% if mobile /= %word% || hunt /= %word%
* Load the mob in the random room picked above. * Load the mob in the random room picked above.
%at% %loadroom% %load% m 15 %at% %loadroom% %load% m 15
say Go kill the quest mob and bring me its head %actor.name%. You only have 10 minutes! say Go kill the quest mob and bring me its head %actor.name%. You only have 10 minutes!
* Load an object on the player that counts down from 10 minutes. * Load an object on the player that counts down from 10 minutes.
%load% obj 16 %actor% inv %load% obj 16 %actor% inv
%send% %actor% Gives you the quest timer. %send% %actor% %self.name% gives you the quest timer.
%echoaround% %actor% %self.name% gives %actor.name% the quest timer. %echoaround% %actor% %self.name% gives %actor.name% the quest timer.
set on_quest_zone_1 1 set on_quest_zone_1 %time.day% %time.hour%
remote on_quest_zone_1 %actor.id% remote on_quest_zone_1 %actor.id%
halt halt
elseif object /= %word% || find /= %word% elseif object /= %word% || find /= %word%
say Go find the quest token and return it to me. You only have 10 minutes %actor.name%! say Go find the quest token and return it to me. You only have 10 minutes %actor.name%!
%load% o 15 %load% o 15
%at% %loadroom% drop quest_token_zone_1 %at% %loadroom% drop quest_token_zone_1
%load% obj 16 %actor% inv %load% obj 16 %actor% inv
%send% %actor% Gives you the quest timer. %send% %actor% %self.name% gives you the quest timer.
%echoaround% %actor% %self.name% gives %actor.name% the quest timer. %echoaround% %actor% %self.name% gives %actor.name% the quest timer.
set on_quest_zone_1 1 set on_quest_zone_1 %time.day% %time.hour%
remote on_quest_zone_1 %actor.id% remote on_quest_zone_1 %actor.id%
halt halt
end end
* End of the loop we need to take the next word in the string and save the * End of the loop we need to take the next word in the string and save the
* remainder for the next pass. * remainder for the next pass.
eval word %rest.car% eval word %rest.car%
eval rest %rest.cdr% eval rest %rest.cdr%
done done
~ ~
#140 #140
Quest Timer - 16~ Quest Timer - 16~
1 c 7 1 c 7
l~ l~
* By Rumble of The Builder Academy builderacademy.net 9091 * By Rumble of The Builder Academy tbamud.com 9091
* Part of a timed quest to kill a mob or find an object. Trigs 138-144. * Part of a timed quest to kill a mob or find an object. Trigs 138-144.
* Let a player see how much time they have left. * Let a player see how much time they have left.
if %cmd.mudcommand% == look && timer /= %arg% if %cmd.mudcommand% == look && timer /= %arg%
@ -747,7 +784,7 @@ end
Quest 10 min Purge - 15, 16, 17~ Quest 10 min Purge - 15, 16, 17~
1 f 100 1 f 100
~ ~
* By Rumble of The Builder Academy builderacademy.net 9091 * By Rumble of The Builder Academy tbamud.com 9091
* Part of a timed quest to kill a mob or find an object. Trigs 138-144. * Part of a timed quest to kill a mob or find an object. Trigs 138-144.
* Attached to quest objects 15-17. Purges itself 10 minutes after loading if * Attached to quest objects 15-17. Purges itself 10 minutes after loading if
* player does not finish the quest. * player does not finish the quest.
@ -767,7 +804,7 @@ end
Quest Timer Random - 16~ Quest Timer Random - 16~
1 b 10 1 b 10
~ ~
* By Rumble of The Builder Academy builderacademy.net 9091 * By Rumble of The Builder Academy tbamud.com 9091
* Part of a timed quest to kill a mob or find an object. Trigs 138-144. * Part of a timed quest to kill a mob or find an object. Trigs 138-144.
* If timer is being carried by a player, warn them every 2 minutes. * If timer is being carried by a player, warn them every 2 minutes.
if %self.carried_by% if %self.carried_by%
@ -781,7 +818,7 @@ end
Questmaster Receive - 3~ Questmaster Receive - 3~
0 j 100 0 j 100
~ ~
* By Rumble of The Builder Academy builderacademy.net 9091 * By Rumble of The Builder Academy tbamud.com 9091
* Part of a timed quest to kill a mob or find an object. Trigs 138-144. * Part of a timed quest to kill a mob or find an object. Trigs 138-144.
* Check if they are on the quest. * Check if they are on the quest.
if !%actor.varexists(on_quest_zone_1)% if !%actor.varexists(on_quest_zone_1)%
@ -791,13 +828,13 @@ if !%actor.varexists(on_quest_zone_1)%
end end
* *
wait 1 sec wait 1 sec
* If they have the head or the token. * If they had the head or the token.
if %object.vnum% == 15 || %object.vnum% == 17 if %object.vnum% == 15 || %object.vnum% == 17
rdelete on_quest_zone_1 %actor.id%
say Well done, %actor.name%. say Well done, %actor.name%.
* Give them 50 gold and experience. Delete the on quest variable and purge. * Give them 50 gold and experience. Delete the on quest variable and purge.
nop %actor.exp(50)% nop %actor.exp(50)%
nop %actor.gold(50)% nop %actor.gold(50)%
rdelete on_quest_zone_1 %actor.id%
%purge% %object% %purge% %object%
* Reward them with 1 questpoint. Cheap I know but these quests are not hard. * Reward them with 1 questpoint. Cheap I know but these quests are not hard.
nop %actor.questpoints(1)% nop %actor.questpoints(1)%
@ -812,7 +849,7 @@ end
Quest Mob Loads Head - 15~ Quest Mob Loads Head - 15~
0 n 100 0 n 100
~ ~
* By Rumble of The Builder Academy builderacademy.net 9091 * By Rumble of The Builder Academy tbamud.com 9091
* Part of a timed quest to kill a mob or find an object. Trigs 138-144. * Part of a timed quest to kill a mob or find an object. Trigs 138-144.
* This is a load instead of a death trig because I want the head to purge 10 * This is a load instead of a death trig because I want the head to purge 10
* minutes after loading. * minutes after loading.
@ -913,7 +950,7 @@ emote %speech%
Angel Receives Treats - 207~ Angel Receives Treats - 207~
0 j 100 0 j 100
~ ~
* By Rumble of The Builder Academy builderacademy.net 9091 * By Rumble of The Builder Academy tbamud.com 9091
* A simple receive trig if you give the dog food she will eat it. If you give * A simple receive trig if you give the dog food she will eat it. If you give
* her dog treats she will follow you. Everything else she drops. * her dog treats she will follow you. Everything else she drops.
if %object.type% == FOOD if %object.type% == FOOD
@ -1007,14 +1044,20 @@ end
Check for treats - 207~ Check for treats - 207~
0 g 100 0 g 100
~ ~
* By Rumble of The Builder Academy tbamud.com 9091
* My dog is looking if people have some beggin strips.
if %actor.has_item(164)% if %actor.has_item(164)%
wait 1 sec wait 1 sec
emote sits down and stands up on %self.hisher% hind legs, then starts whining pitifully staring at %actor.name%. %send% %actor% %self.name% sits down and stands up on %self.hisher% hind legs, then starts whining pitifully staring at you.
%echoaround% %actor% %self.name% sits down and stands up on %self.hisher% hind legs, then starts whining pitifully staring at %actor.name%.
* Or if they have her rubber chicken.
elseif %actor.has_item(172)% elseif %actor.has_item(172)%
wait 1 sec
emote sniff %actor.name% emote sniff %actor.name%
wait 1 sec wait 1 sec
growl %actor.name% growl %actor.name%
emote tries to get at something you are carrying. %send% %actor% %self.name% tries to get at something you are carrying.
%echoaround% %actor% %self.name% tries to get at something %actor.name% is carrying.
end end
~ ~
#156 #156
@ -1163,7 +1206,7 @@ end
Cast spells on Greet - M135~ Cast spells on Greet - M135~
0 g 10 0 g 10
~ ~
* By Rumble of The Builder Academy builderacademy.net 9091 * By Rumble of The Builder Academy tbamud.com 9091
* Cast a random spell on players that enter. But, only if they are not already * Cast a random spell on players that enter. But, only if they are not already
* affected and only 10% of the time. * affected and only 10% of the time.
switch %random.12% switch %random.12%
@ -1236,7 +1279,7 @@ done
Mob Questshop Example~ Mob Questshop Example~
0 c 100 0 c 100
*~ *~
* By Rumble of The Builder Academy builderacademy.net 9091 * By Rumble of The Builder Academy tbamud.com 9091
* A questshop that uses questpoints! * A questshop that uses questpoints!
* Command triggers do not work for level 32 and above. * Command triggers do not work for level 32 and above.
if %cmd.mudcommand% == list if %cmd.mudcommand% == list
@ -1878,7 +1921,7 @@ say %speech%
Confucius - 23~ Confucius - 23~
0 b 10 0 b 10
~ ~
* By Rumble of The Builder Academy builderacademy.net 9091 * By Rumble of The Builder Academy tbamud.com 9091
* Confucius - M23 - T186 By Rumble * Confucius - M23 - T186 By Rumble
eval max %random.27% eval max %random.27%
set txt[1] Before you embark on a journey of revenge, dig two graves. set txt[1] Before you embark on a journey of revenge, dig two graves.
@ -2131,7 +2174,10 @@ say The best advice for new builders is under @RHELP SUGGESTIONS@n.
TBA Welcome - 18~ TBA Welcome - 18~
0 e 1 0 e 1
entered reconnected~ entered reconnected~
* By Rumble of The Builder Academy tbamud.com 9091
* TBA mortal greet to fill out the application.
if %actor.is_pc% && %actor.level% == 1 if %actor.is_pc% && %actor.level% == 1
context %actor.id%
wait 1 sec wait 1 sec
if %actor.varexists(TBA_mortal_greeting)% if %actor.varexists(TBA_mortal_greeting)%
say Welcome back %actor.name%. Tell someone level 32 or above when you complete the application. say Welcome back %actor.name%. Tell someone level 32 or above when you complete the application.
@ -2140,7 +2186,9 @@ if %actor.is_pc% && %actor.level% == 1
wait 2 sec wait 2 sec
say If you are interested in learning how to build, or want to teach others, then you have come to the right place. say If you are interested in learning how to build, or want to teach others, then you have come to the right place.
wait 2 sec wait 2 sec
say Please fill out the application at: http://tbamud.com/builderapplication say Please fill out the application at: http://www.geocities.com/buildersacademy
nop %actor.thirst(-1)%
nop %actor.hunger(-1)%
set TBA_mortal_greeting 1 set TBA_mortal_greeting 1
remote TBA_mortal_greeting %actor.id% remote TBA_mortal_greeting %actor.id%
if !%actor.has_item(1332)% if !%actor.has_item(1332)%

View file

@ -48,20 +48,29 @@ CAPITAL~
%send% %actor% @RSocrates tells you, 'Good job, that is correct. Be on the lookout for more of those.'@n %send% %actor% @RSocrates tells you, 'Good job, that is correct. Be on the lookout for more of those.'@n
~ ~
#1304 #1304
free~ Sanct check on enter~
0 g 100 2 g 100
~ ~
wait 1 sec if %actor.affect(SANCT)%
say some more good advice may be found under @RHELP GRAMMAR@n and @RHELP REPORT@n. %echo% checked sanct
else
%echo% sanct check failed
end
~ ~
#1305 #1305
TBA Greeting - 1301~ TBA Greeting - 1301~
0 e 1 0 e 1
arrives entered appears~ arrives entered appears~
* By Rumble of The Builder Academy tbamud.com 9091
* TBA start room greeting for anyone that enters, poofs, or is transferred.
* Simple remote to remember if this is a newbie or someone returning.
* Only fire on players.
if %actor.is_pc% if %actor.is_pc%
wait 1 sec wait 1 sec
* If they have already been greeted welcome them back.
if %actor.varexists(TBA_greeting)% if %actor.varexists(TBA_greeting)%
say Welcome back %actor.name%. Read through these rooms whenever you need a refresher. say Welcome back %actor.name%. Read through these rooms whenever you need a refresher.
* First greeting, give them instructions.
else else
say Welcome to The Builder Academy %actor.name%. say Welcome to The Builder Academy %actor.name%.
wait 1 sec wait 1 sec
@ -70,8 +79,11 @@ if %actor.is_pc%
say This zone is like a newbie zone, except for gods. All you have to do is walk through the zone and read every room description. say This zone is like a newbie zone, except for gods. All you have to do is walk through the zone and read every room description.
wait 3 sec wait 3 sec
say Be sure to do everything the room descriptions tell you to do. You should read and comprehend everything contained within these walls. say Be sure to do everything the room descriptions tell you to do. You should read and comprehend everything contained within these walls.
* Now create a variable to remember they have been greeted.
set TBA_greeting 1 set TBA_greeting 1
* Save it to the player file.
remote TBA_greeting %actor.id% remote TBA_greeting %actor.id%
* Give them a trial vnum assigner if they don't have one yet.
if !%actor.has_item(1332)% if !%actor.has_item(1332)%
%load% obj 1332 %actor% inv %load% obj 1332 %actor% inv
end end
@ -1486,7 +1498,7 @@ free~
Drop While Example - Grenade 01301~ Drop While Example - Grenade 01301~
1 h 100 1 h 100
~ ~
* By Rumble of The Builder Academy builderacademy.net 9091 * By Rumble of The Builder Academy tbamud.com 9091
* A small script to make a grenade go off 3 seconds after it is dropped. * A small script to make a grenade go off 3 seconds after it is dropped.
* Set the rooms ID to a variable. * Set the rooms ID to a variable.
set room_var %actor.room% set room_var %actor.room%
@ -1727,35 +1739,10 @@ while (%person%)
done done
~ ~
#1361 #1361
Postal Shotgun - 1392~ Free~
1 b 100 1 b 100
~ ~
* if the object is being wielded * No Script
if %self.worn_by%
* a random trigger so actor has to be defined
eval actor %self.worn_by%
* if the person wielding the object is fighting
if %actor.fighting%
* evaluate uniquely to this player
context %actor.id%
* count the shots
eval shotgun_rounds %shotgun_rounds% + 1
* remember the count for the next time this trig fires
global shotgun_rounds
* double barrel shotgun, only has 2 rounds
if %shotgun_rounds% > 2
* detaching trig since gun is out of ammo.
detach 1361 %self.id%
halt
end
* have to define the victim
eval victim %actor.fighting%
* send the message and do the damage
%echoaround% %actor% %actor.name% points %self.shortdesc% at %victim.name% and pulls the trigger.
%send% %actor% You point %self.shortdesc% at %victim.name% and pull the trigger.
%damage% %victim% 10
end
end
~ ~
#1362 #1362
Deodorant Bottle - 1391~ Deodorant Bottle - 1391~
@ -2182,60 +2169,63 @@ if (%cmd.mudcommand% == bash || %cmd.mudcommand% == backstab || %cmd.mudcommand%
Rumble's Poofs~ Rumble's Poofs~
0 e 0 0 e 0
has entered the game.~ has entered the game.~
* does not work for level 32 and above. * By Rumble of The Builder Academy tbamud.com 9091
eval maxpoofin %random.24% -1 * To generate random poofs at login just set your loadroom to wherever this
set poofins[0] appears with a strange wooshing sound and climbs out of a pneumatic air tube like they use at the bank. * mob is. Does not work for level 32 and above.
set poofins[1] thinks himself into existence. eval maxpoofin %random.24%
set poofins[2] soars into the room like a bird, and THWAP! right into a window. set poofins[1] appears with a strange wooshing sound and climbs out of a pneumatic air
set poofins[3] crawls out of the ground gasping for air. tube like they use at the bank.
set poofins[4] appears in a flash of blinding nothingness! set poofins[2] thinks himself into existence.
set poofins[5] falls from the sky above, screaming until he hits the ground. SPLAT! like a bug on a windshield. set poofins[3] soars into the room like a bird, and THWAP! right into a window.
set poofins[6] appears with a dulcet bang. set poofins[4] crawls out of the ground gasping for air.
set poofins[7] appears with a sonic boom. set poofins[5] appears in a flash of blinding nothingness!
set poofins[8] wanders into the room while practicing omphaloskepsis. set poofins[6] falls from the sky above, screaming until he hits the ground. SPLAT! like a
set poofins[9] somersaults into the room. bug on a windshield.
set poofins[10] stumbles into the room, tripping over his own feet and falling flat on his face. set poofins[7] appears with a dulcet bang.
set poofins[11] dives into the room doing a two and a half tuck gainer, right into the dirt. set poofins[8] appears with a sonic boom.
set poofins[12] runs into the room screaming and looking over his shoulder. set poofins[9] wanders into the room while practicing omphaloskepsis.
set poofins[13] steps out of your shadow. set poofins[10] somersaults into the room.
set poofins[14] forms out of the very essence of your shadow to hang in the air before you. set poofins[11] stumbles into the room, tripping over his own feet and falling flat on his face.
set poofins[15] climbs out of your left nostril. set poofins[12] dives into the room doing a two and a half tuck gainer, right into the dirt.
set poofins[16] has abandoned his search for truth and is now looking for a good fantasy. set poofins[13] runs into the room screaming and looking over his shoulder.
set poofins[17] wishes he was a donut specialist. set poofins[14] steps out of your shadow.
set poofins[18] can resist everything but temptation. set poofins[15] forms out of the very essence of your shadow to hang in the air before you.
set poofins[19] is searching for a near life experience. set poofins[16] climbs out of your left nostril.
set poofins[20] walks into the room fashionably early. set poofins[17] has abandoned his search for truth and is now looking for a good fantasy.
set poofins[21] hanglides into the room. set poofins[18] wishes he was a donut specialist.
set poofins[22] parachutes into the room performing a perfect parachute landing fall, except for the fact that he landed backside first. set poofins[19] can resist everything but temptation.
set poofins[23] does a cannonball into room, injuring himself on the hard ground. set poofins[20] is searching for a near life experience.
set poofin %%poofins[%maxpoofin%]%% set poofins[21] walks into the room fashionably early.
eval poofin %poofin% set poofins[22] hanglides into the room.
%force% %actor% poofin %poofin% set poofins[23] parachutes into the room performing a perfect parachute landing fall,
except for the fact that he landed backside first.
set poofins[24] does a cannonball into room, injuring himself on the hard ground.
eval poofin %%poofins[%maxpoofin%]%%
%force% %actor% set self poofin %poofin%
* *
eval maxpoofout %random.20% -1 eval maxpoofout %random.20%
set poofouts[0] is chased out of the room by a barrel of rabid monkeys. set poofouts[1] is chased out of the room by a barrel of rabid monkeys.
set poofouts[1] creates a pneumatic air tube, like they use at the banks, and steps in. He is sucked out of sight. set poofouts[2] creates a pneumatic air tube, like they use at the banks, and steps in. He is sucked out of sight.
set poofouts[2] thinks himself out of existence. set poofouts[3] thinks himself out of existence.
set poofouts[3] walks out saying 'time to make the donuts.' set poofouts[4] walks out saying 'time to make the donuts.'
set poofouts[4] goes super critical and has a meltdown. Nothing remains but a pile of steaming radioactive mush. set poofouts[5] goes super critical and has a meltdown. Nothing remains but a pile of steaming radioactive mush.
set poofouts[5] disappears in a flash of blinding nothingness! set poofouts[6] disappears in a flash of blinding nothingness!
set poofouts[6] merges with his surroundings and vanishes. set poofouts[7] merges with his surroundings and vanishes.
set poofouts[7] morphs into millions of ants, which run off in all directions. set poofouts[8] morphs into millions of ants, which run off in all directions.
set poofouts[8] senses that everything is well, so he floats away. set poofouts[9] senses that everything is well, so he floats away.
set poofouts[9] goes to hell in a handbasket. set poofouts[10] goes to hell in a handbasket.
set poofouts[10] does somersaults out of the room. set poofouts[11] does somersaults out of the room.
set poofouts[11] dives out of the room doing three rotations in the jackknife position. set poofouts[12] dives out of the room doing three rotations in the jackknife position.
set poofouts[12] stumbles out of the room with a look of confusion on his face, must have forgotten where he parked. set poofouts[13] stumbles out of the room with a look of confusion on his face, must have forgotten where he parked.
set poofouts[13] steps into your shadow and disappears. set poofouts[14] steps into your shadow and disappears.
set poofouts[14] points behind you with a look of horror. While you turn away he disappears chuckling 'made you look'. set poofouts[15] points behind you with a look of horror. While you turn away he disappears chuckling 'made you look'.
set poofouts[15] doesn't like saying goodbye, so he didn't. set poofouts[16] doesn't like saying goodbye, so he didn't.
set poofouts[16] completes an intricate spell of chantings and gestures that creates an inter-dimensional portal of space and time. Before he steps through it and disappears you notice a 'made in china' sticker on its bottom. set poofouts[17] completes an intricate spell of chantings and gestures that creates an inter-dimensional portal of space and time. Before he steps through it and disappears you notice a 'made in china' sticker on its bottom.
set poofouts[17] creates a huge rubber band, straps himself into the middle of it and stretches it back like a slingshot. With a wave he releases it and is hurtled out of sight. set poofouts[18] creates a huge rubber band, straps himself into the middle of it and stretches it back like a slingshot. With a wave he releases it and is hurtled out of sight.
set poofouts[18] straps an ACME rocket to his back and asks, 'got a light?' right before it explodes and sends him soaring. set poofouts[19] straps an ACME rocket to his back and asks, 'got a light?' right before it explodes and sends him soaring.
set poofouts[19] puts on a helmet and climbs into the barrel of an ACME cannon. It explodes sending pieces of Rumble off into the distance. set poofouts[20] puts on a helmet and climbs into the barrel of an ACME cannon. It explodes sending pieces of Rumble off into the distance.
set poofout %%poofouts[%maxpoofout%]%% eval poofout %%poofouts[%maxpoofout%]%%
eval poofout %poofout% %force% %actor% set self poofout %poofout%
%force% %actor% poofout %poofout%
~ ~
#1373 #1373
Present Unwrapping~ Present Unwrapping~
@ -2962,7 +2952,7 @@ say 24
Random Rabbit Decapitates Mobs - M1307~ Random Rabbit Decapitates Mobs - M1307~
0 b 100 0 b 100
none~ none~
* By Rumble of The Builder Academy builderacademy.net 9091 * By Rumble of The Builder Academy tbamud.com 9091
* This is for any Monty Python Fans. * This is for any Monty Python Fans.
* First figure out what room you are in. * First figure out what room you are in.
eval room_var %self.room% eval room_var %self.room%

View file

@ -122,6 +122,63 @@ else
end end
%echoaround% %actor% %actor.name% peers into %actor.hisher% gently glowing ring. %echoaround% %actor% %actor.name% peers into %actor.hisher% gently glowing ring.
~ ~
#206
Smelly Bum - M168~
0 i 100
~
* By Rumble of The Builder Academy tbamud.com 9091
* A trig to let people smell the bum from 1 room away.
* For the first move there is no from_room so set it.
if !%from_room%
eval from_room %self.room.vnum%
global from_room
halt
end
wait 1 sec
eval inroom %self.room%
*
%at% %from_room% %echo% %self.name%'s smell slowly dissipates with %self.himher%.
if %inroom.north% && %inroom.north(vnum)% != %from_room%
%at% %inroom.north(vnum)% %echo% You notice a nasty smell to the south.
end
if %inroom.south% && %inroom.south(vnum)% != %from_room%
%at% %inroom.south(vnum)% %echo% You notice a nasty smell to the north.
end
if %inroom.east% && %inroom.east(vnum)% != %from_room%
%at% %inroom.east(vnum)% %echo% You notice a nasty smell to the west.
end
if %inroom.west% && %inroom.west(vnum)% != %from_room%
%at% %inroom.west(vnum)% %echo% You notice a nasty smell to the east.
end
if %inroom.up% && %inroom.up(vnum)% != %from_room%
%at% %inroom.up(vnum)% %echo% You notice a nasty smell below you.
end
if %inroom.down% && %inroom.down(vnum)% != %from_room%
%at% %inroom.down(vnum)% %echo% You notice a nasty smell above you.
end
*
eval from_room %self.room.vnum%
global from_room
~
#207
Mob Blocks opening of chest~
0 c 100
o~
* By Rumble of The Builder Academy tbamud.com 9091
* does not work for level 32 and above.
* Make sure the command is open, check for any abbrev of chest
if %cmd.mudcommand% == open && chest /= %arg%
* findmob checks if the mob is in the room.
if %findmob.230(189)%
%echoaround% %actor% As %actor.name% tries to approach the chest %self.name% looks up.
wait 1 sec
say get away from there.
end
else
* If it doesn't match let the command continue.
return 0
end
~
#212 #212
Phoenix Rising - 219~ Phoenix Rising - 219~
1 c 4 1 c 4

View file

@ -419,7 +419,7 @@ mkill %bad_guy%
Lieutenant Door Bribe - M23608~ Lieutenant Door Bribe - M23608~
0 m 1 0 m 1
~ ~
* By Welcor of The Builder Academy builderacademy.net 9091 * By Welcor of The Builder Academy tbamud.com 9091
wait 1 wait 1
* The price is 400 coins to pass. Player must 'give 400 coin leader.' * The price is 400 coins to pass. Player must 'give 400 coin leader.'
if %amount% < 400 if %amount% < 400
@ -440,7 +440,7 @@ end
Lieutenant Door Bribe 2 - M23608~ Lieutenant Door Bribe 2 - M23608~
0 r 100 0 r 100
~ ~
* By Welcor of The Builder Academy builderacademy.net 9091 * By Welcor of The Builder Academy tbamud.com 9091
* Allows more than one instance of this trigger to run. * Allows more than one instance of this trigger to run.
context %actor.id% context %actor.id%
* Checks a global variable to see if this mob has been bribed. TSTAT 23612. * Checks a global variable to see if this mob has been bribed. TSTAT 23612.
@ -466,7 +466,7 @@ end
Lieutenant Leave - 23608~ Lieutenant Leave - 23608~
0 q 100 0 q 100
~ ~
* By Welcor of The Builder Academy builderacademy.net 9091 * By Welcor of The Builder Academy tbamud.com 9091
* If the player is trying to leave to the East. * If the player is trying to leave to the East.
if %direction% == east if %direction% == east
context %actor.id% context %actor.id%
@ -483,20 +483,16 @@ if %direction% == east
end end
~ ~
#23615 #23615
Check for Dwarf - 23610~ FREE~
2 c 100 2 q 100
e~ ~
if %cmd.mudcommand% == east if %direction% == east
if %actor.race%==dwarf return 0
%send% %actor% The door vanishes as if it was never there, and you step through. %send% %actor% The door vanishes as if it was never there, and you step through.
%echoaround% %actor% As %actor.name% steps through the doorway, the door disappears for an instant. %echoaround% %actor% As %actor.name% steps through the doorway, the door disappears for an instant.
%teleport% %actor% 23611 %teleport% %actor% 23611
%echoaround% %actor% %actor.name% has arrived. %echoaround% %actor% %actor.name% has arrived.
%force% %actor% look %force% %actor% look
return 1
else
return 0
end
end end
~ ~
#23616 #23616

View file

@ -399,7 +399,7 @@ done
Slipping on Marbles - 27147~ Slipping on Marbles - 27147~
1 q 100 1 q 100
~ ~
* By Rumble of The Builder Academy builderacademy.net 9091 * By Rumble of The Builder Academy tbamud.com 9091
* A leave trigger that checks for low dexterity. * A leave trigger that checks for low dexterity.
if %actor.is_pc% if %actor.is_pc%
if %actor.dex% < 15 if %actor.dex% < 15

View file

@ -203,10 +203,14 @@ quit~
%send% %actor% Powerful forces keep you here. %send% %actor% Powerful forces keep you here.
~ ~
#315 #315
Room Command - No Recall~ Obj Command - No quit~
2 c 100 1 c 3
recall ~ q~
%send% %actor% Divine forces prevent you from doing that. if %cmd.mudcommand% == quit
%send% %actor% Divine forces prevent you from doing that.
else
return 0
end
~ ~
#316 #316
Mob Fight - generic poison~ Mob Fight - generic poison~

View file

@ -1,234 +1,240 @@
#3000 #3000
Mage Guildguard - 3024~ Mage Guildguard - 3024~
0 q 100 0 q 100
~ ~
* Check the direction the player must go to enter the guild. * Check the direction the player must go to enter the guild.
if %direction% == south if %direction% == south
* Stop them if they are not the appropriate class. * Stop them if they are not the appropriate class.
if %actor.class% != Magic User if %actor.class% != Magic User
return 0 return 0
%send% %actor% The guard humiliates you, and blocks your way. %send% %actor% The guard humiliates you, and blocks your way.
%echoaround% %actor% The guard humiliates %actor.name%, and blocks %actor.hisher% way. %echoaround% %actor% The guard humiliates %actor.name%, and blocks %actor.hisher% way.
end end
end end
~ ~
#3001 #3001
Cleric Guildguard - 3025~ Cleric Guildguard - 3025~
0 q 100 0 q 100
~ ~
* Check the direction the player must go to enter the guild. * Check the direction the player must go to enter the guild.
if %direction% == north if %direction% == north
* Stop them if they are not the appropriate class. * Stop them if they are not the appropriate class.
if %actor.class% != Cleric if %actor.class% != Cleric
return 0 return 0
%send% %actor% The guard humiliates you, and blocks your way. %send% %actor% The guard humiliates you, and blocks your way.
%echoaround% %actor% The guard humiliates %actor.name%, and blocks %actor.hisher% way. %echoaround% %actor% The guard humiliates %actor.name%, and blocks %actor.hisher% way.
end end
end end
~ ~
#3002 #3002
Thief Guildguard - 3026~ Thief Guildguard - 3026~
0 q 100 0 q 100
~ ~
* Check the direction the player must go to enter the guild. * Check the direction the player must go to enter the guild.
if %direction% == east if %direction% == east
* Stop them if they are not the appropriate class. * Stop them if they are not the appropriate class.
if %actor.class% != Thief if %actor.class% != Thief
return 0 return 0
%send% %actor% The guard humiliates you, and blocks your way. %send% %actor% The guard humiliates you, and blocks your way.
%echoaround% %actor% The guard humiliates %actor.name%, and blocks %actor.hisher% way. %echoaround% %actor% The guard humiliates %actor.name%, and blocks %actor.hisher% way.
end end
end end
~ ~
#3003 #3003
Warrior Guildguard - 3027~ Warrior Guildguard - 3027~
0 q 100 0 q 100
~ ~
* Check the direction the player must go to enter the guild. * Check the direction the player must go to enter the guild.
if %direction% == east if %direction% == east
* Stop them if they are not the appropriate class. * Stop them if they are not the appropriate class.
if %actor.class% != Warrior if %actor.class% != Warrior
return 0 return 0
%send% %actor% The guard humiliates you, and blocks your way. %send% %actor% The guard humiliates you, and blocks your way.
%echoaround% %actor% The guard humiliates %actor.name%, and blocks %actor.hisher% way. %echoaround% %actor% The guard humiliates %actor.name%, and blocks %actor.hisher% way.
end end
end end
~ ~
#3004 #3004
Dump - 3030~ Dump - 3030~
2 h 100 2 h 100
~ ~
%echo% %object.shortdesc% vanishes in a puff of smoke! %echo% %object.shortdesc% vanishes in a puff of smoke!
%send% %actor% You are awarded for outstanding performance. %send% %actor% You are awarded for outstanding performance.
%echoaround% %actor% %actor.name% has been awarded for being a good citizen. %echoaround% %actor% %actor.name% has been awarded for being a good citizen.
eval value %object.cost% / 10 eval value %object.cost% / 10
%purge% %object% %purge% %object%
if %value% > 50 if %value% > 50
eval value 50 eval value 50
elseif %value% < 1 elseif %value% < 1
eval value 1 eval value 1
end end
if %actor.level% < 3 if %actor.level% < 3
nop %actor.exp(%value%)% nop %actor.exp(%value%)%
else else
nop %actor.gold(%value%)% nop %actor.gold(%value%)%
end end
~ ~
#3005 #3005
Stock Thief~ Stock Thief~
0 b 10 0 b 10
~ ~
set actor %random.char% set actor %random.char%
if %actor% if %actor%
if %actor.is_pc% && %actor.gold% if %actor.is_pc% && %actor.gold%
%send% %actor% You discover that %self.name% has %self.hisher% hands in your wallet. %send% %actor% You discover that %self.name% has %self.hisher% hands in your wallet.
%echoaround% %actor% %self.name% tries to steal gold from %actor.name%. %echoaround% %actor% %self.name% tries to steal gold from %actor.name%.
eval coins %actor.gold% * %random.10% / 100 eval coins %actor.gold% * %random.10% / 100
nop %actor.gold(-%coins%) nop %actor.gold(-%coins%)
nop %self.gold(%coins%) nop %self.gold(%coins%)
end end
end end
~ ~
#3006 #3006
Stock Snake~ Stock Snake~
0 k 10 0 k 10
~ ~
%send% %actor% %self.name% bites you! %send% %actor% %self.name% bites you!
%echoaround% %actor% %self.name% bites %actor.name%. %echoaround% %actor% %self.name% bites %actor.name%.
dg_cast 'poison' %actor% dg_cast 'poison' %actor%
~ ~
#3007 #3007
Stock Magic User~ Stock Magic User~
0 k 10 0 k 10
~ ~
switch %actor.level% switch %actor.level%
case 1 case 1
case 2 case 2
case 3 case 3
break break
case 4 case 4
dg_cast 'magic missile' %actor% dg_cast 'magic missile' %actor%
break break
case 5 case 5
dg_cast 'chill touch' %actor% dg_cast 'chill touch' %actor%
break break
case 6 case 6
dg_cast 'burning hands' %actor% dg_cast 'burning hands' %actor%
break break
case 7 case 7
case 8 case 8
dg_cast 'shocking grasp' %actor% dg_cast 'shocking grasp' %actor%
break break
case 9 case 9
case 10 case 10
case 11 case 11
dg_cast 'lightning bolt' %actor% dg_cast 'lightning bolt' %actor%
break break
case 12 case 12
dg_cast 'color spray' %actor% dg_cast 'color spray' %actor%
break break
case 13 case 13
dg_cast 'energy drain' %actor% dg_cast 'energy drain' %actor%
break break
case 14 case 14
dg_cast 'curse' %actor% dg_cast 'curse' %actor%
break break
case 15 case 15
dg_cast 'poison' %actor% dg_cast 'poison' %actor%
break break
case 16 case 16
if %actor.align% > 0 if %actor.align% > 0
dg_cast 'dispel good' %actor% dg_cast 'dispel good' %actor%
else else
dg_cast 'dispel evil' %actor% dg_cast 'dispel evil' %actor%
end end
break break
case 17 case 17
case 18 case 18
dg_cast 'call lightning' %actor% dg_cast 'call lightning' %actor%
break break
case 19 case 19
case 20 case 20
case 21 case 21
case 22 case 22
dg_cast 'harm' %actor% dg_cast 'harm' %actor%
break break
default default
dg_cast 'fireball' %actor% dg_cast 'fireball' %actor%
break break
done done
~ ~
#3008 #3008
Death Trap~ Death Trap~
2 g 100 2 g 100
~ ~
* Near Death Trap stuns actor * Near Death Trap stuns actor
eval stunned %actor.hitp% eval stunned %actor.hitp%
%damage% %actor% %stunned% %damage% %actor% %stunned%
%send% %actor% You are on the brink of life and death. %send% %actor% You are on the brink of life and death.
%send% %actor% The Gods must favor you this day. %send% %actor% The Gods must favor you this day.
~ ~
#3009 #3009
Stock Cityguard - 3059, 60, 67~ Stock Cityguard - 3059, 60, 67~
0 b 50 0 b 50
~ ~
if !%self.fighting% if !%self.fighting%
set actor %random.char% set actor %random.char%
if %actor% if %actor%
if %actor.is_killer% if %actor.is_killer%
emote screams 'HEY!!! You're one of those PLAYER KILLERS!!!!!!' emote screams 'HEY!!! You're one of those PLAYER KILLERS!!!!!!'
kill %actor.name% kill %actor.name%
elseif %actor.is_thief% elseif %actor.is_thief%
emote screams 'HEY!!! You're one of those PLAYER THIEVES!!!!!!' emote screams 'HEY!!! You're one of those PLAYER THIEVES!!!!!!'
kill %actor.name% kill %actor.name%
elseif %actor.cha% < 6 elseif %actor.cha% < 6
%send% %actor% %self.name% spits in your face. %send% %actor% %self.name% spits in your face.
%echoaround% %actor% %self.name% spits in %actor.name%'s face. %echoaround% %actor% %self.name% spits in %actor.name%'s face.
end end
if %actor.fighting% if %actor.fighting%
eval victim %actor.fighting% eval victim %actor.fighting%
if %actor.align% < %victim.align% && %victim.align% >= 0 if %actor.align% < %victim.align% && %victim.align% >= 0
emote screams 'PROTECT THE INNOCENT! BANZAI! CHARGE! ARARARAGGGHH!' emote screams 'PROTECT THE INNOCENT! BANZAI! CHARGE! ARARARAGGGHH!'
kill %actor.name% kill %actor.name%
end end
end end
end end
end end
~ ~
#3010 #3010
Stock Fido - 3062, 3066~ Stock Fido - 3062, 3066~
0 b 100 0 b 100
~ ~
eval inroom %self.room% eval inroom %self.room%
eval item %inroom.contents% eval item %inroom.contents%
while %item% while %item%
* Target the next item in room. In case it is devoured. * Target the next item in room. In case it is devoured.
set next_item %item.next_in_list% set next_item %item.next_in_list%
* Check for a corpse. Corpse on TBA is vnum 65535. Stock is -1. * Check for a corpse. Corpse on TBA is vnum 65535. Stock is -1.
if %item.vnum% == 65535 if %item.vnum% == 65535
emote savagely devours a corpse. emote savagely devours a corpse.
%purge% %item% %purge% %item%
end end
set item %next_item% set item %next_item%
* Loop back * Loop back
done done
~ ~
#3011 #3011
Stock Janitor - 3061, 3068~ Stock Janitor - 3061, 3068~
0 b 100 0 b 100
~ ~
eval inroom %self.room% eval inroom %self.room%
eval item %inroom.contents% eval item %inroom.contents%
while %item% while %item%
* Target the next item in room. In case it is picked up. * Target the next item in room. In case it is picked up.
set next_item %item.next_in_list% set next_item %item.next_in_list%
* TODO: if %item.wearflag(take)% * TODO: if %item.wearflag(take)%
* Check for fountains and expensive items. * Check for fountains and expensive items.
if %item.type% != FOUNTAIN && %item.cost% <= 15 if %item.type% != FOUNTAIN && %item.cost% <= 15
take %item.name% take %item.name%
end end
set item %next_item% set item %next_item%
* Loop back * Loop back
done done
~ ~
$~ #3012
Newbie Tour Guide~
0 e 0
has entered the game.~
%echo% This trigger commandlist is not complete!
~
$~

View file

@ -2,7 +2,7 @@
Near Death Trap Mahatma - 6318~ Near Death Trap Mahatma - 6318~
0 g 100 0 g 100
~ ~
* By Rumble of The Builder Academy builderacademy.net 9091 * By Rumble of The Builder Academy tbamud.com 9091
* Near Death Trap - Mahatma stuns actor and then takes all of their equipment. * Near Death Trap - Mahatma stuns actor and then takes all of their equipment.
wait 3 sec wait 3 sec
say Here, have a quick trip to the Temple of Midgaard. say Here, have a quick trip to the Temple of Midgaard.

View file

@ -356,7 +356,7 @@ with this zone, and the help of others, you can do this.
@RHELP LOCATION@n @RHELP LOCATION@n
@RHELP THEME@n @RHELP THEME@n
@RHELP PLOT@n @RHELP PLOT@n
@RHELP SIZE@n @RHELP ZONE-SIZE@n
@RHELP ALIGNMENT@n @RHELP ALIGNMENT@n
@RHELP BIAS@n @RHELP BIAS@n
~ ~
@ -667,7 +667,6 @@ from you. It's a beautiful reciprocal arrangement.
--The Catcher in the Rye --The Catcher in the Rye
~ ~
S S
T 1217
#34 #34
Pool of Images~ Pool of Images~
A broad mosaic walkway wraps around the natural hotsprings in this cavernous A broad mosaic walkway wraps around the natural hotsprings in this cavernous

View file

@ -318,10 +318,6 @@ that have become common names throughout the realm. It is said that completing
a quest is a prerequisite towards immortality. a quest is a prerequisite towards immortality.
~ ~
1 8 0 0 0 0 1 8 0 0 0 0
D1
~
~
0 0 -1
D2 D2
~ ~
~ ~
@ -1078,10 +1074,6 @@ more than just drinks as large shelves are filled with various items and
equipment. equipment.
~ ~
1 8 0 0 0 0 1 8 0 0 0 0
D1
~
~
0 0 -1
D2 D2
~ ~
~ ~
@ -1662,7 +1654,7 @@ S
The Thieves Warehouse~ The Thieves Warehouse~
A pathway has been opened here to allow for small carts and wagons to pass. A pathway has been opened here to allow for small carts and wagons to pass.
You can hear a few workers in the distance pushing the large crates over the You can hear a few workers in the distance pushing the large crates over the
dusty floor. A large box and tackle swings back and forth on a strangel pulley dusty floor. A large box and tackle swings back and forth on a strange pulley
system above you. system above you.
~ ~
1 8 0 0 0 0 1 8 0 0 0 0

View file

@ -1210,10 +1210,6 @@ of life. The darkness engulfs the northern exit while the life fills the
surrounding area. surrounding area.
~ ~
104 0 0 0 0 0 104 0 0 0 0 0
D0
~
~
0 0 20901
D2 D2
~ ~
~ ~
@ -1228,10 +1224,6 @@ papers with writing on them scatter this desk as well. The ceiling above is
nothing but a thick looking glass with bars filling in for support. nothing but a thick looking glass with bars filling in for support.
~ ~
104 8196 0 0 0 0 104 8196 0 0 0 0
D0
~
~
0 0 -1
D2 D2
~ ~
~ ~
@ -1253,10 +1245,6 @@ A large squishy looking armchair sits in the middle of the room only a few feet
from the fireplace. @n from the fireplace. @n
~ ~
104 24 0 0 0 0 104 24 0 0 0 0
D0
~
~
0 0 -1
E E
main chamber room taylors tays~ main chamber room taylors tays~
@WA small lamp sits in the center of the room letting off a small amount of @WA small lamp sits in the center of the room letting off a small amount of

View file

@ -116,6 +116,17 @@ didn't notice that exit before isn't it?
~ ~
0 -1 1204 0 -1 1204
S S
#1233
An unfinished room~
You are in an unfinished room.
~
12 0 0 0 0 0
D0
ueotn
~
~
0 0 0
S
#1290 #1290
The Immortal Board Hall~ The Immortal Board Hall~
You are standing in a large hall, exits lead off to the board rooms of the You are standing in a large hall, exits lead off to the board rooms of the

View file

@ -38,11 +38,6 @@ D2
~ ~
0 0 23700 0 0 23700
E E
masonry~
The stones have been set so close, you can't even force a knife between them.
~
E
sign~ sign~
+----------------------------------+ +----------------------------------+
| | | |
@ -68,6 +63,11 @@ sign~
| | | |
| | | |
~ ~
E
masonry~
The stones have been set so close, you can't even force a knife between them.
~
S S
#23602 #23602
Inside the Tradehalls~ Inside the Tradehalls~
@ -231,7 +231,6 @@ The trade halls are here.
gate wooden~ gate wooden~
1 0 23609 1 0 23609
S S
T 23615
#23611 #23611
Passing by the workshops~ Passing by the workshops~
You are stand,ing just inside the entrance to the dwarven city, and you are You are stand,ing just inside the entrance to the dwarven city, and you are
@ -276,6 +275,12 @@ D0
~ ~
0 0 23611 0 0 23611
E E
rods metal~
Long rods of differently alloyed metal hang here. On the floor next to them,
bars of lead have been lain down. Also a barrel sits here, full to the edge
with leather strips for handles.
~
E
forge contraption strange~ forge contraption strange~
A forge with large leather bellows has been set in the full length of the A forge with large leather bellows has been set in the full length of the
eastern wall. A small stream in the corner makes a small milling wheel turn, eastern wall. A small stream in the corner makes a small milling wheel turn,
@ -284,12 +289,6 @@ putting the forge here is that small stream. It runs from a hole in the cave
wall about three feet up, into a hole in the corner. A small basin suggests the wall about three feet up, into a hole in the corner. A small basin suggests the
stream is used to temper the steel in, too. stream is used to temper the steel in, too.
~ ~
E
rods metal~
Long rods of differently alloyed metal hang here. On the floor next to them,
bars of lead have been lain down. Also a barrel sits here, full to the edge
with leather strips for handles.
~
S S
#23613 #23613
Before the city~ Before the city~
@ -359,15 +358,15 @@ D3
~ ~
0 0 23611 0 0 23611
E E
crate~
A wooden crate about one by two feet. It contains strips of leather used for
the armours made here.
~
E
forge~ forge~
The forge has been set in sotnes and is extremely hot. On the other side of The forge has been set in sotnes and is extremely hot. On the other side of
the fire, you notice the weaponsmiths' smithy. the fire, you notice the weaponsmiths' smithy.
~ ~
E
crate~
A wooden crate about one by two feet. It contains strips of leather used for
the armours made here.
~
S S
#23616 #23616
At the stonewrights.~ At the stonewrights.~
@ -382,6 +381,13 @@ D3
~ ~
0 0 23613 0 0 23613
E E
shelf~
A wide shelf has been made from the stone wall. And you notice it has been
made by removing the surrounding rock piece by piece. A labour with no end, it
seems. On it a couple of small gemstones have been laid, along with a
handwritten sign: HANDS OFF!
~
E
tombstones stones headstones~ tombstones stones headstones~
They all look about the same: They all look about the same:
_____________ ___ _______ _____________ ___ _______
@ -394,13 +400,6 @@ _____________ ___ _______
| | | | | | | | | | | |
|___________| |_| |___| |___________| |_| |___|
~ ~
E
shelf~
A wide shelf has been made from the stone wall. And you notice it has been
made by removing the surrounding rock piece by piece. A labour with no end, it
seems. On it a couple of small gemstones have been laid, along with a
handwritten sign: HANDS OFF!
~
S S
#23617 #23617
The dwarven city~ The dwarven city~
@ -550,10 +549,9 @@ The ladder stretches into darkness.
~ ~
0 0 23670 0 0 23670
E E
walls~ basket~
The walls are the same rock as the surrounding city. You notice, however, A large basket, it looks sturdy enough to carry a ton of rock at once. It
that these walls doesn't consist of blocks of stone. The room's more likely should be able to carry you with all your belongings without any problems.
been dug out of the mountain.
~ ~
E E
crane large~ crane large~
@ -562,9 +560,10 @@ and stone from the mine. You think you might be able to fit in the basket
currently hanging here. currently hanging here.
~ ~
E E
basket~ walls~
A large basket, it looks sturdy enough to carry a ton of rock at once. It The walls are the same rock as the surrounding city. You notice, however,
should be able to carry you with all your belongings without any problems. that these walls doesn't consist of blocks of stone. The room's more likely
been dug out of the mountain.
~ ~
S S
T 23606 T 23606
@ -1530,18 +1529,18 @@ A portal leads back to the royal court.
portal~ portal~
0 0 23663 0 0 23663
E E
altar marble fire~
Tha altar is about 3' tall, 6' wide and 2' deep. It's just out of reach on
the other side of the silver chain, and on it, an extremely beautiful hammer has
been put.
~
E
chain silver~ chain silver~
A thin silver chain seems to enter the rock on both sides of the altar. A thin silver chain seems to enter the rock on both sides of the altar.
There are no hooks or rings, the chain simply continues into the rock. A strong There are no hooks or rings, the chain simply continues into the rock. A strong
magical field protects the chain, and no matter how you try, you can't seem to magical field protects the chain, and no matter how you try, you can't seem to
cross it. cross it.
~ ~
E
altar marble fire~
Tha altar is about 3' tall, 6' wide and 2' deep. It's just out of reach on
the other side of the silver chain, and on it, an extremely beautiful hammer has
been put.
~
S S
#23667 #23667
At the Dwarven Court~ At the Dwarven Court~
@ -1559,14 +1558,14 @@ The court continues.
~ ~
0 0 23663 0 0 23663
E E
tapestries~
You wonder, could there be anything behind these heavy tapestries?
~
E
throne chair seat dwarven~ throne chair seat dwarven~
The Throne has been cut of black marble, and decorated with jade. In the The Throne has been cut of black marble, and decorated with jade. In the
seat the king seem almost divine. seat the king seem almost divine.
~ ~
E
tapestries~
You wonder, could there be anything behind these heavy tapestries?
~
S S
T 23603 T 23603
T 23602 T 23602

View file

@ -197,6 +197,11 @@ You see the exit to the entrance hall.
~ ~
0 -1 3006 0 -1 3006
E E
writing carving carvings symbols symbol~
Although it is very hard to understand, you think it looks a lot like beer,
poems about beer, and small beer-mugs.
~
E
sign~ sign~
The sign reads: The sign reads:
Free instructions provided by the Grunting Boar Inn. Free instructions provided by the Grunting Boar Inn.
@ -205,11 +210,6 @@ Free instructions provided by the Grunting Boar Inn.
List - The bartender will show you all the different drinks and List - The bartender will show you all the different drinks and
specialties, and tell the price of each. specialties, and tell the price of each.
~ ~
E
writing carving carvings symbols symbol~
Although it is very hard to understand, you think it looks a lot like beer,
poems about beer, and small beer-mugs.
~
S S
#3008 #3008
The Reception~ The Reception~
@ -256,14 +256,6 @@ You see the main street.
~ ~
0 -1 3013 0 -1 3013
E E
danish pastry~
You see that this is truly delicious pastry. Must be made by a Dane from
Denmark (which surely is not the capital of Sweden! ). Former ruler of
Scandinavia, England, Northern Germany, Northern France, Russia, Greenland,
Iceland, Estonia etc. Etc. The sight of those large, wholesome chokoladeboller
makes your mouth water and your soul sing.
~
E
sign~ sign~
Free instructions provided by the store: Free instructions provided by the store:
@ -271,6 +263,14 @@ sign~
List - The baker will kindly tell you the price and sort of the bread in List - The baker will kindly tell you the price and sort of the bread in
his bakery. his bakery.
~ ~
E
danish pastry~
You see that this is truly delicious pastry. Must be made by a Dane from
Denmark (which surely is not the capital of Sweden! ). Former ruler of
Scandinavia, England, Northern Germany, Northern France, Russia, Greenland,
Iceland, Estonia etc. Etc. The sight of those large, wholesome chokoladeboller
makes your mouth water and your soul sing.
~
S S
#3010 #3010
The General Store~ The General Store~
@ -829,9 +829,14 @@ The city gate is to the west.
gate~ gate~
1 3112 3052 1 3112 3052
E E
bridge footbridge~ wall~
It is too high up to reach but it looks as if one easily could walk across it It is built from large grey rocks that have been fastened to each other with
from one tower to the other. some kind of mortar. It is far too high to climb.
~
E
tower towers~
Both of the towers are built from large grey rocks that have been fastened to
each other with some kind of mortar, just like the city wall.
~ ~
E E
gate~ gate~
@ -840,14 +845,9 @@ reinforced with large iron bands to make them even more sturdy. One of the
doors is equipped with a very big lock. doors is equipped with a very big lock.
~ ~
E E
tower towers~ bridge footbridge~
Both of the towers are built from large grey rocks that have been fastened to It is too high up to reach but it looks as if one easily could walk across it
each other with some kind of mortar, just like the city wall. from one tower to the other.
~
E
wall~
It is built from large grey rocks that have been fastened to each other with
some kind of mortar. It is far too high to climb.
~ ~
S S
#3041 #3041
@ -873,9 +873,14 @@ You see Main Street.
~ ~
0 -1 3016 0 -1 3016
E E
bridge footbridge~ wall~
It is too high up to reach but it looks as if one easily could walk across it It is built from large grey rocks that have been fastened to each other with
from one tower to the other. some kind of mortar. It is far too high to climb.
~
E
tower towers~
Both of the towers are built from large grey rocks that have been fastened to
each other with some kind of mortar, just like the city wall.
~ ~
E E
gate~ gate~
@ -884,14 +889,9 @@ reinforced with large iron bands to make them even more sturdy. One of the
doors is equipped with a very big lock. doors is equipped with a very big lock.
~ ~
E E
tower towers~ bridge footbridge~
Both of the towers are built from large grey rocks that have been fastened to It is too high up to reach but it looks as if one easily could walk across it
each other with some kind of mortar, just like the city wall. from one tower to the other.
~
E
wall~
It is built from large grey rocks that have been fastened to each other with
some kind of mortar. It is far too high to climb.
~ ~
S S
#3042 #3042
@ -939,14 +939,14 @@ The road continues further south.
~ ~
0 -1 3047 0 -1 3047
E E
wall writing letters~
It says 'Who watches the watchmen? '
~
E
wall~ wall~
It is built from large grey rocks that have been fastened to each other with It is built from large grey rocks that have been fastened to each other with
some kind of mortar. It is far too high to climb. some kind of mortar. It is far too high to climb.
~ ~
E
wall writing letters~
It says 'Who watches the watchmen? '
~
S S
#3044 #3044
Poor Alley~ Poor Alley~
@ -1086,18 +1086,18 @@ You see the Concourse.
~ ~
0 -1 3100 0 -1 3100
E E
bridge~ wall~
It is built from large grey rocks that have been fastened to each other with It is built from large grey rocks that have been fastened to each other with
some kind of mortar, just like the wall. some kind of mortar. It is far too high to climb.
~ ~
E E
opening~ opening~
You cannot really see it from here as it is somewhere beneath your feet. You cannot really see it from here as it is somewhere beneath your feet.
~ ~
E E
wall~ bridge~
It is built from large grey rocks that have been fastened to each other with It is built from large grey rocks that have been fastened to each other with
some kind of mortar. It is far too high to climb. some kind of mortar, just like the wall.
~ ~
S S
#3052 #3052
@ -1118,9 +1118,14 @@ The forest edge is to the west.
~ ~
0 -1 6092 0 -1 6092
E E
bridge footbridge~ wall~
It is too high up to reach but it looks as if one easily could walk across it It is built from large grey rocks that have been fastened to each other with
from one tower to the other. some kind of mortar. It is far too high to climb.
~
E
tower towers~
Both of the towers are built from large grey rocks that have been fastened to
each other with some kind of mortar, just like the city wall.
~ ~
E E
gate~ gate~
@ -1129,14 +1134,9 @@ reinforced with large iron bands to make them even more sturdy. One of the
doors is equipped with a very big lock. doors is equipped with a very big lock.
~ ~
E E
tower towers~ bridge footbridge~
Both of the towers are built from large grey rocks that have been fastened to It is too high up to reach but it looks as if one easily could walk across it
each other with some kind of mortar, just like the city wall. from one tower to the other.
~
E
wall~
It is built from large grey rocks that have been fastened to each other with
some kind of mortar. It is far too high to climb.
~ ~
S S
#3053 #3053
@ -1157,9 +1157,14 @@ You see the city gate.
gate~ gate~
1 3112 3041 1 3112 3041
E E
bridge footbridge~ wall~
It is too high up to reach but it looks as if one easily could walk across it It is built from large grey rocks that have been fastened to each other with
from one tower to the other. some kind of mortar. It is far too high to climb.
~
E
tower towers~
Both of the towers are built from large grey rocks that have been fastened to
each other with some kind of mortar, just like the city wall.
~ ~
E E
gate~ gate~
@ -1168,14 +1173,9 @@ reinforced with large iron bands to make them even more sturdy. One of the
doors is equipped with a very big lock. doors is equipped with a very big lock.
~ ~
E E
tower towers~ bridge footbridge~
Both of the towers are built from large grey rocks that have been fastened to It is too high up to reach but it looks as if one easily could walk across it
each other with some kind of mortar, just like the city wall. from one tower to the other.
~
E
wall~
It is built from large grey rocks that have been fastened to each other with
some kind of mortar. It is far too high to climb.
~ ~
S S
#3054 #3054
@ -1198,27 +1198,17 @@ You see the southern end of the temple.
~ ~
0 -1 3001 0 -1 3001
E E
altar~
Even though the altar is more than ten feet long it appears to be made from a
single block of white virgin marble.
~
E
statue odin king god~ statue odin king god~
The statue represents the one-eyed Odin sitting on a his throne. He has The statue represents the one-eyed Odin sitting on a his throne. He has
long, grey hair and beard and a strict look on his face. On top of the throne, long, grey hair and beard and a strict look on his face. On top of the throne,
just above his shoulders, his two ravens Hugin and Munin are sitting and at his just above his shoulders, his two ravens Hugin and Munin are sitting and at his
feet are his wolves Gere and Freke. feet are his wolves Gere and Freke.
~ ~
S E
#3055 altar~
Odin's Store~ Even though the altar is more than ten feet long it appears to be made from a
This is the small dark room in which Odin keeps the player items that he single block of white virgin marble.
takes care of. It is vital that this room's virtual number is exactly one
larger than the room by the temple altar.
This room has absolutely no purpose!
~ ~
30 520 0 0 0 0
S S
#3058 #3058
Ye Olde Water Shoppe~ Ye Olde Water Shoppe~
@ -1327,6 +1317,29 @@ You see the entrance to the Grunting Boar Inn and Tavern.
~ ~
0 -1 3006 0 -1 3006
E E
WANTED posters poster wall~
Faces of various known Killers and Thieves can barely be seen behind the
crates on the west wall. Some of them look quite familar, sorta like that guy
who you saw in the Reception a minute ago... But then again, they are rather
hard to see past the crates.
~
E
crates opened large~
As you know, it is illegal to send contraband items through the Midgaard
Mail. The customs agents use this as a great excuse to seize liquor, rare
spices, and just about anything they might find useful or profitable.
~
E
cobwebs~
They seem to cover everything here, even the Postmaster himself.
~
E
letters envelopes assorted~
Envelopes of all sizes are heaped into hugh piles around the room. As you
look closer, you see a letter that you had posted a full week ago, laying
unnoticed and slightly rat-chewed towards the bottom of the pile.
~
E
sign~ sign~
********************************************************** **********************************************************
* * * *
@ -1345,29 +1358,6 @@ sign~
* Type 'HELP MAIL' for more info * * Type 'HELP MAIL' for more info *
********************************************************** **********************************************************
~ ~
E
letters envelopes assorted~
Envelopes of all sizes are heaped into hugh piles around the room. As you
look closer, you see a letter that you had posted a full week ago, laying
unnoticed and slightly rat-chewed towards the bottom of the pile.
~
E
cobwebs~
They seem to cover everything here, even the Postmaster himself.
~
E
crates opened large~
As you know, it is illegal to send contraband items through the Midgaard
Mail. The customs agents use this as a great excuse to seize liquor, rare
spices, and just about anything they might find useful or profitable.
~
E
WANTED posters poster wall~
Faces of various known Killers and Thieves can barely be seen behind the
crates on the west wall. Some of them look quite familar, sorta like that guy
who you saw in the Reception a minute ago... But then again, they are rather
hard to see past the crates.
~
S S
#3063 #3063
The Midgaard Donation Room~ The Midgaard Donation Room~

View file

@ -2,10 +2,6 @@
Rumble~ Rumble~
The Builder Academy Zone~ The Builder Academy Zone~
0 99 10 2 0 99 10 2
O 0 87 1 33 (a throne of bayonets)
O 0 10 33 2 (a waybread)
R 0 2 11 -1 (the spring)
O 0 11 99 2 (the spring)
M 0 18 1 2 (Friedrich Nietzsche) M 0 18 1 2 (Friedrich Nietzsche)
R 0 88 1228 -1 (a advertising bulletin board) R 0 88 1228 -1 (a advertising bulletin board)
O 0 1228 99 88 (a advertising bulletin board) O 0 1228 99 88 (a advertising bulletin board)

View file

@ -2,6 +2,8 @@
Rumble~ Rumble~
Sanctus~ Sanctus~
100 199 10 2 100 199 10 2
O 0 219 1 129 (a pile of ashes)
M 0 211 1 129 (the phoenix)
M 0 206 1 162 (a chunky philosopher) M 0 206 1 162 (a chunky philosopher)
G 1 47 99 -1 (the magic eight ball) G 1 47 99 -1 (the magic eight ball)
D 0 162 2 1 (Thieves Avenue) D 0 162 2 1 (Thieves Avenue)

View file

@ -2,10 +2,10 @@
CircleMUD~ CircleMUD~
God Simplex~ God Simplex~
1200 1299 10 0 1200 1299 10 0
M 0 1212 1 1200 (the scoreboard mob)
O 0 1212 1 1200 (a game console)
R 0 1204 3098 -1 (a holy bulletin board) R 0 1204 3098 -1 (a holy bulletin board)
O 0 3098 99 1204 (a holy bulletin board) O 0 3098 99 1204 (a holy bulletin board)
M 0 1212 1 1200 (the scoreboard mob)
O 0 1212 1 1200 (a game console)
R 0 1293 1227 -1 (a staff bulletin board) R 0 1293 1227 -1 (a staff bulletin board)
O 0 1227 99 1293 (a staff bulletin board) O 0 1227 99 1293 (a staff bulletin board)
R 0 1291 1226 -1 (a builder's bulletin board) R 0 1291 1226 -1 (a builder's bulletin board)

View file

@ -2,22 +2,21 @@
Rumble~ Rumble~
Sanctus II~ Sanctus II~
200 299 30 2 200 299 30 2
O 0 188 1 230 (an iron bound chest)
P 1 306 5 188 (a jar of naphthalene)
M 0 189 1 230 (the commander)
E 1 145 99 5 (a scale mail jacket)
M 0 209 1 210 (Bob, the achondroplastic dwarf)
E 1 171 99 17 (a short gilded staff of oak)
M 0 212 1 251 (a parrot with an eye patch) M 0 212 1 251 (a parrot with an eye patch)
M 0 196 1 251 (the newbie guide) M 0 196 1 251 (the newbie guide)
O 0 251 1 251 (a marble fountain) O 0 251 1 251 (a marble fountain)
O 0 219 1 210 (a pile of ashes)
M 0 211 1 210 (the phoenix)
M 0 209 1 210 (Bob, the achondroplastic dwarf)
E 1 171 99 17 (a short gilded staff of oak)
M 0 33 1 266 (Homer Simpson) M 0 33 1 266 (Homer Simpson)
M 0 30 3 220 (the spy for the underground) M 0 30 3 220 (the spy for the underground)
M 0 30 3 212 (the spy for the underground) M 0 30 3 212 (the spy for the underground)
M 0 210 1 265 (the quest shopkeeper) M 0 210 1 265 (the quest shopkeeper)
O 0 307 1 242 (a jar of palmatite) O 0 307 1 242 (a jar of palmatite)
M 0 126 1 242 (assassin) M 0 126 1 242 (assassin)
O 0 306 1 230 (a jar of naphthalene)
M 0 189 1 230 (the commander)
E 1 145 99 5 (a scale mail jacket)
R 0 225 373 -1 (a large well) R 0 225 373 -1 (a large well)
O 0 373 99 225 (a large well) O 0 373 99 225 (a large well)
M 0 109 1 225 (Hazel, the wellmaster) M 0 109 1 225 (Hazel, the wellmaster)

View file

@ -3272,7 +3272,7 @@ ACMD(do_links)
skip_spaces(&argument); skip_spaces(&argument);
one_argument(argument, arg); one_argument(argument, arg);
if (!arg || !*arg) { if (!is_number(arg)) {
zrnum = world[IN_ROOM(ch)].zone; zrnum = world[IN_ROOM(ch)].zone;
zvnum = zone_table[zrnum].number; zvnum = zone_table[zrnum].number;
} else { } else {
@ -3409,7 +3409,7 @@ ACMD (do_zcheck)
struct extra_descr_data *ext, *ext2; struct extra_descr_data *ext, *ext2;
one_argument(argument, buf); one_argument(argument, buf);
if (!buf || !*buf || !strcmp(buf, ".")) if (!is_number(buf) || !strcmp(buf, "."))
zrnum = world[IN_ROOM(ch)].zone; zrnum = world[IN_ROOM(ch)].zone;
else else
zrnum = real_zone(atoi(buf)); zrnum = real_zone(atoi(buf));

View file

@ -13,7 +13,7 @@
#include "structs.h" #include "structs.h"
#include "interpreter.h" /* alias_data */ #include "interpreter.h" /* alias_data */
cpp_extern const char *tbamud_version = "tbaMUD, version 3.54"; cpp_extern const char *tbamud_version = "tbaMUD, version 3.55";
cpp_extern const char *oasisolc_version = "OasisOLC 2.0.6"; cpp_extern const char *oasisolc_version = "OasisOLC 2.0.6";
cpp_extern const char *ascii_pfiles_version = "ASCII Player Files 3.0.1"; cpp_extern const char *ascii_pfiles_version = "ASCII Player Files 3.0.1";

View file

@ -82,8 +82,8 @@
#define MOTD_FILE LIB_TEXT"motd" /* messages of the day / mortal */ #define MOTD_FILE LIB_TEXT"motd" /* messages of the day / mortal */
#define IMOTD_FILE LIB_TEXT"imotd" /* messages of the day / immort */ #define IMOTD_FILE LIB_TEXT"imotd" /* messages of the day / immort */
#define GREETINGS_FILE LIB_TEXT"greetings" /* The opening screen. */ #define GREETINGS_FILE LIB_TEXT"greetings" /* The opening screen. */
#define HELP_PAGE_FILE LIB_TEXT_HELP"screen" /* for HELP <CR> */ #define HELP_PAGE_FILE LIB_TEXT_HELP"help" /* for HELP <CR> */
#define IHELP_PAGE_FILE LIB_TEXT_HELP"iscreen" /* for HELP <CR> imms */ #define IHELP_PAGE_FILE LIB_TEXT_HELP"ihelp" /* for HELP <CR> imms */
#define INFO_FILE LIB_TEXT"info" /* for INFO */ #define INFO_FILE LIB_TEXT"info" /* for INFO */
#define WIZLIST_FILE LIB_TEXT"wizlist" /* for WIZLIST */ #define WIZLIST_FILE LIB_TEXT"wizlist" /* for WIZLIST */
#define IMMLIST_FILE LIB_TEXT"immlist" /* for IMMLIST */ #define IMMLIST_FILE LIB_TEXT"immlist" /* for IMMLIST */

View file

@ -228,7 +228,7 @@ int delete_room(room_rnum rnum)
} }
/* Remove this room from all shop lists. */ /* Remove this room from all shop lists. */
for (i = 0; i < top_shop; i++) { for (i = 0; i <= top_shop; i++) {
for (j = 0;SHOP_ROOM(i, j) != NOWHERE;j++) { for (j = 0;SHOP_ROOM(i, j) != NOWHERE;j++) {
if (SHOP_ROOM(i, j) == world[rnum].number) if (SHOP_ROOM(i, j) == world[rnum].number)
SHOP_ROOM(i, j) = 0; /* set to the void */ SHOP_ROOM(i, j) = 0; /* set to the void */

View file

@ -23,7 +23,7 @@
/* external variables */ /* external variables */
extern room_rnum r_mortal_start_room; extern room_rnum r_mortal_start_room;
extern int mini_mud; extern int mini_mud;
extern char cast_arg2[MAX_STRING_LENGTH]; extern char cast_arg2[MAX_INPUT_LENGTH];
/* external functions */ /* external functions */
void weight_change_object(struct obj_data *obj, int weight); void weight_change_object(struct obj_data *obj, int weight);

View file

@ -14,7 +14,7 @@
* account the version and supply their own definition for the macro if used * account the version and supply their own definition for the macro if used
* on an older version. You are supposed to compare this with the macro * on an older version. You are supposed to compare this with the macro
* TBAMUD_VERSION() in utils.h. */ * TBAMUD_VERSION() in utils.h. */
#define _TBAMUD 0x030540 /* Major/Minor/Patchlevel - MMmmPP */ #define _TBAMUD 0x030550 /* Major/Minor/Patchlevel - MMmmPP */
/* If you want equipment to be automatically equipped to the same place /* If you want equipment to be automatically equipped to the same place
* it was when players rented, set the define below to 1. */ * it was when players rented, set the define below to 1. */
@ -763,7 +763,6 @@ struct char_special_data {
struct player_special_data_saved { struct player_special_data_saved {
byte skills[MAX_SKILLS+1]; /* array of skills plus skill 0 */ byte skills[MAX_SKILLS+1]; /* array of skills plus skill 0 */
byte PADDING0; /* used to be spells_to_learn */
int wimp_level; /* Below this # of hit points, flee! */ int wimp_level; /* Below this # of hit points, flee! */
byte freeze_level; /* Level of god who froze char, if any */ byte freeze_level; /* Level of god who froze char, if any */
sh_int invis_level; /* level of invisibility */ sh_int invis_level; /* level of invisibility */

View file

@ -1,6 +1,6 @@
/* ************************************************************************ /* ************************************************************************
* file: asciipasswd.c (derived from mudpasswd.c) Part of CircleMud * * file: asciipasswd.c (derived from mudpasswd.c) Part of tbaMUD *
* Usage: generating hashed passwords for an ascii playerfile * * Usage: generating hashed passwords for an ascii playerfile. *
* Copyright (C) 1990, 1991 - see 'license.doc' for complete information. * * Copyright (C) 1990, 1991 - see 'license.doc' for complete information. *
* All Rights Reserved * * All Rights Reserved *
************************************************************************* */ ************************************************************************* */

View file

@ -1,5 +1,5 @@
/* ************************************************************************ /* ************************************************************************
* file: autowiz.c Part of CircleMUD * * file: autowiz.c Part of tbaMUD *
* Usage: self-updating wizlists * * Usage: self-updating wizlists *
* Written by Jeremy Elson * * Written by Jeremy Elson *
* All Rights Reserved * * All Rights Reserved *

View file

@ -1,5 +1,5 @@
/* ************************************************************************ /* ************************************************************************
* file: listrent.c Part of CircleMUD * * file: listrent.c Part of tbaMUD *
* Usage: list player rent files * * Usage: list player rent files *
* Written by Jeremy Elson * * Written by Jeremy Elson *
* All Rights Reserved * * All Rights Reserved *

View file

@ -1,5 +1,5 @@
/* ************************************************************************ /* ************************************************************************
* file: plrtoascii.c Part of CircleMud * * file: plrtoascii.c Part of tbaMUD *
* Copyright (C) 1990, 1991 - see 'license.doc' for complete information. * * Copyright (C) 1990, 1991 - see 'license.doc' for complete information. *
* All Rights Reserved * * All Rights Reserved *
************************************************************************* */ ************************************************************************* */

View file

@ -1,4 +1,8 @@
/* code to convert 2.20 shop files to 3.0 shop files - written by Jeff Fink */ /* ************************************************************************
* file: shopconv.c Part of tbaMUD *
* Usage: code to convert 2.20 shop files to 3.0 shop files *
* Written by Jeff Fink *
************************************************************************* */
#include "conf.h" #include "conf.h"
#include "sysdep.h" #include "sysdep.h"

View file

@ -1,17 +1,9 @@
/* /* ************************************************************************
* sign.c: a program to present text on a TCP port * file: sign.c Part of tbaMUD *
* * Usage: A program to present text on a TCP port. *
* Author: Jeremy Elson (jelson@circlemud.org) * sign <port> <filename | port> *
* Usage: sign <port> <filename> or * Written by Jeremy Elson *
* sign <port> - ************************************************************************* */
*
* '-' indicates file should be read from stdin.
*
* This program is in the public domain. It may be copied, redistributed,
* reused, modified, etc., but a notice of my authorship must be maintained.
*
* This program comes with no warranty of any kind, expressed or implied.
*/
#define MAX_FILESIZE 8192 #define MAX_FILESIZE 8192
#define LINEBUF_SIZE 128 #define LINEBUF_SIZE 128

View file

@ -1,5 +1,5 @@
/* ************************************************************************ /* ************************************************************************
* file: split.c Part of CircleMud * * file: split.c Part of tbaMUD *
* Usage: split one large file into multiple smaller ones, with index * * Usage: split one large file into multiple smaller ones, with index *
* Written by Jeremy Elson * * Written by Jeremy Elson *
* All Rights Reserved * * All Rights Reserved *

View file

@ -1,10 +1,8 @@
/* ************************************************************************ /* ************************************************************************
* File: wld2html.c * * File: webster.c Part of tbaMUD *
* Usage: Convert a DikuMUD .wld file into a series of .html files * * Usage: Use an online dictionary via tell m-w <word>. *
* * * *
* This program is in the public domain. * * Based on the Circle 3.0 syntax checker and wld2html programs. *
* Written (QUICKLY AND DIRTILY) by Jeremy Elson (jelson@circlemud.org) *
* Based on the Circle 3.0 syntax checker program (scheck.c) *
************************************************************************ */ ************************************************************************ */
#define log(msg) fprintf(stderr, "%s\n", msg) #define log(msg) fprintf(stderr, "%s\n", msg)

View file

@ -1,10 +1,10 @@
/* ************************************************************************ /* ************************************************************************
* File: wld2html.c * * File: wld2html.c Part of tbaMUD *
* Usage: Convert a DikuMUD .wld file into a series of .html files * * Usage: Convert a DikuMUD .wld file into a series of .html files *
* * * *
* This program is in the public domain. * * This program is in the public domain. *
* Written (QUICKLY AND DIRTILY) by Jeremy Elson (jelson@circlemud.org) * * Written (QUICKLY AND DIRTILY) by Jeremy Elson *
* Based on the Circle 3.0 syntax checker program (scheck.c) * * Based on the Circle 3.0 syntax checker program *
************************************************************************ */ ************************************************************************ */
#define log(msg) fprintf(stderr, "%s\n", msg) #define log(msg) fprintf(stderr, "%s\n", msg)