mirror of
https://github.com/tbamud/tbamud.git
synced 2025-09-22 05:50:48 +02:00
Updated World and files for 3.55 release. --Rumble
This commit is contained in:
parent
453cbdaf0b
commit
af18bd91b6
98 changed files with 7739 additions and 4409 deletions
45
changelog
45
changelog
|
@ -1,10 +1,16 @@
|
|||
TbaMUD is currently being developed by The Builder Academy. If you need any
|
||||
help, find any bugs, or have ideas for improvement please stop by TBA.
|
||||
Rumble
|
||||
The Builder Academy
|
||||
builderacademy.net 9091
|
||||
help, find any bugs, or have ideas for improvement please stop by TBA at
|
||||
telnet://tbamud.com:9091 or email rumble@tbamud.com --Rumble
|
||||
|
||||
tbaMUD 3.55
|
||||
[Jan 17 2008] - Rumble
|
||||
Updated files for 3.55 release.
|
||||
Updated documentation in the /doc directory.
|
||||
[Jan 16 2008] - Rumble
|
||||
New content management system (drupal) at http://tbamud.com. Forums, blogs, etc. (thanks Mordecai)
|
||||
Converted all of /doc pdf's back to text files. PDF versions will be on http://tbamud.com
|
||||
Updated tell m-w command due to html changes. (thanks Welcor)
|
||||
Renamed lib/text/help/screen and iscreen files to help and ihelp.
|
||||
[Jan 06 2008] - Rumble
|
||||
Removed break in oedit_disp_val1_menu ITEM_NOTE that caused a delay. (thanks Rhade)
|
||||
Fixed tlist when specifying a range. (thanks Rhade)
|
||||
|
@ -27,6 +33,7 @@ tbaMUD 3.55
|
|||
[Dec 15 2007] - Rumble
|
||||
Showvnums shows [T#] for a single attached trig or [TRIGS] for multiple attached trigs (except for rooms since there is plenty of room to list all attached trigs).
|
||||
Fixed bug where showvnums would not show if attached. (thanks Sryth)
|
||||
|
||||
tbaMUD 3.54
|
||||
[Nov 12 2007] - Rumble
|
||||
Updated users command to fix GET_INVIS_LEV bug.
|
||||
|
@ -467,32 +474,4 @@ Version 3.53 release: July, 2007
|
|||
Version 3.52 release: April, 2007
|
||||
Version 3.51 release: February, 2007
|
||||
Version 3.5 release: December, 2006
|
||||
Version 3.1 (yes, no beta pl): November 18, 2002
|
||||
Version 3.00 beta pl22 release: October 4, 2002
|
||||
Version 3.00 beta pl21 release: April 15, 2002
|
||||
Version 3.00 beta pl20 release: January 15, 2002
|
||||
Version 3.00 beta pl19 release: August 14, 2001
|
||||
Version 3.00 beta pl18 release: March 18, 2001
|
||||
Version 3.00 beta pl17 release: January 23, 2000
|
||||
Version 3.00 beta pl16 release: August 30, 1999
|
||||
Version 3.00 beta pl15 release: March 16, 1999
|
||||
Version 3.00 beta pl14 release: July 3, 1998
|
||||
Version 3.00 beta pl13a release: June 4, 1998
|
||||
Version 3.00 beta pl13 release: June 1, 1998
|
||||
Version 3.00 beta pl12 release: October 29, 1997
|
||||
Version 3.00 beta pl11 release: April 14, 1996
|
||||
Version 3.00 beta pl10 release: March 11, 1996
|
||||
Version 3.00 beta pl9 release: February 6, 1996
|
||||
Version 3.00 beta pl8 release: May 23, 1995
|
||||
Version 3.00 beta pl7 release: March 9, 1995
|
||||
Version 3.00 beta pl6 release: March 6, 1995
|
||||
Version 3.00 beta pl5 release: February 23, 1995
|
||||
Version 3.00 beta pl4 release: September 28, 1994
|
||||
Version 3.00 beta pl1-3, internal releases for beta-testers.
|
||||
Version 3.00 alpha: Ran on net for testing. Code not released.
|
||||
Version 2.20 release: November 17, 1993
|
||||
Version 2.11 release: September 19, 1993
|
||||
Version 2.10 release: September 1, 1993
|
||||
Version 2.02 release: Late August 1993
|
||||
Version 2.01 release: Early August 1993
|
||||
Version 2.00 release: July 16, 1993 (Initial public release)
|
||||
See releases.txt
|
||||
|
|
BIN
doc/FAQ.pdf
BIN
doc/FAQ.pdf
Binary file not shown.
857
doc/FAQ.txt
Normal file
857
doc/FAQ.txt
Normal 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
|
|
@ -1,38 +1,71 @@
|
|||
Updated: Apr 2007
|
||||
If you have any additions, corrections, ideas, or bug reports please stop by the
|
||||
Builder Academy at telnet://tbamud.com:9091 or email rumble@tbamud.com -- Rumble
|
||||
|
||||
Compiling tbaMUD
|
||||
under Microsoft Windows using CygWin
|
||||
Originally by: Jeremy Elson, David Goldstein, Tony Robbins, and George Greer.
|
||||
|
||||
tbaMUD compiles under Cygwin without needing any special modifications.
|
||||
This free pseudo-Unix environment for Windows includes the "bash" shell, "gcc"
|
||||
family of compilers, and a full set of programs and libraries for Windows users
|
||||
to compile and run programs from source code intended for Unix. It can be
|
||||
downloaded from: http://cygwin.com/
|
||||
This free pseudo-Unix environment for Windows includes the "bash" shell, gcc,
|
||||
and a full set of programs and libraries for Windows users to compile and run
|
||||
programs from source code intended for Unix. It can be downloaded from:
|
||||
http://cygwin.com/
|
||||
|
||||
Compiling tbaMUD under Cygwin is basically the same as it would be under
|
||||
another form of Unix:
|
||||
|
||||
1) Download from: http://cygwin.com/setup.exe
|
||||
Select open.
|
||||
Install from Internet
|
||||
Select "just me" "dos"
|
||||
Choose a mirror site.
|
||||
Leave selected package as default.
|
||||
Select the following from devel: autoconf, gcc, make, and patchutils
|
||||
Click Next.
|
||||
Install, follow prompts.
|
||||
Install from Internet.
|
||||
Choose a root directory, I use C:\
|
||||
Select "just me" "Unix / binary"
|
||||
Select a local package directory, I use C:\WINDOWS\Temp
|
||||
Leave Direct Connection selected.
|
||||
Choose a download site.
|
||||
You can either click the "circular arrow" next to All to install the whole
|
||||
thing (it lags a bit, wait for it) or leave default and add the necessary
|
||||
packages yourself by expanding devel and adding: autoconf, gcc, make, and
|
||||
patchutils (choose the first one of each). The all option requires
|
||||
broadband and at least an hour to download. It will automatically install
|
||||
once complete, just follow the prompts.
|
||||
|
||||
2) Download and uncompress the latest version of tbaMUD:
|
||||
http://cwg.lazuras.org/modules.php?name=Downloads&d_op=viewdownload&cid=16
|
||||
Join the forums as they will be a great resource for any problems that you
|
||||
encounter. Once you download and uncompress tbaMUD (I use winRAR) read
|
||||
through the /doc directory.
|
||||
2) Download the latest version of tbaMUD from http://tbamud.com
|
||||
Create an account on tbamud.com as it will be a great resource for any
|
||||
problems that you encounter. Once you download and uncompress tbaMUD (I use
|
||||
winRAR) read through the /doc directory.
|
||||
|
||||
3) Start the Cygwin "bash" shell by double clicking the Cygwin Icon. This will
|
||||
open a telnet looking window that mimics a *nix server where you can run the
|
||||
MUD. Go to the directory where you extracted tbaMUD by using the "cd" change
|
||||
directory command and "dir" directory listing to find the correct files. For
|
||||
example "C:\tbaMUD". "cd c:/tbaMUD" "dir" in the listed files you should see
|
||||
one called configure. DO NOT go into the SRC directory yet.
|
||||
example "C:\tbaMUD". "cd c:/tbaMUD" then "dir" to list the files. You should
|
||||
see one called configure. DO NOT go into the SRC directory yet.
|
||||
|
||||
4) Run the configure script by typing "./configure". This will automatically
|
||||
detect what programs and library functions are available, and create the
|
||||
files "Makefile" and "conf.h" based on the results.
|
||||
|
||||
If you get complaints from bash that it will not run the configure script
|
||||
either because it cannot find it or because it claims the file is not
|
||||
an executable, you can also try "sh configure", "sh ./configure",
|
||||
"bash configure" and "bash ./configure" until one of them works.
|
||||
|
||||
5) NOW change to the /tbaMUD/src directory "cd src", and type "make", and watch
|
||||
tbaMUD and the additional utilities included in the tbaMUD distribution
|
||||
automatically being compiled and placed in /tbaMUD/bin.
|
||||
|
||||
6) Go back to /tbaMUD, and run the MUD either directly by typing "bin/circle",
|
||||
or by using the "./autorun &" script. The & makes it run in the background.
|
||||
|
||||
7) Start a telnet program. Open a connection to your own machine "localhost"
|
||||
on port 4000. You should see the MUD's login screen welcoming you. The
|
||||
first person to login will be promoted to IMP.
|
||||
|
||||
If you have problems, read this document again. Most questions are answered in
|
||||
the documentation or at http://tbamud.com. If you are still having problems
|
||||
feel free to stop by The Builder Academy for assistance.
|
||||
|
||||
It really can not be stressed enough: READ EVERYTHING.
|
||||
|
||||
OPTIONAL: Make the following change to src/Makefile.in to make copyover work:
|
||||
|
||||
|
@ -49,41 +82,7 @@ OPTIONAL: Make the following change to src/Makefile.in to make copyover work:
|
|||
clean:
|
||||
|
||||
The above is a "patch" file. All you need to do is add the two lines with
|
||||
the +'s to your file Makefile.in. If you are still confused check out these
|
||||
links on how to patch: http://www.circlemud.org/cdp/wtfaq/handpatch.html
|
||||
the +'s to your file Makefile.in (but delete the +'s). If you are still
|
||||
confused check out these links on how to patch:
|
||||
http://www.circlemud.org/cdp/wtfaq/handpatch.html
|
||||
http://cwg.lazuras.org/modules.php?name=Forums&file=viewtopic&t=757
|
||||
|
||||
4) Run the configure script by typing "./configure". This will automatically
|
||||
detect what programs and library functions are available, and create the
|
||||
files "Makefile" and "conf.h" based on the results.
|
||||
|
||||
If you get complaints from bash that it will not run the configure script
|
||||
either because it cannot find it or because it claims the file is not
|
||||
an executable, you can also try "sh configure", "sh ./configure",
|
||||
"bash configure" and "bash ./configure" until one of them works.
|
||||
|
||||
5) NOW change to the /tbaMUD/src directory "cd src", and type "make", and watch
|
||||
tbaMUD and the additional utilities included in the tbaMUD distribution
|
||||
automatically being compiled and placed in /tbaMUD/bin.
|
||||
|
||||
6) Go back to /tbaMUD, and run the MUD either directly by typing
|
||||
"bin/tbaMUD", or by using the "./autorun &" script.
|
||||
|
||||
7) Start a telnet program. Open a connection to your own machine "localhost"
|
||||
on port 4000. You should see the MUD's login screen welcoming you. The
|
||||
first person to login will be promoted to IMP.
|
||||
|
||||
If you have problems, read this document again. Most of the questions received
|
||||
in email or which are posted to USENET newsgroups are answered in this file, or
|
||||
in other documents included in the tbaMUD distribution. If you are still
|
||||
having problems and you're *sure* that your question is not answered in this
|
||||
document or in one of the others files in the /tbaMUD/doc directory, try
|
||||
reading the forums at http://cwg.lazuras.org/ or stop by TBA for assistance.
|
||||
|
||||
It really can not be stressed enough: READ EVERYTHING.
|
||||
|
||||
Authors: Jeremy Elson, David Goldstein, Tony Robbins, and George Greer.
|
||||
|
||||
Rumble
|
||||
The Builder Academy
|
||||
builderacademy.net 9091
|
||||
|
|
BIN
doc/act.pdf
BIN
doc/act.pdf
Binary file not shown.
184
doc/act.txt
Normal file
184
doc/act.txt
Normal 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 obj’s 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.
|
BIN
doc/admin.pdf
BIN
doc/admin.pdf
Binary file not shown.
592
doc/admin.txt
Normal file
592
doc/admin.txt
Normal 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 Administrator’s Manual
|
||||
Originally by Jeremy Elson
|
||||
|
||||
This document describes how to configure tbaMUD and how to compile it for the
|
||||
first time. It also discusses how to run the server including documentation of
|
||||
command-line options, a description of system logs and how to use them, and a
|
||||
description of daily and long-term maintenance required by the MUD. The
|
||||
intended audience is implementors new to tbaMUD or MUD administration in
|
||||
general.
|
||||
|
||||
More information about tbaMUD, can be found at http://tbamud.com.
|
||||
|
||||
Contents
|
||||
|
||||
1 Welcome to tbaMUD!
|
||||
|
||||
1.1 Background and Introduction
|
||||
1.2 Are you a Player or an Administrator?
|
||||
1.3 So, you’re sure you want to run your own MUD?
|
||||
1.4 Giving Credit Where Credit is Due
|
||||
|
||||
2 Getting Started
|
||||
2.1 Section Requirements
|
||||
2.2 Downloading and Unpacking the Source
|
||||
2.3 Configuring tbaMUD
|
||||
2.4 Compiling tbaMUD
|
||||
|
||||
3 Running tbaMUD
|
||||
3.1 Execution and autorun
|
||||
3.2 Command-Line Options
|
||||
3.3 Creating an Implementor Character
|
||||
|
||||
4 Customizing tbaMUD
|
||||
4.1 CEDIT and config.c
|
||||
4.2 TEDIT and Text Files
|
||||
4.3 World Files
|
||||
|
||||
5 System Logs
|
||||
5.1 Player Information
|
||||
5.2 Usage Information
|
||||
5.3 Errors
|
||||
|
||||
6 MUD Maintenance
|
||||
6.1 Technical Maintenance
|
||||
6.2 Diplomatic Maintenance
|
||||
|
||||
7 Final Thoughts
|
||||
|
||||
1 Welcome to tbaMUD!
|
||||
|
||||
1.1 Background and Introduction
|
||||
tbaMUD is a derivative of DikuMud, the Multi-User Dungeon developed at DIKU,
|
||||
the Department of Computer Science at the University of Copenhagen. The original
|
||||
circleMUD, version 1.0, was run by Jeremy Elson at the Johns Hopkins
|
||||
University’s Department of Computer Science with moderate popularity from
|
||||
January until September of 1992. The version 1.0 code, which was never released
|
||||
to the public, was archived and remained inactive for several months after the
|
||||
death of the original CircleMUD. In the summer of 1993, it was taken out of
|
||||
storage and cleaned up with the intention of making it a public code base that
|
||||
anyone could freely download and use to start a MUD. Version 2.0, the first
|
||||
publically available version, was released in June of 1993. CircleMUD was
|
||||
maintained as a public code base until 2002 with the final release of CircleMUD
|
||||
3.1. After development stagnated for 3 years The Builder Academy offered to
|
||||
take over development. After a 4th year of no continued development The Builder
|
||||
Academy released circleMUD 3.5 in 2006. Soon after Jeremy Elson requested we
|
||||
change the codebase name. Even though we still follow the CircleMUD vision we
|
||||
agreed and the codebase is now known as tbaMUD. The Builder Academy is open to
|
||||
anyone willing to learn how to build or start their own MUD.
|
||||
|
||||
Thousands of carefully spent hours have gone into the development of this
|
||||
codebase, but it is not a finished product – it is only a beginning. It has
|
||||
only a small number of spells and skills, and only the 4 original DikuMud
|
||||
classes. From a gamer’s point of view, it pales in comparison to other MUDs
|
||||
which have dozens of spells spread over a dozen classes, and a rich palette of
|
||||
skills. Yet from a programmer’s point of view, tbaMUD is very highly developed.
|
||||
While the look and feel of the original DikuMud has been maintained, most of
|
||||
the underlying code and many of the structures have been optimized, reworked,
|
||||
or completely redesigned to be efficient, compact, and easily changeable and
|
||||
extensible. Dozens of features which have become standard in the MUDding
|
||||
world over the past few years, although they were not part of the original
|
||||
DikuMud release, were added to tbaMUD as well.
|
||||
|
||||
The result is that tbaMUD is a launching pad for your own MUD ideas. Our hope
|
||||
in releasing it is that it will free potential MUD implementors from having to worry about dealing with bug-ridden code or wasting time reinventing the wheel
|
||||
by re-coding standard MUD features, allowing them to devote more effort towards
|
||||
creatively shaping tbaMUD into their own unique vision of how a MUD should look
|
||||
and feel. The reason why tbaMUD has so few specialized spells, skills, classes,
|
||||
and races is to encourage implementors just like you to create your own
|
||||
unique system instead of just another stock MUD that everyone has seen before.
|
||||
|
||||
So, it is with this message that we inflict our code on the world: don’t just
|
||||
put another generic MUD on the Net – give us something new and exciting, and
|
||||
have as much fun as possible in the process!
|
||||
|
||||
1.2 Are you a Player or an Administrator?
|
||||
If you’ve never played a MUD before, jumping right in and trying to run one of
|
||||
your own will probably just get you hopelessly confused. Instead of trying to
|
||||
compile and run the tbaMUD package yourself (which is presumably what you’re
|
||||
trying to do if you’re reading this document), you should play someone else’s
|
||||
copy of tbaMUD first to become familiar with the codebase.
|
||||
|
||||
1.3 So, you’re sure you want to run your own MUD?
|
||||
If you’re already an old hand at playing MUDs and you’ve decided you want to
|
||||
start one of your own, here is our advice: sleep on it, try several other MUDs
|
||||
first. Work your way up to an admin position and see what running a MUD is
|
||||
really about. It is not all fun and games. You actually have to deal with
|
||||
people, you have to babysit the players, and be constantly nagged about things
|
||||
you need to do or change. Running a MUD is extremely time consuming if you do
|
||||
it well, if you are not going to do it well then don't bother. Just playing
|
||||
MUDs is masochistic enough, isn’t it? Or are you trying to shave that extra
|
||||
point off your GPA, jump down that one last notch on your next job evaluation,
|
||||
or get rid of that pesky Significant Other for good? If you think silly
|
||||
distractions like having friends and seeing daylight are preventing you from
|
||||
realizing your full potential in the MUD world, being a MUD Administrator is
|
||||
the job for you.
|
||||
|
||||
Don’t get me wrong: running a production MUD can be great fun. It can also be
|
||||
overburdened by politics and plagued by spiteful players devoted to making your
|
||||
life difficult, and otherwise be a highly frustrating endeavour. That’s why I
|
||||
started The Builder Academy and develop the tbaMUD codebase. The enjoyment of
|
||||
MUDding without the pesky players!
|
||||
|
||||
1.4 Giving Credit Where Credit is Due
|
||||
If I haven’t scared you away yet, and you’re still sure you want to use tbaMUD,
|
||||
please stop for a moment and look at the license in the file license.txt. It
|
||||
outlines the terms under which you must use tbaMUD.
|
||||
|
||||
The license is simple. It boils down to the message, “Don’t rip off other
|
||||
people’s work.” Unfortunately, this simple message ended up becoming somewhat
|
||||
long-winded because I am trying to prevent people from abusing DikuMud in the
|
||||
future as they have in the past.
|
||||
|
||||
Also, out of courtesy if nothing else, please keep the credits file intact. You
|
||||
can add your own credits on top of the existing file, but I’d appreciate it if
|
||||
you would not simply remove it and all references to the word “Circle”
|
||||
everywhere in the MUD. How would you feel if someone took your code and then
|
||||
took credit for it?
|
||||
|
||||
USE OF THIS SOFTWARE IN ANY CAPACITY IMPLIES THAT YOU HAVE READ, UNDERSTOOD,
|
||||
AND AGREED TO ABIDE BY THE TERMS AND CONDITIONS SET DOWN BY THE LICENSE.
|
||||
|
||||
2 Getting Started
|
||||
|
||||
2.1 Section Requirements
|
||||
tbaMUD was originally written as UNIX software and will automatically configure
|
||||
itself (using GNU autoconf) and compile under most versions of UNIX, both BSD
|
||||
and System V derivatives, including Mac OS X. With minor adjustments
|
||||
(documented below), the same source should compile under Microsoft Windows, IBM
|
||||
OS/2, and the Amiga. Users have also reported getting tbaMUD to compile and run
|
||||
under MkLinux, the port of Linux to the Power Macintosh. tbaMUD will not work under DOS, Windows 3.x, Windows for Workgroups 3.x, or Mac System.
|
||||
Specifically, the following variants of UNIX have been tested and are known to
|
||||
work with tbaMUD:
|
||||
|
||||
SunOS 4.1.4
|
||||
Solaris 2.3 and above
|
||||
Irix 5.2, 6.2
|
||||
AIX 3.2
|
||||
Ultrix 4.x
|
||||
HP-UX 9.x
|
||||
Linux 1.x, 2.x
|
||||
BSD/OS 2.1
|
||||
Mac OS X (10.0 and above)
|
||||
|
||||
If your system is not listed, don’t despair; because of the autoconf program,
|
||||
tbaMUD will compile under most versions of UNIX on its own. A large effort was
|
||||
made to make tbaMUD more portable by converting many of its system calls over
|
||||
to POSIX compliance. Converting tbaMUD to POSIX vastly helps portability on
|
||||
modern operating systems, most of which are POSIX-compliant. Unfortunately,
|
||||
on some older systems that are not (such as NextSTEP 2.x), it may be more
|
||||
difficult to compile than it was to compile earlier versions of the code.
|
||||
(POSIX stands for Portable Operating System Interface for UNIX and is an effort
|
||||
to standardize the way UNIX programs talk to the operating system. For more
|
||||
information, see Stevens’ excellent book, Advanced Programming in the UNIX
|
||||
Environment.)
|
||||
|
||||
For a small, private MUD, or a MUD used only for testing and development, about
|
||||
20 MB of disk space and 32 MB of memory should be sufficient. For large, public
|
||||
MUDs with a large player base, 30 to 50MB of disk space and at least 50 MB of
|
||||
memory are recommended. Free memory is much more important than CPU speed;
|
||||
tbaMUD uses virtually no CPU time.
|
||||
|
||||
Historically, tbaMUD has always been developed under different variants of UNIX.
|
||||
The original CircleMUD was run on a DECstation 3100 running Ultrix 4.0, which
|
||||
remained Circle’s development platform until v2.0. Starting with v2.0, Circle
|
||||
was developed under various versions of Linux and Solaris over the years
|
||||
ranging from Linux 0.99.11 through the current Linux 2.2.x and including
|
||||
Solaris x86 5.6.
|
||||
|
||||
2.2 Downloading and Unpacking the Source
|
||||
The first step in setting up tbaMUD is to make sure you have the most recent
|
||||
version of the source. You can always find the most recent version of the
|
||||
source at tbaMUD’s official website http://tbamud.com.
|
||||
|
||||
Next, unpack the archive. If you have the .tar.gz version, unpack it using gzip
|
||||
(GNU unzip) and the tar archiver. If you don’t already have them, both of these
|
||||
utilities can be downloaded from the GNU FTP site <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 you’re using Windows, OS/2, or
|
||||
the Amiga, read README.WIN, README.OS2 or README.AMIGA instead.
|
||||
|
||||
tbaMUD must be configured using the configure program which attempts to guess
|
||||
correct values for various system-dependent variables used during compilation.
|
||||
It uses those values to create Makefiles and a header file called conf.h.
|
||||
|
||||
From tbaMUD’s root directory, simply type
|
||||
|
||||
./configure
|
||||
|
||||
If you’re using csh, it may not execute “configure” properly, giving you an
|
||||
error message like “Permission denied”. If this occurs, try “sh ./configure”
|
||||
instead.
|
||||
|
||||
configure can take several minutes to run if you’re using a slow computer. It
|
||||
will print out various status messages while it works, telling you what
|
||||
characteristics of your computer it has found. It should create two Makefiles
|
||||
(src/Makefile and src/util/Makefile) and one header file (src/conf.h).
|
||||
|
||||
You should only need to run configure once – right after you unpack tbaMUD from
|
||||
its archive. You will probably compile the source dozens of times as you add
|
||||
new features, but configure only needs to be run before the first time you
|
||||
compile. Please note that there is one exception to this rule: if you move your
|
||||
MUD to a different computer, you must run configure again before you can
|
||||
recompile the source code. To rerun configure after moving the source, make
|
||||
sure to delete the file called config.cache and then run configure again.
|
||||
|
||||
2.4 Compiling tbaMUD
|
||||
Note: This section applies only to UNIX or Cygwin users. If you’re using
|
||||
windows, OS/2, or the Amiga, read README.WIN, README.OS2, or README.AMIGA instead.
|
||||
|
||||
The src directory contains the source code for the main MUD server; src/util has
|
||||
the source for a dozen or so MUD maintenance utilities. There are two Makefiles,
|
||||
one in each source directory, but all compiling is normally performed from the
|
||||
src directory only. To compile the only tbaMUD server itself, type “make”.
|
||||
Use “make utils” to compile the utilities, or “make all” to compile both the
|
||||
server and the utilities. It is also possible to compile individual
|
||||
utilities from the src/util directory: from src/util, type “make
|
||||
[utility-name]”. All compiled binaries go to the bin directory.
|
||||
|
||||
The stock (unmodified) tbaMUD code should compile with no warnings or errors.
|
||||
|
||||
Despite my best efforts there’s a chance that you’ll have problems compiling
|
||||
tbaMUD if you’re using some version of UNIX that I’ve never seen before. It’s
|
||||
impossible to give general advice on how to port software, except to say that
|
||||
you should ask a friend who knows a lot about both UNIX and C to help you.
|
||||
Also, if you have problems, you should definitely look at the tbaMUD FAQ
|
||||
(Frequently Asked Questions list with Answers), which you’ll find in tbaMUD’s
|
||||
/doc directory.
|
||||
|
||||
If you do port tbaMUD to some other platform successfully, please share your
|
||||
hard work with others by sending a description of what you had to do to get
|
||||
tbaMUD to compile on your system to rumble@tbamud.com. Be sure to include the
|
||||
specific name of your operating system and hardware. Full details on porting to
|
||||
a new system can be found in Porting.txt.
|
||||
|
||||
The Makefile directs all compiled programs to the /bin directory. Although not
|
||||
recommended, you may want to put tbaMUD’s /bin directory in your $PATH. The
|
||||
reason that this is not recommended is that most of the resources are
|
||||
referenced using relative paths, and thus require that you run the programs
|
||||
from the base tbaMUD directory.
|
||||
|
||||
3 Running tbaMUD
|
||||
Note: This section applies only to UNIX or Cygwin users. If you’re using
|
||||
Windows, OS/2, or the Amiga, read README.WIN, README.OS2, or EADME.AMIGA
|
||||
instead.
|
||||
|
||||
3.1 Execution and autorun
|
||||
1. type ’autorun &’
|
||||
2. Wait a few moments for the server to boot.
|
||||
3. type: telnet localhost 4000
|
||||
tbaMUD should always be run from tbaMUD’s “root” directory, not the /bin
|
||||
directory. You can run it manually by typing bin/circle (useful for testing and
|
||||
debugging). For running the game “for real,” it is better to use the autorun
|
||||
shell script provided in tbaMUD’s root directory.
|
||||
|
||||
Autorun lets tbaMUD run itself for long periods of time. It continuously runs
|
||||
the game as well as removing old system logs, moving newer system logs to the
|
||||
log directory, and saving certain log entries to permanent files.
|
||||
|
||||
Autorun can be controlled by creating files with certain names. You can use the
|
||||
’touch’ command to create a file, and, of course, the ’rm’ command to remove a
|
||||
file. If a file called ’.fastboot’ exists, the tbaMUD will reboot immediately
|
||||
if it crashes or is shut down instead of waiting 40 seconds as it normally does.
|
||||
A file called ’.killscript’ will cause the script to terminate itself; i.e. if
|
||||
you want to bring the game down. If you want to temporarily prevent the MUD
|
||||
from rebooting, create a file called “pause”; the script will go into a wait
|
||||
loop until ’pause’ is removed.
|
||||
|
||||
Although you can create these files manually, the shutdown command from within
|
||||
the MUD has several options which will create these files for you. See the
|
||||
shutdown help entry for more information.
|
||||
|
||||
3.2 Command-Line Options
|
||||
tbaMUD recognizes a number of command-line options. You can use them by actually
|
||||
specifying them on the command-line when running tbaMUD manually or, by adding
|
||||
them to the FLAGS variable in your autorun script to use the options
|
||||
automatically every time you run the MUD with autorun.
|
||||
|
||||
The syntax is:
|
||||
circle [-m] [-q] [-r] [-s] [-d <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 aren’t made an implementor, then the playerfile
|
||||
probably is not empty – take the MUD down, delete the index at
|
||||
tbamud\lib\plrfiles, and start the MUD again. You should fix your stats using
|
||||
the RESTORE command when you first create the character (i.e. type "RESTORE
|
||||
<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, they’re wrong. If
|
||||
you tell your players that you’re going to run a revolutionary MUD that doesn’t
|
||||
have any politics, you’re lying. Every MUD has political problems sooner or
|
||||
later. Unfortunately, this usually occurs “sooner”. There are various ways to
|
||||
make political problems easier to handle, but the best way is to decide on some
|
||||
ground rules from the very beginning, and then set those decisions down in
|
||||
writing. That’s what the “policy” file is for. You probably know what kind of
|
||||
political problems MUDs have (you are not trying to run a MUD without ever
|
||||
having played one, are you!?) – stuff like playerkilling, thieving, kill
|
||||
stealing, client use, multiplaying, reimbursements, etc. Decide on your
|
||||
policies early and make sure your characters know what those policies are.
|
||||
|
||||
It is also important to write down a set of rules dictating what immortals are
|
||||
allowed to do and not allowed to do. That’s what the “handbook” (Immortal
|
||||
handbook) is for. Immortals will always try to bend you as far as they can, so
|
||||
it’s important for you to decide on answers to questions before those questions
|
||||
come up. Can immortals assist players? What about giving a single ’cure light’
|
||||
for a player about to die? Can immortals kill mobiles for their own enjoyment?
|
||||
Can they kill players for the same reason? Are they allowed to make policy?
|
||||
Break policy? Moderate disputes? Turn over each others’ decisions?
|
||||
|
||||
4.3 World Files
|
||||
The root of the area hierarchy is lib/world/. lib/world/ has 6 subdirectories:
|
||||
wld, mob, obj, shp, trg, and zon, which is where the world, mobile, object,
|
||||
shop, trigger, and zone files go, respectively.
|
||||
|
||||
Each directory has a set of world files in it with the appropriate extension
|
||||
(i.e. the obj subdir will have a bunch of files ending with “.obj”, such as
|
||||
30.obj, 31.obj, etc.) plus two special files called “index” and “index.mini”.
|
||||
“index” is a list of which world files are to be loaded by tbaMUD. New zones
|
||||
can be added in game with the "zedit new" command. “index.mini” controls which
|
||||
(smaller) set of world files should be loaded in the debugging mode (Mini-Mud
|
||||
Mode, explained below.)
|
||||
|
||||
5 System Logs
|
||||
tbaMUD writes a wide variety of information to standard output and standard
|
||||
error. If you’re using the autorun script, the boot messages are put into a
|
||||
file called “syslog”. During tbaMUD’s boot sequence, the system log keeps a
|
||||
record of everything the MUD is doing to initialize itself; this can be useful
|
||||
to determine what the problem is if the MUD dies while it is booting. Once the
|
||||
game is up and running, the syslog contains player information, recording when
|
||||
players connect, disconnect, rent, unrent, quit, die, hit death traps, etc. The
|
||||
game also records status information about itself, falling generally into two
|
||||
categories: usage information and errors.
|
||||
|
||||
5.1 Player Information
|
||||
The player information recorded by tbaMUD’s system logs will serve you very well
|
||||
as your players start to make wild claims about strange bugs resulting in them
|
||||
losing equipment or points. Many mudders prey on the insecurities of a new mud
|
||||
administrator who is terrified that his or her MUD is riddled with bugs and
|
||||
will do anything to satisfy grumpy players – don’t let yourself fall into that
|
||||
trap! tbaMUD is bound to contain bugs, but most of the core systems have been
|
||||
well tested, so you should take claims such as “I magically lost all my stuff!”
|
||||
with a grain of salt and check your system logs.
|
||||
|
||||
If a player ever asks you for reimbursement of equipment, money, gold,
|
||||
experience points (XP), or whatever, your gut reaction should always be to
|
||||
check the logs first.
|
||||
|
||||
As a sidebar, let me point out that the value of system logs is twofold: 1)
|
||||
they actually provide you with valuable information, and 2) they make your
|
||||
players paranoid. When I first started mudding and I heard about this
|
||||
mysterious “system log”, it made me incredibly paranoid. Now that I’ve done a
|
||||
good deal of MUD administration, I’ve seen the same paranoia in many other
|
||||
players.
|
||||
|
||||
That paranoia is a very good thing. The system logs become an abstract and
|
||||
shapeless but omnipresent force on the MUD. Players hear about “the System Log”
|
||||
and then get paranoid that everything they do is being recorded, so they tend
|
||||
to behave, lest the evil System Log betray their wrongdoings to the Gods.
|
||||
|
||||
For this reason, when you go to check your logs, it’s a good idea to say something like “Hold on... let me go check the system logs, OK?” because it
|
||||
reinforces the syslog’s presence in the collective psyche of your players.
|
||||
|
||||
Back to the point. When someone claims that they’ve been wronged by the evil
|
||||
system, always check the logs. The logs give you power to say things like “What
|
||||
do you mean your items disappeared in rent? It says right here in the logs
|
||||
‘Rasmussen has quit the game.’ You did not rent at all, you just quit!”
|
||||
|
||||
To diffuse disputes such as, “The game dumped my stuff, but I had enough
|
||||
money!!” or “I logged in and my stuff was gone, there must be a bug!!”, two
|
||||
types of log entries are written. First, every time a character rents, the log
|
||||
records the character’s per diem rent rate as well as the total amount of money
|
||||
on hand and in the bank. Second, the log records makes a record of all
|
||||
characters’ equipment dumped due to insufficient funds.
|
||||
|
||||
Remember, rent is specified as a daily rate but is amortized on a per-second
|
||||
basis! In other words, if you rent at the rate of 100 coins per day and come
|
||||
back 36 hours later, you’ll be charged 150 coins. Or you can be nice and leave
|
||||
rent disabled.
|
||||
|
||||
The autorunscript saves 6 levels of raw system logs. In addition, it greps the
|
||||
logs for certain pieces of extra-juicy information to save indefinitely.
|
||||
|
||||
The system logs are your friends. Love them.
|
||||
|
||||
5.2 Usage Information
|
||||
Every 5 minutes, the game counts how many people are playing and records that
|
||||
information in the system log. Optionally, if you define RUSAGE in comm.c, it
|
||||
will also record system resource information such as CPU time and memory used.
|
||||
The usage information currently logged by tbaMUD is, as you can see, somewhat
|
||||
sparse; local MUD admins are encouraged to add to this code as is appropriate
|
||||
for their particular site.
|
||||
|
||||
Usage information isn’t critical, but it is interesting to look at the usage
|
||||
patterns to determine when your peak playing hours are. If you’re good at using
|
||||
‘cut’ and other Unix utilities, you can even dazzle your friends by graphing
|
||||
your MUD’s system usage.
|
||||
|
||||
Note: friends not included with the tbaMUD distribution.
|
||||
|
||||
5.3 Errors
|
||||
Just as your first gut instinct should be to look at the logs if a player starts
|
||||
begging you for something, your first gut instinct in the event of a crash or
|
||||
unexpected shutdown should also be to look at the system logs.
|
||||
|
||||
A Unix utility called ‘tail’ is used to look at the last few lines of a text
|
||||
file; it is very useful for looking at the last entries in the system log to
|
||||
see the last thing that happened before the shutdown. This can be done in game
|
||||
with the "file" command by using the "file crash" option. Often, tbaMUD will
|
||||
report an error in the logs just before it crashes. This method is particularly
|
||||
useful if the MUD crashes during its boot sequence, because the logging during
|
||||
boot is intensive.
|
||||
|
||||
If tbaMUD shuts down unexpectedly and there is no core dump in the /lib
|
||||
directory, the game probably detected an internal error and killed itself. Such
|
||||
shutdowns are always preceded by entries in the system log describing the error.
|
||||
|
||||
If there is no error message at the end of the log, then there probably IS a
|
||||
core dump, so you can use ‘gdb’ to examine the core dump and determine the
|
||||
reason for the crash. The file hacker.txt, generously provided by Furey of MERC
|
||||
Industries, offers useful insight into the art and science of debugging – you’d
|
||||
be well advised to give it a look-see.
|
||||
|
||||
tbaMUD sometimes encounters a serious but non-fatal error; in this case, the
|
||||
error will be written to the system log with the prefix SYSERR, but the MUD
|
||||
will not shut itself down. You should always be aware of any SYSERRs which occur
|
||||
– they are often useful for foreseeing imminent danger or averting problems
|
||||
before they become critical. If a SYSERR does occur, try to determine if a
|
||||
change you’ve made recently has caused it. Ignoring SYSERRs is like ignoring
|
||||
compiler warnings: you can be tempted to ignore them because the game keeps
|
||||
going even if they exist, but you can easily get yourself into trouble by not
|
||||
listening. The autorun script saves all SYSERRs to the file log/errors.
|
||||
|
||||
6 MUD Maintenance
|
||||
6.1 Technical Maintenance
|
||||
Once you get the MUD up and running, you will surely want to modify it – adding
|
||||
new areas, new features, new code, and new ideas, however these topics are
|
||||
beyond the scope of this document. See coding.txt, building.txt, and other
|
||||
documents in the /doc directory and online at http://tbamud.com. This section
|
||||
focuses on some of the simple maintenance that’ll be necessary to keep your MUD
|
||||
running smoothly. Make sure not to get so caught up in being a God that you
|
||||
forgot you’re also supposed to be acting as a software engineer!
|
||||
|
||||
First, you should look at the log/errors file regularly to make sure there are
|
||||
no recurring problems, particularly problems that may have been caused by code
|
||||
you’ve added. If the MUD crashes, it will usually generate what is called a
|
||||
“core dump” – a big file called “core.#” in your lib directory, created by the
|
||||
operating system to record the state the game was in the moment before it
|
||||
crashed. You should look at the core dump using a debugger such as “gdb” to
|
||||
determine why the MUD crashed. See the file “hacker.txt” for more information
|
||||
about debugging.
|
||||
|
||||
6.2 Diplomatic Maintenance
|
||||
Okay, so now you have your wonderful tbaMUD up and running smoothly and all is
|
||||
right with the world. Right? Wrong.
|
||||
|
||||
Well, technically, right. tbaMUD requires very little day-to-day attention in
|
||||
order to keep the program itself running smoothly. But the MUD itself is just a
|
||||
series of instructions running on a computer, processing data. Never lose sight
|
||||
of the fact that there will be dozens, hundreds, or maybe even thousands of
|
||||
people connecting to your MUD – and they are not programs. They are people!
|
||||
|
||||
From the technical side, there are relatively few things you have to do to keep
|
||||
the game running. But you cannot just dump a MUD on the Internet and then ignore
|
||||
it! Spend time on your MUD. Try to keep up with the boards, and make an effort
|
||||
to respond to the complaints. Take a look at the ‘bug’, ‘typo’, and ‘idea’ files
|
||||
from time to time – and respond to some of the ideas using Mudmail. Try to
|
||||
respond to Mudmail you receive from players in a timely manner. Make sure that
|
||||
your ‘news’, ‘policy’ and other text files are up-to date and suit the political
|
||||
climate on your MUD.
|
||||
|
||||
If you cannot or just do not want to deal with the player politics, make sure
|
||||
that you choose someone who can and will, and make them responsible for dealing
|
||||
with it. If no one does it, your MUD will stagnate and die.
|
||||
|
||||
7 Final Thoughts
|
||||
Try to remember that running a MUD should be fun. It can sometimes be easy to
|
||||
lose sight of the ultimate goal of personal enjoyment that MUDs are supposed to
|
||||
provide, particularly when MUDs start to get crushed under the weight of their
|
||||
own politics or the egos of the administrators. If you find that your MUD is
|
||||
more of a source of frustration than enjoyment, don’t be afraid to close it.
|
||||
|
||||
Good luck with your MUD! Always feel free to email or stop by The Builder
|
||||
Academy and let us know what you think of the MUD, and the interesting things
|
||||
you’ve done with it. We cannot promise a timely response, but we love hearing
|
||||
from people who are using our code.
|
||||
|
||||
For further information and updates check out http://tbamud.com.
|
BIN
doc/building.pdf
BIN
doc/building.pdf
Binary file not shown.
1903
doc/building.txt
Normal file
1903
doc/building.txt
Normal file
File diff suppressed because it is too large
Load diff
BIN
doc/coding.pdf
BIN
doc/coding.pdf
Binary file not shown.
1678
doc/coding.txt
Normal file
1678
doc/coding.txt
Normal file
File diff suppressed because it is too large
Load diff
BIN
doc/color.pdf
BIN
doc/color.pdf
Binary file not shown.
123
doc/color.txt
Normal file
123
doc/color.txt
Normal 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 you’re %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 (don’t
|
||||
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 you’re 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 player’s 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, "Don’t 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:
|
||||
Don’t you just love color, color, COLOR! (blue) (yellow) (red)
|
||||
|
||||
People who have color set to Normal will see:
|
||||
Don’t you just love color, color, COLOR! (yellow) (red)
|
||||
|
||||
People who have color set to Sparse will see:
|
||||
Don’t you just love color, color, COLOR! (red)
|
||||
|
||||
People who have color set to Off will see:
|
||||
Don’t you just love color, color, COLOR! (no color, as you’d 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 don’t have to.
|
||||
The codes are several bytes long, and cause a noticeable pause at 2400 baud.
|
||||
|
||||
This should go without saying, but don’t 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 can’t 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 player’s color level
|
||||
individually (see do_gen_comin act.comm.c for an example).
|
335
doc/debugging.txt
Normal file
335
doc/debugging.txt
Normal 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.0’s 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 “I’m 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 doesn’t introduce very much new data, but it
|
||||
does transform data in your head from the “new” category to the “familiar”
|
||||
category. Reading documentation doesn’t 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 don’t 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 people’s 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 don’t 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 can’t interpret it, and they can’t 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.
|
||||
It’s 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 won’t
|
||||
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”
|
BIN
doc/files.pdf
BIN
doc/files.pdf
Binary file not shown.
133
doc/files.txt
Normal file
133
doc/files.txt
Normal 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 tbaMUD’s utility
|
||||
programs. See admin.txt for more information on how to compile the MUD. See
|
||||
utils.txt for more information on how to use tbaMUD’s utilities.
|
BIN
doc/hacker.pdf
BIN
doc/hacker.pdf
Binary file not shown.
BIN
doc/license.pdf
BIN
doc/license.pdf
Binary file not shown.
|
@ -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
|
||||
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
|
BIN
doc/porting.pdf
BIN
doc/porting.pdf
Binary file not shown.
153
doc/porting.txt
Normal file
153
doc/porting.txt
Normal 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 can’t 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 tbaMUD’s
|
||||
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 you’re 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,
|
||||
you’ll 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 don’t 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 don’t 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, you’ll 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 don’t 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.
|
BIN
doc/release.pdf
BIN
doc/release.pdf
Binary file not shown.
148
doc/releases.txt
Normal file
148
doc/releases.txt
Normal 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 haven’t seen it
|
||||
and want to.
|
||||
|
||||
Wake the kids and find the dog, because it’s the FTP release of
|
||||
|
||||
CIRCLEMUD 2.0
|
||||
|
||||
That’s 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 you’re looking for a huge MUD with billions
|
||||
of spells, skills, classes, races, and areas, Circle will probably disappoint
|
||||
you severely. Circle still has only the 4 original Diku classes, the original
|
||||
spells, the original skills, and about a dozen areas.
|
||||
|
||||
On the other hand, if you’re looking for a highly stable, well-developed,
|
||||
well-organized "blank slate" MUD on which you can put your OWN ideas for
|
||||
spells, skills, classes, and areas, then Circle might be just what you’re
|
||||
looking for.
|
||||
|
||||
Just take a gander at some of Circle’s 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 they’ll 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 you’re 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 you’re 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 aren’t logged in! "Stat" also allows
|
||||
you to stat people who aren’t 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 don’t 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 he’s 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 aren’t 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 don’t echo to the screen; allows 3 bad PW attempts
|
||||
before disconnecting you.
|
||||
--Players aren’t allowed to choose their character’s name as their
|
||||
password --you’d 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 tbaMUD’s complete source code and areas are available at
|
||||
http://www.tbamud.com.
|
BIN
doc/socials.pdf
BIN
doc/socials.pdf
Binary file not shown.
168
doc/socials.txt
Normal file
168
doc/socials.txt
Normal 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 character’s 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.
|
|
@ -1,11 +1,10 @@
|
|||
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
|
||||
will be continually developed, if you have any additions or corrections please
|
||||
stop by the Builder Academy: builderacademy.net 9091
|
||||
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
|
||||
stop by the Builder Academy at telnet://tbamud.com:9091 or email:
|
||||
rumble@tbamud.com -- Rumble
|
||||
|
||||
--Rumble
|
||||
|
||||
1. Errant Rooms (show error)
|
||||
1. Errant Rooms (show error command)
|
||||
2. SYSERR: Object # (oedit-s-desc) doesn't have drink type as last alias.
|
||||
3. SYSERR: Mob # both Aggressive and Aggressive_to_Alignment.
|
||||
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 #.
|
||||
7. SYSERR: Object # (oedit-s-desc) contains (5) more than maximum (3).
|
||||
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: [ 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
|
||||
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.
|
||||
|
||||
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
|
||||
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
|
||||
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 #.
|
||||
|
||||
A simple one. Limit spell levels to the levels available, on TBA that would
|
||||
be 1-34.
|
||||
A simple one. Limit spell levels to the levels available, on tbaMUD that
|
||||
would be 1-34.
|
||||
|
||||
5: SYSERR: Object # (oedit-s-desc) has negative weight (-2147483644).
|
||||
SYSERR: Object # (oedit-s-desc) has out of range level #2147483647.
|
||||
|
||||
These are really annoying. This happens when you use numbers larger than
|
||||
necessary. This will actually crash many older versions of CircleMUD. Just do
|
||||
not do it. Use realistic numbers.
|
||||
These are really annoying. This happens on older versions of CircleMUD when
|
||||
you use numbers larger than necessary. This will actually crash many older
|
||||
versions of CircleMUD. Just do not do it. Use realistic numbers.
|
||||
|
||||
6: SYSERR: Object # (oedit-s-desc) uses 'UNDEFINED' spell #.
|
||||
|
||||
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
|
||||
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
|
||||
locations. All you have to do to fix this is pick a different equip location
|
||||
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.
|
||||
|
|
BIN
doc/utils.pdf
BIN
doc/utils.pdf
Binary file not shown.
148
doc/utils.txt
Normal file
148
doc/utils.txt
Normal 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
|
||||
administrator’s 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 game’s Wizlist.
|
||||
<immlev> should be set to your game’s 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.
|
28
lib/README
28
lib/README
|
@ -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).
|
|
@ -1 +0,0 @@
|
|||
This directory is to save objects in player houses.
|
|
@ -1 +0,0 @@
|
|||
This is a placeholder file so the directory will be created
|
|
@ -1 +0,0 @@
|
|||
This is a placeholder file so the directory will be created
|
|
@ -1 +0,0 @@
|
|||
This is a placeholder file so the directory will be created
|
|
@ -1 +0,0 @@
|
|||
This is a placeholder file so the directory will be created
|
|
@ -1 +0,0 @@
|
|||
This is a placeholder file so the directory will be created
|
|
@ -1 +0,0 @@
|
|||
This is a placeholder file so the directory will be created
|
|
@ -1,7 +0,0 @@
|
|||
#!/bin/sh
|
||||
|
||||
echo "Purging $1"
|
||||
cd $1
|
||||
date >> deleted
|
||||
../../../bin/delobjs ../../etc/players *.objs >> ../deleted
|
||||
cd ..
|
|
@ -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."
|
|
@ -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
|
|
@ -1 +0,0 @@
|
|||
This is a placeholder file so the directory will be created
|
|
@ -1 +0,0 @@
|
|||
This is a placeholder file so the directory will be created
|
|
@ -1 +0,0 @@
|
|||
This is a placeholder file so the directory will be created
|
|
@ -1 +0,0 @@
|
|||
This is a placeholder file so the directory will be created
|
|
@ -1 +0,0 @@
|
|||
This is a placeholder file so the directory will be created
|
|
@ -1 +0,0 @@
|
|||
This is a placeholder file so the directory will be created
|
File diff suppressed because it is too large
Load diff
|
@ -1,6 +0,0 @@
|
|||
commands.hlp
|
||||
info.hlp
|
||||
socials.hlp
|
||||
spells.hlp
|
||||
wizhelp.hlp
|
||||
$
|
|
@ -1,6 +0,0 @@
|
|||
commands.hlp
|
||||
info.hlp
|
||||
socials.hlp
|
||||
spells.hlp
|
||||
wizhelp.hlp
|
||||
$
|
|
@ -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
|
||||
#
|
||||
$
|
|
@ -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
|
||||
#
|
||||
$
|
|
@ -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).
|
||||
#
|
||||
$
|
|
@ -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
|
||||
#
|
||||
$
|
|
@ -1,9 +1,13 @@
|
|||
(lib/text/news)
|
||||
THE 2007 tbaMUD HERALD
|
||||
THE 2008 tbaMUD HERALD
|
||||
"We addict players for their own enjoyment."
|
||||
|
||||
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.
|
||||
|
||||
** Added questpoints so be sure to ask about quests.
|
||||
|
|
|
@ -982,6 +982,7 @@ He is covered in a film of dirt and grime. He smells even worse than you.
|
|||
80 6400
|
||||
8 8 1
|
||||
E
|
||||
T 206
|
||||
#169
|
||||
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.
|
||||
~
|
||||
2058 0 0 0 0 0 0 0 1000 E
|
||||
30 10 -8 6d6+300 5d5+5
|
||||
300 90000
|
||||
5 19 7 1d1+50 1d2+0
|
||||
50 2500
|
||||
8 8 1
|
||||
E
|
||||
T 207
|
||||
#190
|
||||
cat pussy~
|
||||
the cat~
|
||||
|
|
|
@ -482,7 +482,7 @@ T 3011
|
|||
#3089
|
||||
petshops 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!
|
||||
~
|
||||
|
|
|
@ -40,6 +40,10 @@ The email listing of the gods is pinned against the wall.~
|
|||
0 0 0 0
|
||||
1 1 0 30
|
||||
E
|
||||
emails listing~
|
||||
HELP CONTACT
|
||||
~
|
||||
E
|
||||
wizlist~
|
||||
Implementors
|
||||
~~~~~~~~~~~
|
||||
|
@ -56,10 +60,6 @@ wizlist~
|
|||
Santa Shamra Shimmer Silvanos Smaug Snowlock Talgard Taylor
|
||||
Theophilus Tocamat Torpidai Treestump Tuskony Zizazat
|
||||
~
|
||||
E
|
||||
emails listing~
|
||||
HELP CONTACT
|
||||
~
|
||||
#5
|
||||
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.
|
||||
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
|
||||
generic light~
|
||||
a generic light~
|
||||
|
|
|
@ -1063,8 +1063,8 @@ visible.
|
|||
0 0 0 0
|
||||
0 0 0 0
|
||||
E
|
||||
september~
|
||||
. .:IIIIHIHHIHHHII::I:.
|
||||
june~
|
||||
. .:IIIIHIHHIHHHII::I:.
|
||||
:IIIIHIHHHHHHMMHHIHHIIHHIII:.
|
||||
,.:HIHHHHHHHHHHHHHHHHHHHHHIHIHHII:.
|
||||
.:IIHHHHHHHHMMMMMHHHHMMMHHMHHHIIIHIIII:
|
||||
|
@ -1121,9 +1121,21 @@ IHHHHMHMMMMMMMHHHHHI:IT:TI:..:HI:.. ..:. . :IHII
|
|||
::.:............. .. . ...AHIHIIIIIHHHI::""' 'VII:.. .. .
|
||||
::.:.:.......... .. . ...HHHIIIIIIHHHI::. . '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
|
||||
august~
|
||||
april~
|
||||
. nHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHn.
|
||||
.MS?MMMMMMMMMMMMMMMMMM?MM-MMMMMMMMMSHMMMMMMM
|
||||
MMMMMH?MMMMMMMX*MM?MMX%MM/MMMMMM"HMMMMMMMMMMMM
|
||||
|
@ -1176,7 +1188,7 @@ august~
|
|||
%% % %%%%%%
|
||||
~
|
||||
E
|
||||
july~
|
||||
March~
|
||||
. ,.--..
|
||||
,::.'.. . . "VI:I:".':-.,.
|
||||
,I::. .. . 'VHMHII:.::;:.:,..
|
||||
|
@ -1242,183 +1254,6 @@ july~
|
|||
':::.:... ..I::I::.:....:. .: .. ...::. . . III:II:. '
|
||||
~
|
||||
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~
|
||||
. :AMMMMMMMMMMMMA:
|
||||
:AMMMMMMMMMHHHHHMMMMMMMMA:
|
||||
|
@ -1492,7 +1327,184 @@ february~
|
|||
[;:: : ;;:; ; ; ;
|
||||
~
|
||||
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:".':-.,.
|
||||
,I::. .. . 'VHMHII:.::;:.:,..
|
||||
|
@ -1558,7 +1570,7 @@ March~
|
|||
':::.:... ..I::I::.:....:. .: .. ...::. . . III:II:. '
|
||||
~
|
||||
E
|
||||
april~
|
||||
august~
|
||||
. nHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHn.
|
||||
.MS?MMMMMMMMMMMMMMMMMM?MM-MMMMMMMMMSHMMMMMMM
|
||||
MMMMMH?MMMMMMMX*MM?MMX%MM/MMMMMM"HMMMMMMMMMMMM
|
||||
|
@ -1611,8 +1623,8 @@ april~
|
|||
%% % %%%%%%
|
||||
~
|
||||
E
|
||||
june~
|
||||
. .:IIIIHIHHIHHHII::I:.
|
||||
september~
|
||||
. .:IIIIHIHHIHHHII::I:.
|
||||
:IIIIHIHHHHHHMMHHIHHIIHHIII:.
|
||||
,.:HIHHHHHHHHHHHHHHHHHHHHHIHIHHII:.
|
||||
.:IIHHHHHHHHMMMMMHHHHMMMHHMHHHIIIHIIII:
|
||||
|
@ -1669,18 +1681,6 @@ IHHHHMHMMMMMMMHHHHHI:IT:TI:..:HI:.. ..:. . :IHII
|
|||
::.:............. .. . ...AHIHIIIIIHHHI::""' 'VII:.. .. .
|
||||
::.:.:.......... .. . ...HHHIIIIIIHHHI::. . '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
|
||||
scroll poem irish~
|
||||
|
@ -1712,6 +1712,20 @@ mushrooms~
|
|||
The mushrooms appear not to be poisonous and are relatively clean. They look
|
||||
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
|
||||
potion deep green remove curse~
|
||||
a potion of remove curse~
|
||||
|
|
|
@ -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
|
||||
1 1 1 12
|
||||
1 1 0 0
|
||||
T 1361
|
||||
T 45
|
||||
E
|
||||
shotgun~
|
||||
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
|
||||
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
|
||||
christmas poem soldiers~
|
||||
a soldiers christmas poem~
|
||||
|
|
|
@ -22,6 +22,27 @@ CircleMUD v3.0 Shop File~
|
|||
28
|
||||
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~
|
||||
91
|
||||
92
|
||||
|
|
|
@ -8,7 +8,7 @@ Non-attachable trigger~
|
|||
Mob Tutorial Example Quest Offer - M14~
|
||||
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.
|
||||
* Make sure the actor is a player first.
|
||||
if %actor.is_pc%
|
||||
|
@ -30,7 +30,7 @@ end
|
|||
Mob Tutorial Example Kill Ogre - 16~
|
||||
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.
|
||||
say you got the best of me %actor.name%. But I'll be back.
|
||||
* 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~
|
||||
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.
|
||||
* Check if this was indeed the right object.
|
||||
if %object.vnum% == 1
|
||||
|
@ -64,7 +64,7 @@ end
|
|||
Tutorial II Guard Greet - 24~
|
||||
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.
|
||||
* This is a N S road so only greet players arriving from the south.
|
||||
if %direction% == south && %actor.is_pc%
|
||||
|
@ -78,7 +78,7 @@ end
|
|||
Tutorial II Guard Bribe 10 - 24~
|
||||
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.
|
||||
* This is a comment. Always use amplifying comments to explain your Triggers!
|
||||
* If actor gives 10 coins or more.
|
||||
|
@ -108,7 +108,7 @@ end
|
|||
Obj Command Magic Eight Ball - O47~
|
||||
1 c 2
|
||||
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.
|
||||
* Command trigs do not work for level 32 and above.
|
||||
* There are 20 possible answers that the Magic Eight Ball can give.
|
||||
|
@ -203,7 +203,7 @@ end
|
|||
Tutorial II Guard Closes Gate - 24~
|
||||
0 e 0
|
||||
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.
|
||||
* This is required to close the gate after someone opens it from the other
|
||||
* side.
|
||||
|
@ -216,7 +216,7 @@ lock gate
|
|||
Tutorial II Guard Closes Gate 2 - 24~
|
||||
0 e 0
|
||||
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.
|
||||
* This is required to close the gate after the guard is bribed and someone
|
||||
* leaves to the north.
|
||||
|
@ -229,7 +229,7 @@ lock gate
|
|||
Tutorial Quest 1317 - Starter~
|
||||
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.
|
||||
if %direction% == south
|
||||
if %actor.varexists(solved_tutorial_quest_zone_0)%
|
||||
|
@ -247,7 +247,7 @@ end
|
|||
Tutorial Quest 1317 - Accept~
|
||||
0 d 1
|
||||
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.
|
||||
if !%actor.varexists(solved_tutorial_quest_zone_0)%
|
||||
wait 1 sec
|
||||
|
@ -261,9 +261,12 @@ end
|
|||
Tutorial Quest 1317 - Completion~
|
||||
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.
|
||||
if !%actor.varexists(solved_tutorial_quest_zone_0)% && %object.vnum% == 1394
|
||||
set solved_tutorial_quest_zone_0 1
|
||||
remote solved_tutorial_quest_zone_0 %actor.id%
|
||||
%purge% %object%
|
||||
dance
|
||||
wait 1 sec
|
||||
say Thank you, %actor.name%.
|
||||
|
@ -274,9 +277,6 @@ if !%actor.varexists(solved_tutorial_quest_zone_0)% && %object.vnum% == 1394
|
|||
emote shakes the magic eight ball vigorously.
|
||||
wait 1 sec
|
||||
emote does not seem too pleased with his answer.
|
||||
set solved_tutorial_quest_zone_0 1
|
||||
remote solved_tutorial_quest_zone_0 %actor.id%
|
||||
%purge% %object%
|
||||
else
|
||||
say I don't want that!
|
||||
junk %object.name%
|
||||
|
@ -286,7 +286,7 @@ end
|
|||
Tutorial Quest 1441 - Load 8ball~
|
||||
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.
|
||||
wait 1 sec
|
||||
%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~
|
||||
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.
|
||||
set room_var %actor.room%
|
||||
set target_char %room_var.people%
|
||||
|
@ -336,7 +336,7 @@ end
|
|||
Damage Example~
|
||||
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.
|
||||
wait 1 sec
|
||||
%echo% As %actor.name% enters the room a bolt of lightning smites %actor.himher%.
|
||||
|
@ -410,7 +410,7 @@ end
|
|||
Switch Echo Example~
|
||||
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
|
||||
wait 1
|
||||
switch %random.3%
|
||||
|
@ -442,7 +442,7 @@ done
|
|||
AT Example~
|
||||
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
|
||||
%at% 33 %echo% at'd to a room
|
||||
%at% Rumble %echo% at'd to Rumble
|
||||
|
@ -451,7 +451,7 @@ AT Example~
|
|||
Rumble's Spy~
|
||||
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
|
||||
* Arguments: * means all speech will trigger this.
|
||||
* This will echo all speech to Rumble.
|
||||
|
@ -461,16 +461,13 @@ Rumble's Spy~
|
|||
Transform Example~
|
||||
0 g 100
|
||||
~
|
||||
* %transform% test
|
||||
* as a greet trigger, entering the room will cause
|
||||
* the mob this is attached to, to toggle between mob 1 and 99.
|
||||
say Beginning transform.
|
||||
if %self.vnum%==1
|
||||
%transform% 99
|
||||
else
|
||||
%transform% -1
|
||||
end
|
||||
say Transform complete.
|
||||
* By Rumble of The Builder Academy tbamud.com 9091
|
||||
* As a greet trigger, entering the room will cause this mob to transform into
|
||||
* a random mob vnum 100-199.
|
||||
emote starts to twist and contort into something different.
|
||||
eval number %random.100% + 99
|
||||
%transform% %number%
|
||||
say Transform complete to mob %number%.
|
||||
~
|
||||
#22
|
||||
IF Example~
|
||||
|
@ -541,32 +538,7 @@ end
|
|||
While Damage Example - Grenade O1301~
|
||||
1 h 100
|
||||
~
|
||||
* By Rumble of The Builder Academy builderacademy.net 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
|
||||
* 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%
|
||||
|
@ -594,7 +566,7 @@ done
|
|||
Room While Teleport Example~
|
||||
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.
|
||||
eval person %self.people%
|
||||
wait 1 sec
|
||||
|
@ -612,69 +584,98 @@ done
|
|||
Command Example~
|
||||
2 c 100
|
||||
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%
|
||||
%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
|
||||
~
|
||||
#26
|
||||
Blocks Mobs Not Following~
|
||||
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 the mob does not have a master than do not let it enter.
|
||||
* If the mob does not have a master.
|
||||
if !%actor.master%
|
||||
* Return 0 prevents the mob from entering.
|
||||
return 0
|
||||
end
|
||||
end
|
||||
~
|
||||
#27
|
||||
Character Variables Example~
|
||||
Actor Variables Example~
|
||||
0 b 100
|
||||
~
|
||||
* Variables Example by Rumble
|
||||
* Random trigger so we must define actor
|
||||
* By Rumble of The Builder Academy tbamud.com 9091
|
||||
* A listing and demonstration of all actor variables.
|
||||
* Random triggers do not have actors so we must define one.
|
||||
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%
|
||||
%echo% ACTOR.NAME: %actor.name%
|
||||
%echo% AGE: %actor.age%
|
||||
%echo% ALIAS: %actor.alias%
|
||||
%echo% CANBESEEN: %actor.canbeseen%
|
||||
%echo% CHARISMA: %actor.cha%
|
||||
%echo% CLASS: %actor.class%
|
||||
%echo% CONSTITUTION: %actor.con%
|
||||
%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% 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% MAX HITPOINTS: %actor.maxhitp%
|
||||
%echo% MAX MANA: %actor.maxmana%
|
||||
%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% GOLD: %actor.gold%
|
||||
%echo% HAS_ITEM: %actor.has_item(1332)%
|
||||
%echo% HESHE: %actor.heshe%
|
||||
%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% STRENGTH/STRADD: %actor.str%/%actor.stradd%
|
||||
%echo% THIRST: %actor.thirst%
|
||||
%echo% TITLE: %actor.title%
|
||||
%echo% VAREXISTS: %actor.varexists(tba_greeting)%
|
||||
%echo% VNUM: %actor.vnum%
|
||||
%echo% WISDOM: %actor.wis%
|
||||
%echo% WEIGHT: %actor.weight%
|
||||
* Objects TSTAT 28, Rooms TSTAT 29, Text TSTAT 30, Special TSTAT 31.
|
||||
*
|
||||
|
@ -693,9 +694,19 @@ end
|
|||
Object Variables Example~
|
||||
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% IS_INROOM: %self.is_inroom%
|
||||
%echo% NAME: %self.name%
|
||||
%echo% NEXT_IN_LIST: %self.next_in_list%
|
||||
%echo% ROOM: %self.room%
|
||||
%echo% SHORTDESC: %self.shortdesc%
|
||||
%echo% TIMER: %self.timer%
|
||||
%echo% TYPE: %self.type%
|
||||
|
@ -704,44 +715,39 @@ Object Variables Example~
|
|||
%echo% VAL2: %self.val2%
|
||||
%echo% VAL3: %self.val3%
|
||||
%echo% VNUM: %self.vnum%
|
||||
%echo% CARRIED_BY: %self.carried_by%
|
||||
%echo% NEXT_IN_LIST: %self.next_in_list%
|
||||
%echo% WORN_BY: %self.worn_by%
|
||||
%echo% WEARFLAG: %self.wearflag%
|
||||
%echo% WEIGHT: %self.weight%
|
||||
%echo% COST: %self.cost%
|
||||
%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%
|
||||
%echo% WORN_BY: %self.worn_by%
|
||||
%purge% self
|
||||
~
|
||||
#29
|
||||
Room Variables Example~
|
||||
2 b 100
|
||||
~
|
||||
* By Rumble
|
||||
%echo% ID: %self.id%
|
||||
%echo% NAME: %self.name%
|
||||
%echo% NORTH: %self.north% %self.north(vnum)%
|
||||
%echo% SOUTH: %self.south% %self.south(key)%
|
||||
%echo% SOUTH: %self.south% %self.south(vnum)%
|
||||
%echo% EAST: %self.east% %self.east(bits)%
|
||||
%echo% WEST: %self.west% %self.west(room)%
|
||||
%echo% UP: %self.up%
|
||||
%echo% DOWN: %self.down%
|
||||
%echo% VNUM: %self.vnum%
|
||||
%echo% PEOPLE: %self.people%
|
||||
%echo% WEATHER: %self.weather%
|
||||
%echo% SECTOR: %self.sector%
|
||||
%echo% CONTENTS: %self.contents%
|
||||
* By Rumble of The Builder Academy tbamud.com 9091
|
||||
* A listing and demonstration of all room variables.
|
||||
%echo% CONTENTS: %self.contents%
|
||||
%echo% NORTH: %self.north% %self.north(vnum)%
|
||||
%echo% SOUTH: %self.south% %self.south(key)%
|
||||
%echo% SOUTH: %self.south% %self.south(vnum)%
|
||||
%echo% EAST: %self.east% %self.east(bits)%
|
||||
%echo% WEST: %self.west% %self.west(room)%
|
||||
%echo% UP: %self.up%
|
||||
%echo% DOWN: %self.down%
|
||||
%echo% ID: %self.id%
|
||||
%echo% NAME: %self.name%
|
||||
%echo% PEOPLE: %self.people%
|
||||
%echo% RANDOM.DIR: %self.random.dir%
|
||||
%echo% SECTOR: %self.sector%
|
||||
%echo% VNUM: %self.vnum%
|
||||
%echo% WEATHER: %self.weather%
|
||||
~
|
||||
#30
|
||||
Text Variables Example~
|
||||
2 d 100
|
||||
*~
|
||||
* By Rumble
|
||||
* The Arguments: * means all speech will fire the trigger.
|
||||
* By Rumble of The Builder Academy tbamud.com 9091
|
||||
* A listing and demonstration of all text variables.
|
||||
%echo% SPEECH: %speech%
|
||||
%echo% STRLEN: %speech.strlen%
|
||||
%echo% TRIM: %speech.trim%
|
||||
|
@ -749,38 +755,34 @@ Text Variables Example~
|
|||
%echo% CDR: %speech.cdr%
|
||||
%echo% MUDCOMMAND: %speech.mudcommand%
|
||||
%echo% CONTAINS: %speech.contains(test)%
|
||||
%echo% CHARAT 3: %speech.charat(3)%
|
||||
~
|
||||
#31
|
||||
Special Variables Example~
|
||||
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% HOUR: %time.hour%
|
||||
%echo% DAY: %time.day%
|
||||
%echo% MONTH: %time.month%
|
||||
%echo% YEAR: %time.year%
|
||||
%echo% PEOPLE: %people.1233%
|
||||
%echo% PEOPLE: %people.3%
|
||||
%echo% RANDOM NUM: %random.99%
|
||||
%echo% RANDOM PC: %random.char%
|
||||
%echo% SPEECH: %speech%
|
||||
%echo% FINDOBJ: There are %findobj.1233(1300)% objects of vnum 1300 in room 1233.
|
||||
%echo% There is %findobj.1233(1346356)% object of ID 1346356 in room 1233.
|
||||
%echo% There are %findobj.1233(app)% objects of name app in room 1233.
|
||||
%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.
|
||||
%echo% FINDOBJ: There are %findobj.3(33)% objects of vnum 33 in room 3.
|
||||
%echo% There are %findobj.3(guide)% objects of name guide in room 3.
|
||||
%echo% FINDMOB: There are %findmob.3(33)% mobs of vnum 33 in room 3.
|
||||
~
|
||||
#32
|
||||
Mob Checks Player Inventory~
|
||||
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)%
|
||||
eval wep %actor.eq(wield)%
|
||||
if %wep.vnum%==1300
|
||||
|
@ -967,44 +969,41 @@ say %msg%
|
|||
Switch Example~
|
||||
0 g 100
|
||||
~
|
||||
* By Falstar
|
||||
switch %random.6%
|
||||
case 0
|
||||
* By Falstar of The Builder Academy tbamud.com 9091
|
||||
* Pick a random number 1-7, 7 is actually for the default case.
|
||||
switch %random.7%
|
||||
case 1
|
||||
set book 'Creative cooking with human flesh'
|
||||
break
|
||||
case 1
|
||||
case 2
|
||||
set book 'Re-animating the Dead for Dummies'
|
||||
break
|
||||
case 2
|
||||
case 3
|
||||
set book 'How to teach your henchman to rob graves in 7 days'
|
||||
break
|
||||
case 3
|
||||
case 4
|
||||
set book 'An A-Z guide of Mage-induced maladies and mutations'
|
||||
break
|
||||
case 4
|
||||
case 5
|
||||
set book '101 Easy ways to rescue a damsel in distress'
|
||||
break
|
||||
case 5
|
||||
case 6
|
||||
set book 'Witch Hazel's Bumper Book of rare herbs and potions'
|
||||
break
|
||||
case 6
|
||||
set book 'Arcane Artifacts made easy'
|
||||
break
|
||||
default
|
||||
* this should be here, even if it's never reached
|
||||
set book default reached
|
||||
done
|
||||
*
|
||||
wait 1 s
|
||||
%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% The doctor looks up at you, seeming to notice you for the first time.
|
||||
wait 1 s
|
||||
say ah %actor.name%, I was wondering when you'd drop by.
|
||||
set book 'Arcane Artifacts made easy'
|
||||
done
|
||||
*
|
||||
wait 1 s
|
||||
%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% The doctor looks up at you, seeming to notice you for the first time.
|
||||
wait 1 s
|
||||
say ah %actor.name%, I was wondering when you'd drop by.
|
||||
~
|
||||
#35
|
||||
Mob Room Wander Switch~
|
||||
0 b 100
|
||||
Mob Room Specific Speeches~
|
||||
0 b 5
|
||||
~
|
||||
* By Rumble
|
||||
* So we don't get problems if more than one is loaded.
|
||||
|
@ -1065,7 +1064,7 @@ done
|
|||
Time Example~
|
||||
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.
|
||||
* Convert hour from 24 hour to 12 hour clock with am/pm
|
||||
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%.
|
||||
~
|
||||
#37
|
||||
Emote Copycat~
|
||||
0 c 100
|
||||
e~
|
||||
if %cmd.mudcommand% == emote && %arg%
|
||||
wait 2 sec
|
||||
emote %arg%
|
||||
Obj Command quarter flip example~
|
||||
1 c 2
|
||||
flip~
|
||||
* By Rumble of The Builder Academy tbamud.com 9091
|
||||
* Numeric Arg: 2 means in character's carried inventory
|
||||
* 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
|
||||
~
|
||||
#38
|
||||
Mob Receive and Assemble Example~
|
||||
0 j 100
|
||||
~
|
||||
* Example by Aeon
|
||||
wait 2 sec
|
||||
* Check mob's inventory (this does not include equipped items)
|
||||
* By Aeon of The Builder Academy tbamud.com 9091
|
||||
* 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)%
|
||||
* Removing items from the mob
|
||||
%purge% flour
|
||||
%purge% salt
|
||||
%purge% sugar
|
||||
%purge% soda
|
||||
%purge% egg
|
||||
* Removing items from the mob.
|
||||
%purge% %self.inventory(16701)%
|
||||
%purge% %self.inventory(16702)%
|
||||
%purge% %self.inventory(16703)%
|
||||
%purge% %self.inventory(16704)%
|
||||
%purge% %self.inventory(16705)%
|
||||
wait 2 sec
|
||||
* For roleplay sake
|
||||
say Thank you %actor.name%! Now here is the cake.
|
||||
* Give the reward
|
||||
|
@ -1222,7 +1237,8 @@ end
|
|||
Mob Following Assist Master~
|
||||
0 b 100
|
||||
~
|
||||
* By Rumble
|
||||
* By Rumble of The Builder Academy tbamud.com 9091
|
||||
* Make following mob assist.
|
||||
if %self.master%
|
||||
eval master %self.master%
|
||||
if %master.fighting%
|
||||
|
@ -1233,33 +1249,65 @@ if %self.master%
|
|||
end
|
||||
~
|
||||
#40
|
||||
mfollow Example~
|
||||
0 b 100
|
||||
Random Equipment Scatter and Teleport~
|
||||
2 g 100
|
||||
~
|
||||
* By Welcor
|
||||
set actor %random.char%
|
||||
mfollow %actor%
|
||||
say I follow you now %actor.name%
|
||||
say self.master: %self.master%
|
||||
say actor: %actor%
|
||||
eval follower %self.master%
|
||||
say follower: %follower%
|
||||
say follower.name : %follower.name%
|
||||
* By Random of The Builder Academy tbamud.com 9091
|
||||
* Scatter the player and all of their equipment randomly across the zone.
|
||||
wait 1 sec
|
||||
%send% %actor% You feel you must not have been worthy when a powerful force hurls you back through the gates.
|
||||
wait 2 sec
|
||||
eval stunned %actor.hitp% -1
|
||||
%damage% %actor% %stunned%
|
||||
eval num %random.99% + 20300
|
||||
%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
|
||||
Hunt Example~
|
||||
Memory and Mhunt Example~
|
||||
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.
|
||||
sleep
|
||||
%echo% Targetting %actor.name%
|
||||
wait 10 s
|
||||
wake
|
||||
stand
|
||||
north
|
||||
north
|
||||
up
|
||||
%random.dir%
|
||||
%random.dir%
|
||||
%random.dir%
|
||||
%echo% Hunting...%actor.name%
|
||||
mhunt %actor%
|
||||
~
|
||||
|
@ -1380,15 +1428,13 @@ done
|
|||
Rumble's Shotgun~
|
||||
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 %self.worn_by%
|
||||
* This is 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.
|
||||
|
@ -1500,7 +1546,7 @@ end
|
|||
Eval and Set Example~
|
||||
2 d 100
|
||||
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.
|
||||
* 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):
|
||||
|
@ -1818,7 +1864,7 @@ Mob Entry Example~
|
|||
* first find the room the mob is in and put the value in %inroom%
|
||||
eval inroom %self.room%
|
||||
* then check on the rooms vnum
|
||||
if %inroom.vnum% == 1233
|
||||
if %inroom.vnum% == 33
|
||||
say I, %self.name%, declare this room Rumble's.
|
||||
end
|
||||
eval person %inroom.people%
|
||||
|
@ -1923,7 +1969,8 @@ done
|
|||
Mob Memory Example Part 1~
|
||||
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%
|
||||
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~
|
||||
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
|
||||
poke %actor.name%
|
||||
say i've seen you before, %actor.name%.
|
||||
|
|
|
@ -443,7 +443,7 @@ end
|
|||
Mob Act - 156 speaker greet~
|
||||
0 e 0
|
||||
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:
|
||||
* "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.
|
||||
|
@ -602,7 +602,7 @@ end
|
|||
Thief Guildguard - 177~
|
||||
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.
|
||||
if %direction% == up
|
||||
* Let the guildmaster pass to pawn players items. T137.
|
||||
|
@ -624,7 +624,7 @@ end
|
|||
Thief Guildmaster Steals - M122~
|
||||
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
|
||||
* 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
|
||||
|
@ -667,14 +667,32 @@ Questmaster Greet - 3~
|
|||
~
|
||||
* 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.
|
||||
* 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
|
||||
wait 2 sec
|
||||
* Check to see if they are not on a zone 1 quest.
|
||||
if !%actor.varexists(on_quest_zone_1)%
|
||||
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?
|
||||
*get the values from the player variable
|
||||
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
|
||||
~
|
||||
|
@ -684,8 +702,27 @@ Questmaster Quest Assignment - 3~
|
|||
*~
|
||||
* 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.
|
||||
* 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)% || %actor.questpoints% > 50
|
||||
if %actor.varexists(on_quest_zone_1)%
|
||||
*get the values from the player variable
|
||||
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%
|
||||
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
|
||||
|
@ -706,9 +743,9 @@ while %word%
|
|||
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% 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.
|
||||
set on_quest_zone_1 1
|
||||
set on_quest_zone_1 %time.day% %time.hour%
|
||||
remote on_quest_zone_1 %actor.id%
|
||||
halt
|
||||
elseif object /= %word% || find /= %word%
|
||||
|
@ -716,9 +753,9 @@ while %word%
|
|||
%load% o 15
|
||||
%at% %loadroom% drop quest_token_zone_1
|
||||
%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.
|
||||
set on_quest_zone_1 1
|
||||
set on_quest_zone_1 %time.day% %time.hour%
|
||||
remote on_quest_zone_1 %actor.id%
|
||||
halt
|
||||
end
|
||||
|
@ -732,7 +769,7 @@ done
|
|||
Quest Timer - 16~
|
||||
1 c 7
|
||||
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.
|
||||
* Let a player see how much time they have left.
|
||||
if %cmd.mudcommand% == look && timer /= %arg%
|
||||
|
@ -747,7 +784,7 @@ end
|
|||
Quest 10 min Purge - 15, 16, 17~
|
||||
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.
|
||||
* Attached to quest objects 15-17. Purges itself 10 minutes after loading if
|
||||
* player does not finish the quest.
|
||||
|
@ -767,7 +804,7 @@ end
|
|||
Quest Timer Random - 16~
|
||||
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.
|
||||
* If timer is being carried by a player, warn them every 2 minutes.
|
||||
if %self.carried_by%
|
||||
|
@ -781,7 +818,7 @@ end
|
|||
Questmaster Receive - 3~
|
||||
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.
|
||||
* Check if they are on the quest.
|
||||
if !%actor.varexists(on_quest_zone_1)%
|
||||
|
@ -791,13 +828,13 @@ if !%actor.varexists(on_quest_zone_1)%
|
|||
end
|
||||
*
|
||||
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
|
||||
rdelete on_quest_zone_1 %actor.id%
|
||||
say Well done, %actor.name%.
|
||||
* Give them 50 gold and experience. Delete the on quest variable and purge.
|
||||
nop %actor.exp(50)%
|
||||
nop %actor.gold(50)%
|
||||
rdelete on_quest_zone_1 %actor.id%
|
||||
%purge% %object%
|
||||
* Reward them with 1 questpoint. Cheap I know but these quests are not hard.
|
||||
nop %actor.questpoints(1)%
|
||||
|
@ -812,7 +849,7 @@ end
|
|||
Quest Mob Loads Head - 15~
|
||||
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.
|
||||
* This is a load instead of a death trig because I want the head to purge 10
|
||||
* minutes after loading.
|
||||
|
@ -913,7 +950,7 @@ emote %speech%
|
|||
Angel Receives Treats - 207~
|
||||
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
|
||||
* her dog treats she will follow you. Everything else she drops.
|
||||
if %object.type% == FOOD
|
||||
|
@ -1007,14 +1044,20 @@ end
|
|||
Check for treats - 207~
|
||||
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)%
|
||||
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)%
|
||||
wait 1 sec
|
||||
emote sniff %actor.name%
|
||||
wait 1 sec
|
||||
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
|
||||
~
|
||||
#156
|
||||
|
@ -1163,7 +1206,7 @@ end
|
|||
Cast spells on Greet - M135~
|
||||
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
|
||||
* affected and only 10% of the time.
|
||||
switch %random.12%
|
||||
|
@ -1236,7 +1279,7 @@ done
|
|||
Mob Questshop Example~
|
||||
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!
|
||||
* Command triggers do not work for level 32 and above.
|
||||
if %cmd.mudcommand% == list
|
||||
|
@ -1878,7 +1921,7 @@ say %speech%
|
|||
Confucius - 23~
|
||||
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
|
||||
eval max %random.27%
|
||||
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~
|
||||
0 e 1
|
||||
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
|
||||
context %actor.id%
|
||||
wait 1 sec
|
||||
if %actor.varexists(TBA_mortal_greeting)%
|
||||
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
|
||||
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
|
||||
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
|
||||
remote TBA_mortal_greeting %actor.id%
|
||||
if !%actor.has_item(1332)%
|
||||
|
|
|
@ -48,20 +48,29 @@ CAPITAL~
|
|||
%send% %actor% @RSocrates tells you, 'Good job, that is correct. Be on the lookout for more of those.'@n
|
||||
~
|
||||
#1304
|
||||
free~
|
||||
0 g 100
|
||||
Sanct check on enter~
|
||||
2 g 100
|
||||
~
|
||||
wait 1 sec
|
||||
say some more good advice may be found under @RHELP GRAMMAR@n and @RHELP REPORT@n.
|
||||
if %actor.affect(SANCT)%
|
||||
%echo% checked sanct
|
||||
else
|
||||
%echo% sanct check failed
|
||||
end
|
||||
~
|
||||
#1305
|
||||
TBA Greeting - 1301~
|
||||
0 e 1
|
||||
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%
|
||||
wait 1 sec
|
||||
* If they have already been greeted welcome them back.
|
||||
if %actor.varexists(TBA_greeting)%
|
||||
say Welcome back %actor.name%. Read through these rooms whenever you need a refresher.
|
||||
* First greeting, give them instructions.
|
||||
else
|
||||
say Welcome to The Builder Academy %actor.name%.
|
||||
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.
|
||||
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.
|
||||
* Now create a variable to remember they have been greeted.
|
||||
set TBA_greeting 1
|
||||
* Save it to the player file.
|
||||
remote TBA_greeting %actor.id%
|
||||
* Give them a trial vnum assigner if they don't have one yet.
|
||||
if !%actor.has_item(1332)%
|
||||
%load% obj 1332 %actor% inv
|
||||
end
|
||||
|
@ -1486,7 +1498,7 @@ free~
|
|||
Drop While Example - Grenade 01301~
|
||||
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%
|
||||
|
@ -1727,35 +1739,10 @@ while (%person%)
|
|||
done
|
||||
~
|
||||
#1361
|
||||
Postal Shotgun - 1392~
|
||||
Free~
|
||||
1 b 100
|
||||
~
|
||||
* if the object is being wielded
|
||||
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
|
||||
* No Script
|
||||
~
|
||||
#1362
|
||||
Deodorant Bottle - 1391~
|
||||
|
@ -2182,60 +2169,63 @@ if (%cmd.mudcommand% == bash || %cmd.mudcommand% == backstab || %cmd.mudcommand%
|
|||
Rumble's Poofs~
|
||||
0 e 0
|
||||
has entered the game.~
|
||||
* does not work for level 32 and above.
|
||||
eval maxpoofin %random.24% -1
|
||||
set poofins[0] appears with a strange wooshing sound and climbs out of a pneumatic air tube like they use at the bank.
|
||||
set poofins[1] thinks himself into existence.
|
||||
set poofins[2] soars into the room like a bird, and THWAP! right into a window.
|
||||
set poofins[3] crawls out of the ground gasping for air.
|
||||
set poofins[4] appears in a flash of blinding nothingness!
|
||||
set poofins[5] falls from the sky above, screaming until he hits the ground. SPLAT! like a bug on a windshield.
|
||||
set poofins[6] appears with a dulcet bang.
|
||||
set poofins[7] appears with a sonic boom.
|
||||
set poofins[8] wanders into the room while practicing omphaloskepsis.
|
||||
set poofins[9] somersaults into the room.
|
||||
set poofins[10] stumbles into the room, tripping over his own feet and falling flat on his face.
|
||||
set poofins[11] dives into the room doing a two and a half tuck gainer, right into the dirt.
|
||||
set poofins[12] runs into the room screaming and looking over his shoulder.
|
||||
set poofins[13] steps out of your shadow.
|
||||
set poofins[14] forms out of the very essence of your shadow to hang in the air before you.
|
||||
set poofins[15] climbs out of your left nostril.
|
||||
set poofins[16] has abandoned his search for truth and is now looking for a good fantasy.
|
||||
set poofins[17] wishes he was a donut specialist.
|
||||
set poofins[18] can resist everything but temptation.
|
||||
set poofins[19] is searching for a near life experience.
|
||||
set poofins[20] walks into the room fashionably early.
|
||||
set poofins[21] hanglides into the room.
|
||||
set poofins[22] parachutes into the room performing a perfect parachute landing fall, except for the fact that he landed backside first.
|
||||
set poofins[23] does a cannonball into room, injuring himself on the hard ground.
|
||||
set poofin %%poofins[%maxpoofin%]%%
|
||||
eval poofin %poofin%
|
||||
%force% %actor% poofin %poofin%
|
||||
* By Rumble of The Builder Academy tbamud.com 9091
|
||||
* To generate random poofs at login just set your loadroom to wherever this
|
||||
* mob is. Does not work for level 32 and above.
|
||||
eval maxpoofin %random.24%
|
||||
set poofins[1] appears with a strange wooshing sound and climbs out of a pneumatic air
|
||||
tube like they use at the bank.
|
||||
set poofins[2] thinks himself into existence.
|
||||
set poofins[3] soars into the room like a bird, and THWAP! right into a window.
|
||||
set poofins[4] crawls out of the ground gasping for air.
|
||||
set poofins[5] appears in a flash of blinding nothingness!
|
||||
set poofins[6] falls from the sky above, screaming until he hits the ground. SPLAT! like a
|
||||
bug on a windshield.
|
||||
set poofins[7] appears with a dulcet bang.
|
||||
set poofins[8] appears with a sonic boom.
|
||||
set poofins[9] wanders into the room while practicing omphaloskepsis.
|
||||
set poofins[10] somersaults into the room.
|
||||
set poofins[11] stumbles into the room, tripping over his own feet and falling flat on his face.
|
||||
set poofins[12] dives into the room doing a two and a half tuck gainer, right into the dirt.
|
||||
set poofins[13] runs into the room screaming and looking over his shoulder.
|
||||
set poofins[14] steps out of your shadow.
|
||||
set poofins[15] forms out of the very essence of your shadow to hang in the air before you.
|
||||
set poofins[16] climbs out of your left nostril.
|
||||
set poofins[17] has abandoned his search for truth and is now looking for a good fantasy.
|
||||
set poofins[18] wishes he was a donut specialist.
|
||||
set poofins[19] can resist everything but temptation.
|
||||
set poofins[20] is searching for a near life experience.
|
||||
set poofins[21] walks into the room fashionably early.
|
||||
set poofins[22] hanglides into the room.
|
||||
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
|
||||
set poofouts[0] 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] thinks himself out of existence.
|
||||
set poofouts[3] 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] disappears in a flash of blinding nothingness!
|
||||
set poofouts[6] merges with his surroundings and vanishes.
|
||||
set poofouts[7] 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] goes to hell in a handbasket.
|
||||
set poofouts[10] does somersaults out of the room.
|
||||
set poofouts[11] 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] 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] 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] 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] 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 %poofout%
|
||||
%force% %actor% poofout %poofout%
|
||||
eval maxpoofout %random.20%
|
||||
set poofouts[1] is chased out of the room by a barrel of rabid monkeys.
|
||||
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[3] thinks himself out of existence.
|
||||
set poofouts[4] walks out saying 'time to make the donuts.'
|
||||
set poofouts[5] goes super critical and has a meltdown. Nothing remains but a pile of steaming radioactive mush.
|
||||
set poofouts[6] disappears in a flash of blinding nothingness!
|
||||
set poofouts[7] merges with his surroundings and vanishes.
|
||||
set poofouts[8] morphs into millions of ants, which run off in all directions.
|
||||
set poofouts[9] senses that everything is well, so he floats away.
|
||||
set poofouts[10] goes to hell in a handbasket.
|
||||
set poofouts[11] does somersaults out of the room.
|
||||
set poofouts[12] dives out of the room doing three rotations in the jackknife position.
|
||||
set poofouts[13] stumbles out of the room with a look of confusion on his face, must have forgotten where he parked.
|
||||
set poofouts[14] steps into your shadow and disappears.
|
||||
set poofouts[15] points behind you with a look of horror. While you turn away he disappears chuckling 'made you look'.
|
||||
set poofouts[16] doesn't like saying goodbye, so he didn't.
|
||||
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[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[19] straps an ACME rocket to his back and asks, 'got a light?' right before it explodes and sends him soaring.
|
||||
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.
|
||||
eval poofout %%poofouts[%maxpoofout%]%%
|
||||
%force% %actor% set self poofout %poofout%
|
||||
~
|
||||
#1373
|
||||
Present Unwrapping~
|
||||
|
@ -2962,7 +2952,7 @@ say 24
|
|||
Random Rabbit Decapitates Mobs - M1307~
|
||||
0 b 100
|
||||
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.
|
||||
* First figure out what room you are in.
|
||||
eval room_var %self.room%
|
||||
|
|
|
@ -122,6 +122,63 @@ else
|
|||
end
|
||||
%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
|
||||
Phoenix Rising - 219~
|
||||
1 c 4
|
||||
|
|
|
@ -419,7 +419,7 @@ mkill %bad_guy%
|
|||
Lieutenant Door Bribe - M23608~
|
||||
0 m 1
|
||||
~
|
||||
* By Welcor of The Builder Academy builderacademy.net 9091
|
||||
* By Welcor of The Builder Academy tbamud.com 9091
|
||||
wait 1
|
||||
* The price is 400 coins to pass. Player must 'give 400 coin leader.'
|
||||
if %amount% < 400
|
||||
|
@ -440,7 +440,7 @@ end
|
|||
Lieutenant Door Bribe 2 - M23608~
|
||||
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.
|
||||
context %actor.id%
|
||||
* Checks a global variable to see if this mob has been bribed. TSTAT 23612.
|
||||
|
@ -466,7 +466,7 @@ end
|
|||
Lieutenant Leave - 23608~
|
||||
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 %direction% == east
|
||||
context %actor.id%
|
||||
|
@ -483,20 +483,16 @@ if %direction% == east
|
|||
end
|
||||
~
|
||||
#23615
|
||||
Check for Dwarf - 23610~
|
||||
2 c 100
|
||||
e~
|
||||
if %cmd.mudcommand% == east
|
||||
if %actor.race%==dwarf
|
||||
%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.
|
||||
%teleport% %actor% 23611
|
||||
%echoaround% %actor% %actor.name% has arrived.
|
||||
%force% %actor% look
|
||||
return 1
|
||||
else
|
||||
return 0
|
||||
end
|
||||
FREE~
|
||||
2 q 100
|
||||
~
|
||||
if %direction% == east
|
||||
return 0
|
||||
%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.
|
||||
%teleport% %actor% 23611
|
||||
%echoaround% %actor% %actor.name% has arrived.
|
||||
%force% %actor% look
|
||||
end
|
||||
~
|
||||
#23616
|
||||
|
|
|
@ -399,7 +399,7 @@ done
|
|||
Slipping on Marbles - 27147~
|
||||
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.
|
||||
if %actor.is_pc%
|
||||
if %actor.dex% < 15
|
||||
|
|
|
@ -203,10 +203,14 @@ quit~
|
|||
%send% %actor% Powerful forces keep you here.
|
||||
~
|
||||
#315
|
||||
Room Command - No Recall~
|
||||
2 c 100
|
||||
recall ~
|
||||
%send% %actor% Divine forces prevent you from doing that.
|
||||
Obj Command - No quit~
|
||||
1 c 3
|
||||
q~
|
||||
if %cmd.mudcommand% == quit
|
||||
%send% %actor% Divine forces prevent you from doing that.
|
||||
else
|
||||
return 0
|
||||
end
|
||||
~
|
||||
#316
|
||||
Mob Fight - generic poison~
|
||||
|
|
|
@ -231,4 +231,10 @@ while %item%
|
|||
* Loop back
|
||||
done
|
||||
~
|
||||
#3012
|
||||
Newbie Tour Guide~
|
||||
0 e 0
|
||||
has entered the game.~
|
||||
%echo% This trigger commandlist is not complete!
|
||||
~
|
||||
$~
|
||||
|
|
|
@ -2,7 +2,7 @@
|
|||
Near Death Trap Mahatma - 6318~
|
||||
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.
|
||||
wait 3 sec
|
||||
say Here, have a quick trip to the Temple of Midgaard.
|
||||
|
|
|
@ -356,7 +356,7 @@ with this zone, and the help of others, you can do this.
|
|||
@RHELP LOCATION@n
|
||||
@RHELP THEME@n
|
||||
@RHELP PLOT@n
|
||||
@RHELP SIZE@n
|
||||
@RHELP ZONE-SIZE@n
|
||||
@RHELP ALIGNMENT@n
|
||||
@RHELP BIAS@n
|
||||
~
|
||||
|
@ -667,7 +667,6 @@ from you. It's a beautiful reciprocal arrangement.
|
|||
--The Catcher in the Rye
|
||||
~
|
||||
S
|
||||
T 1217
|
||||
#34
|
||||
Pool of Images~
|
||||
A broad mosaic walkway wraps around the natural hotsprings in this cavernous
|
||||
|
|
|
@ -318,10 +318,6 @@ that have become common names throughout the realm. It is said that completing
|
|||
a quest is a prerequisite towards immortality.
|
||||
~
|
||||
1 8 0 0 0 0
|
||||
D1
|
||||
~
|
||||
~
|
||||
0 0 -1
|
||||
D2
|
||||
~
|
||||
~
|
||||
|
@ -1078,10 +1074,6 @@ more than just drinks as large shelves are filled with various items and
|
|||
equipment.
|
||||
~
|
||||
1 8 0 0 0 0
|
||||
D1
|
||||
~
|
||||
~
|
||||
0 0 -1
|
||||
D2
|
||||
~
|
||||
~
|
||||
|
@ -1662,7 +1654,7 @@ S
|
|||
The Thieves Warehouse~
|
||||
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
|
||||
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.
|
||||
~
|
||||
1 8 0 0 0 0
|
||||
|
|
|
@ -1210,10 +1210,6 @@ of life. The darkness engulfs the northern exit while the life fills the
|
|||
surrounding area.
|
||||
~
|
||||
104 0 0 0 0 0
|
||||
D0
|
||||
~
|
||||
~
|
||||
0 0 20901
|
||||
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.
|
||||
~
|
||||
104 8196 0 0 0 0
|
||||
D0
|
||||
~
|
||||
~
|
||||
0 0 -1
|
||||
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
|
||||
~
|
||||
104 24 0 0 0 0
|
||||
D0
|
||||
~
|
||||
~
|
||||
0 0 -1
|
||||
E
|
||||
main chamber room taylors tays~
|
||||
@WA small lamp sits in the center of the room letting off a small amount of
|
||||
|
|
|
@ -116,6 +116,17 @@ didn't notice that exit before isn't it?
|
|||
~
|
||||
0 -1 1204
|
||||
S
|
||||
#1233
|
||||
An unfinished room~
|
||||
You are in an unfinished room.
|
||||
~
|
||||
12 0 0 0 0 0
|
||||
D0
|
||||
ueotn
|
||||
~
|
||||
~
|
||||
0 0 0
|
||||
S
|
||||
#1290
|
||||
The Immortal Board Hall~
|
||||
You are standing in a large hall, exits lead off to the board rooms of the
|
||||
|
|
|
@ -38,11 +38,6 @@ D2
|
|||
~
|
||||
0 0 23700
|
||||
E
|
||||
masonry~
|
||||
The stones have been set so close, you can't even force a knife between them.
|
||||
|
||||
~
|
||||
E
|
||||
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
|
||||
#23602
|
||||
Inside the Tradehalls~
|
||||
|
@ -231,7 +231,6 @@ The trade halls are here.
|
|||
gate wooden~
|
||||
1 0 23609
|
||||
S
|
||||
T 23615
|
||||
#23611
|
||||
Passing by the workshops~
|
||||
You are stand,ing just inside the entrance to the dwarven city, and you are
|
||||
|
@ -276,6 +275,12 @@ D0
|
|||
~
|
||||
0 0 23611
|
||||
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~
|
||||
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,
|
||||
|
@ -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
|
||||
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
|
||||
#23613
|
||||
Before the city~
|
||||
|
@ -359,15 +358,15 @@ D3
|
|||
~
|
||||
0 0 23611
|
||||
E
|
||||
crate~
|
||||
A wooden crate about one by two feet. It contains strips of leather used for
|
||||
the armours made here.
|
||||
~
|
||||
E
|
||||
forge~
|
||||
The forge has been set in sotnes and is extremely hot. On the other side of
|
||||
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
|
||||
#23616
|
||||
At the stonewrights.~
|
||||
|
@ -382,6 +381,13 @@ D3
|
|||
~
|
||||
0 0 23613
|
||||
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~
|
||||
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
|
||||
#23617
|
||||
The dwarven city~
|
||||
|
@ -550,10 +549,9 @@ The ladder stretches into darkness.
|
|||
~
|
||||
0 0 23670
|
||||
E
|
||||
walls~
|
||||
The walls are the same rock as the surrounding city. You notice, however,
|
||||
that these walls doesn't consist of blocks of stone. The room's more likely
|
||||
been dug out of the mountain.
|
||||
basket~
|
||||
A large basket, it looks sturdy enough to carry a ton of rock at once. It
|
||||
should be able to carry you with all your belongings without any problems.
|
||||
~
|
||||
E
|
||||
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.
|
||||
~
|
||||
E
|
||||
basket~
|
||||
A large basket, it looks sturdy enough to carry a ton of rock at once. It
|
||||
should be able to carry you with all your belongings without any problems.
|
||||
walls~
|
||||
The walls are the same rock as the surrounding city. You notice, however,
|
||||
that these walls doesn't consist of blocks of stone. The room's more likely
|
||||
been dug out of the mountain.
|
||||
~
|
||||
S
|
||||
T 23606
|
||||
|
@ -1530,18 +1529,18 @@ A portal leads back to the royal court.
|
|||
portal~
|
||||
0 0 23663
|
||||
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~
|
||||
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
|
||||
magical field protects the chain, and no matter how you try, you can't seem to
|
||||
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
|
||||
#23667
|
||||
At the Dwarven Court~
|
||||
|
@ -1559,14 +1558,14 @@ The court continues.
|
|||
~
|
||||
0 0 23663
|
||||
E
|
||||
tapestries~
|
||||
You wonder, could there be anything behind these heavy tapestries?
|
||||
~
|
||||
E
|
||||
throne chair seat dwarven~
|
||||
The Throne has been cut of black marble, and decorated with jade. In the
|
||||
seat the king seem almost divine.
|
||||
~
|
||||
E
|
||||
tapestries~
|
||||
You wonder, could there be anything behind these heavy tapestries?
|
||||
~
|
||||
S
|
||||
T 23603
|
||||
T 23602
|
||||
|
|
|
@ -197,6 +197,11 @@ You see the exit to the entrance hall.
|
|||
~
|
||||
0 -1 3006
|
||||
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~
|
||||
The sign reads:
|
||||
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
|
||||
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
|
||||
#3008
|
||||
The Reception~
|
||||
|
@ -256,14 +256,6 @@ You see the main street.
|
|||
~
|
||||
0 -1 3013
|
||||
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~
|
||||
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
|
||||
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
|
||||
#3010
|
||||
The General Store~
|
||||
|
@ -829,9 +829,14 @@ The city gate is to the west.
|
|||
gate~
|
||||
1 3112 3052
|
||||
E
|
||||
bridge footbridge~
|
||||
It is too high up to reach but it looks as if one easily could walk across it
|
||||
from one tower to the other.
|
||||
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.
|
||||
~
|
||||
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
|
||||
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.
|
||||
~
|
||||
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
|
||||
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.
|
||||
bridge footbridge~
|
||||
It is too high up to reach but it looks as if one easily could walk across it
|
||||
from one tower to the other.
|
||||
~
|
||||
S
|
||||
#3041
|
||||
|
@ -873,9 +873,14 @@ You see Main Street.
|
|||
~
|
||||
0 -1 3016
|
||||
E
|
||||
bridge footbridge~
|
||||
It is too high up to reach but it looks as if one easily could walk across it
|
||||
from one tower to the other.
|
||||
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.
|
||||
~
|
||||
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
|
||||
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.
|
||||
~
|
||||
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
|
||||
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.
|
||||
bridge footbridge~
|
||||
It is too high up to reach but it looks as if one easily could walk across it
|
||||
from one tower to the other.
|
||||
~
|
||||
S
|
||||
#3042
|
||||
|
@ -939,14 +939,14 @@ The road continues further south.
|
|||
~
|
||||
0 -1 3047
|
||||
E
|
||||
wall writing letters~
|
||||
It says 'Who watches the watchmen? '
|
||||
~
|
||||
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.
|
||||
~
|
||||
E
|
||||
wall writing letters~
|
||||
It says 'Who watches the watchmen? '
|
||||
~
|
||||
S
|
||||
#3044
|
||||
Poor Alley~
|
||||
|
@ -1086,18 +1086,18 @@ You see the Concourse.
|
|||
~
|
||||
0 -1 3100
|
||||
E
|
||||
bridge~
|
||||
wall~
|
||||
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
|
||||
opening~
|
||||
You cannot really see it from here as it is somewhere beneath your feet.
|
||||
~
|
||||
E
|
||||
wall~
|
||||
bridge~
|
||||
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
|
||||
#3052
|
||||
|
@ -1118,9 +1118,14 @@ The forest edge is to the west.
|
|||
~
|
||||
0 -1 6092
|
||||
E
|
||||
bridge footbridge~
|
||||
It is too high up to reach but it looks as if one easily could walk across it
|
||||
from one tower to the other.
|
||||
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.
|
||||
~
|
||||
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
|
||||
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.
|
||||
~
|
||||
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
|
||||
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.
|
||||
bridge footbridge~
|
||||
It is too high up to reach but it looks as if one easily could walk across it
|
||||
from one tower to the other.
|
||||
~
|
||||
S
|
||||
#3053
|
||||
|
@ -1157,9 +1157,14 @@ You see the city gate.
|
|||
gate~
|
||||
1 3112 3041
|
||||
E
|
||||
bridge footbridge~
|
||||
It is too high up to reach but it looks as if one easily could walk across it
|
||||
from one tower to the other.
|
||||
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.
|
||||
~
|
||||
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
|
||||
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.
|
||||
~
|
||||
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
|
||||
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.
|
||||
bridge footbridge~
|
||||
It is too high up to reach but it looks as if one easily could walk across it
|
||||
from one tower to the other.
|
||||
~
|
||||
S
|
||||
#3054
|
||||
|
@ -1198,27 +1198,17 @@ You see the southern end of the temple.
|
|||
~
|
||||
0 -1 3001
|
||||
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~
|
||||
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,
|
||||
just above his shoulders, his two ravens Hugin and Munin are sitting and at his
|
||||
feet are his wolves Gere and Freke.
|
||||
~
|
||||
S
|
||||
#3055
|
||||
Odin's Store~
|
||||
This is the small dark room in which Odin keeps the player items that he
|
||||
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!
|
||||
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.
|
||||
~
|
||||
30 520 0 0 0 0
|
||||
S
|
||||
#3058
|
||||
Ye Olde Water Shoppe~
|
||||
|
@ -1327,6 +1317,29 @@ You see the entrance to the Grunting Boar Inn and Tavern.
|
|||
~
|
||||
0 -1 3006
|
||||
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~
|
||||
**********************************************************
|
||||
* *
|
||||
|
@ -1345,29 +1358,6 @@ sign~
|
|||
* 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
|
||||
#3063
|
||||
The Midgaard Donation Room~
|
||||
|
|
|
@ -2,10 +2,6 @@
|
|||
Rumble~
|
||||
The Builder Academy Zone~
|
||||
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)
|
||||
R 0 88 1228 -1 (a advertising bulletin board)
|
||||
O 0 1228 99 88 (a advertising bulletin board)
|
||||
|
|
|
@ -2,6 +2,8 @@
|
|||
Rumble~
|
||||
Sanctus~
|
||||
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)
|
||||
G 1 47 99 -1 (the magic eight ball)
|
||||
D 0 162 2 1 (Thieves Avenue)
|
||||
|
|
|
@ -2,10 +2,10 @@
|
|||
CircleMUD~
|
||||
God Simplex~
|
||||
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)
|
||||
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)
|
||||
O 0 1227 99 1293 (a staff bulletin board)
|
||||
R 0 1291 1226 -1 (a builder's bulletin board)
|
||||
|
|
|
@ -2,22 +2,21 @@
|
|||
Rumble~
|
||||
Sanctus II~
|
||||
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 196 1 251 (the newbie guide)
|
||||
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 30 3 220 (the spy for the underground)
|
||||
M 0 30 3 212 (the spy for the underground)
|
||||
M 0 210 1 265 (the quest shopkeeper)
|
||||
O 0 307 1 242 (a jar of palmatite)
|
||||
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)
|
||||
O 0 373 99 225 (a large well)
|
||||
M 0 109 1 225 (Hazel, the wellmaster)
|
||||
|
|
|
@ -3272,7 +3272,7 @@ ACMD(do_links)
|
|||
skip_spaces(&argument);
|
||||
one_argument(argument, arg);
|
||||
|
||||
if (!arg || !*arg) {
|
||||
if (!is_number(arg)) {
|
||||
zrnum = world[IN_ROOM(ch)].zone;
|
||||
zvnum = zone_table[zrnum].number;
|
||||
} else {
|
||||
|
@ -3409,7 +3409,7 @@ ACMD (do_zcheck)
|
|||
struct extra_descr_data *ext, *ext2;
|
||||
one_argument(argument, buf);
|
||||
|
||||
if (!buf || !*buf || !strcmp(buf, "."))
|
||||
if (!is_number(buf) || !strcmp(buf, "."))
|
||||
zrnum = world[IN_ROOM(ch)].zone;
|
||||
else
|
||||
zrnum = real_zone(atoi(buf));
|
||||
|
|
|
@ -13,7 +13,7 @@
|
|||
#include "structs.h"
|
||||
#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 *ascii_pfiles_version = "ASCII Player Files 3.0.1";
|
||||
|
||||
|
|
4
src/db.h
4
src/db.h
|
@ -82,8 +82,8 @@
|
|||
#define MOTD_FILE LIB_TEXT"motd" /* messages of the day / mortal */
|
||||
#define IMOTD_FILE LIB_TEXT"imotd" /* messages of the day / immort */
|
||||
#define GREETINGS_FILE LIB_TEXT"greetings" /* The opening screen. */
|
||||
#define HELP_PAGE_FILE LIB_TEXT_HELP"screen" /* for HELP <CR> */
|
||||
#define IHELP_PAGE_FILE LIB_TEXT_HELP"iscreen" /* for HELP <CR> imms */
|
||||
#define HELP_PAGE_FILE LIB_TEXT_HELP"help" /* for HELP <CR> */
|
||||
#define IHELP_PAGE_FILE LIB_TEXT_HELP"ihelp" /* for HELP <CR> imms */
|
||||
#define INFO_FILE LIB_TEXT"info" /* for INFO */
|
||||
#define WIZLIST_FILE LIB_TEXT"wizlist" /* for WIZLIST */
|
||||
#define IMMLIST_FILE LIB_TEXT"immlist" /* for IMMLIST */
|
||||
|
|
|
@ -228,7 +228,7 @@ int delete_room(room_rnum rnum)
|
|||
}
|
||||
|
||||
/* 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++) {
|
||||
if (SHOP_ROOM(i, j) == world[rnum].number)
|
||||
SHOP_ROOM(i, j) = 0; /* set to the void */
|
||||
|
|
|
@ -23,7 +23,7 @@
|
|||
/* external variables */
|
||||
extern room_rnum r_mortal_start_room;
|
||||
extern int mini_mud;
|
||||
extern char cast_arg2[MAX_STRING_LENGTH];
|
||||
extern char cast_arg2[MAX_INPUT_LENGTH];
|
||||
|
||||
/* external functions */
|
||||
void weight_change_object(struct obj_data *obj, int weight);
|
||||
|
|
|
@ -14,7 +14,7 @@
|
|||
* 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
|
||||
* 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
|
||||
* it was when players rented, set the define below to 1. */
|
||||
|
@ -763,7 +763,6 @@ struct char_special_data {
|
|||
|
||||
struct player_special_data_saved {
|
||||
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! */
|
||||
byte freeze_level; /* Level of god who froze char, if any */
|
||||
sh_int invis_level; /* level of invisibility */
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
/* ************************************************************************
|
||||
* file: asciipasswd.c (derived from mudpasswd.c) Part of CircleMud *
|
||||
* Usage: generating hashed passwords for an ascii playerfile *
|
||||
* file: asciipasswd.c (derived from mudpasswd.c) Part of tbaMUD *
|
||||
* Usage: generating hashed passwords for an ascii playerfile. *
|
||||
* Copyright (C) 1990, 1991 - see 'license.doc' for complete information. *
|
||||
* All Rights Reserved *
|
||||
************************************************************************* */
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
/* ************************************************************************
|
||||
* file: autowiz.c Part of CircleMUD *
|
||||
* file: autowiz.c Part of tbaMUD *
|
||||
* Usage: self-updating wizlists *
|
||||
* Written by Jeremy Elson *
|
||||
* All Rights Reserved *
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
/* ************************************************************************
|
||||
* file: listrent.c Part of CircleMUD *
|
||||
* file: listrent.c Part of tbaMUD *
|
||||
* Usage: list player rent files *
|
||||
* Written by Jeremy Elson *
|
||||
* All Rights Reserved *
|
||||
|
|
|
@ -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. *
|
||||
* All Rights Reserved *
|
||||
************************************************************************* */
|
||||
|
|
|
@ -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 "sysdep.h"
|
||||
|
|
|
@ -1,17 +1,9 @@
|
|||
/*
|
||||
* sign.c: a program to present text on a TCP port
|
||||
*
|
||||
* Author: Jeremy Elson (jelson@circlemud.org)
|
||||
* Usage: sign <port> <filename> or
|
||||
* 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.
|
||||
*/
|
||||
/* ************************************************************************
|
||||
* file: sign.c Part of tbaMUD *
|
||||
* Usage: A program to present text on a TCP port. *
|
||||
* sign <port> <filename | port> *
|
||||
* Written by Jeremy Elson *
|
||||
************************************************************************* */
|
||||
|
||||
#define MAX_FILESIZE 8192
|
||||
#define LINEBUF_SIZE 128
|
||||
|
|
|
@ -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 *
|
||||
* Written by Jeremy Elson *
|
||||
* All Rights Reserved *
|
||||
|
|
|
@ -1,10 +1,8 @@
|
|||
/* ************************************************************************
|
||||
* File: wld2html.c *
|
||||
* Usage: Convert a DikuMUD .wld file into a series of .html files *
|
||||
* File: webster.c Part of tbaMUD *
|
||||
* Usage: Use an online dictionary via tell m-w <word>. *
|
||||
* *
|
||||
* This program is in the public domain. *
|
||||
* Written (QUICKLY AND DIRTILY) by Jeremy Elson (jelson@circlemud.org) *
|
||||
* Based on the Circle 3.0 syntax checker program (scheck.c) *
|
||||
* Based on the Circle 3.0 syntax checker and wld2html programs. *
|
||||
************************************************************************ */
|
||||
|
||||
#define log(msg) fprintf(stderr, "%s\n", msg)
|
||||
|
|
|
@ -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 *
|
||||
* *
|
||||
* This program is in the public domain. *
|
||||
* Written (QUICKLY AND DIRTILY) by Jeremy Elson (jelson@circlemud.org) *
|
||||
* Based on the Circle 3.0 syntax checker program (scheck.c) *
|
||||
* Written (QUICKLY AND DIRTILY) by Jeremy Elson *
|
||||
* Based on the Circle 3.0 syntax checker program *
|
||||
************************************************************************ */
|
||||
|
||||
#define log(msg) fprintf(stderr, "%s\n", msg)
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue