- Removed the do_oasis function and called the Xedit commands directly (thanks Rhade).

- Updated idle timer to keep track of imms too (thanks Jamdog).
- Standardized OLC messages.
- Removed special procedures that were replaced with trigedit.
- Updated README.WIN, README.MSVC8, and README.CYGWIN.
--Rumble
This commit is contained in:
Rumble 2007-03-28 12:53:48 +00:00
parent f34cc2c8ed
commit 7f65248b2a
26 changed files with 534 additions and 1006 deletions

5
FAQ
View file

@ -1,7 +1,6 @@
Frequently Asked Questions (FAQ) for tbaMUD with Answers
Updated: Apr 2007
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

21
README
View file

@ -1,7 +1,6 @@
tbaMUD README File
---------------------
Updated: Apr 2007
tbaMUD README
-------------
All requests for help or bugs should be reported to: builderacademy.net 9091.
Information about CircleMUD can be found at the CircleMUD Home Page and FTP:
@ -32,29 +31,21 @@ Many of these instructions are outdated, please feel free to update them.
AMIGA - If you are using an Amiga running AmigaDOS. (If you're running
NetBSD or Linux on an Amiga, use README.UNIX instead.)
ARC - If you are using an Acorn running RiscOS.
BORLAND - For those using Borland under Windows.
CYGWIN - If you are using Cygwin shell in Windows (Updated 12/2006).
CYGWIN - If you are using Cygwin shell in Windows.
MSVC# - If you are using MSVC.
OS2 - If you are using OS/2 Warp Connect v3.0 or OS/2 v2.x.
UNIX - If you have any type UNIX system, including Linux, MkLinux, Ultrix,
HP/UX, Solaris, SunOS, IRIX, FreeBSD, OpenBSD, NetBSD, BSDi,
Macintosh OS X, etc.
VMS - If you happen to be on OpenVMS.
WATCOM - If using WATCOM under Windows.
WIN - If you are using Windows.
If you are interested in porting tbaMUD to a new platform, see the
file doc/porting.txt for some tips.
If you are interested in porting tbaMUD to a new platform, see the file
doc/porting.txt for some tips.
For a small, private MUD, or a MUD used only for testing and development,
For a small, private MUD, or a MUD used only for testing and development,
about 10 megs of disk space and 16 megs of memory should be sufficient.
For large, public MUDs with a large player base, 30 megs to 50 megs of
disk space and at least 32 megs of memory are recommended. Free memory

View file

@ -5,6 +5,13 @@ The Builder Academy
builderacademy.net 9091
tbaMUD 3.52
[Mar 27 2007] - Rumble
Removed the do_oasis function and called the Xedit commands directly (thanks Rhade).
[Mar 25 2007] - Rumble
Updated idle timer to keep track of imms too (thanks Jamdog).
Standardized OLC messages.
Removed special procedures that were replaced with trigedit.
Updated README.WIN, README.MSVC8, and README.CYGWIN.
[Mar 20 2007] - Rumble
Added object type CHAIR (thanks Dark).
Added ZZZ directories to plrfiles and plrvars (thanks Zizazat).
@ -26,7 +33,7 @@ tbaMUD 3.52
Added send_cannot_edit function (thanks Rhade).
[Feb 26 2007] - Rumble
updated CYGWIN.README, FAQ, and README
Added in game changelog command (thanks Rhade).
Added an in game changelog command (thanks Rhade).
Moved do_file to act.wizard.c.
Alphabetized Makefile.in, yeah I'm anal like that.
Clarified licheck so people know to enter Q to accept the license and quit.

View file

@ -1,4 +1,5 @@
Compiling tbaMUD
Updated: Apr 2007
Compiling tbaMUD
under Microsoft Windows using CygWin
tbaMUD compiles under Cygwin without needing any special modifications.
@ -33,6 +34,25 @@ another form of Unix:
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.
OPTIONAL: Make the following change to src/Makefile.in to make copyover work:
--- Makefile.in.old 2007-02-26 05:52:19.000000000 +0100
+++ Makefile.in 2007-03-26 17:21:56.000000000 +0200
@@ -61,6 +61,8 @@ circle:
$(MAKE) $(BINDIR)/circle
$(BINDIR)/circle : $(OBJFILES)
+ @-rm $(BINDIR)/circleold.exe
+ @-mv $(BINDIR)/circle.exe $(BINDIR)/circleold.exe
$(CC) -o $(BINDIR)/circle $(PROFILE) $(OBJFILES) $(LIBS)
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
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.
@ -62,12 +82,8 @@ reading the forums at http://cwg.lazuras.org/ or stop by TBA for assistance.
It really can not be stressed enough: READ EVERYTHING.
Credit where credit is due:
Some parts of this document have been derived or outright copied from other
files by: Jeremy Elson, David Goldstein, Tony Robbins, and George Greer
Authors: Jeremy Elson, David Goldstein, Tony Robbins, and George Greer.
Rumble
Rumble@builderacademy.net
The Builder Academy
builderacademy.net 9091

View file

@ -1,3 +1,4 @@
Updated: Apr 2007
Compiling CircleMUD under Microsoft Windows XP
using Microsoft Visual C++ 2005 (8.0)
@ -68,4 +69,17 @@ George Greer
greerga@circlemud.org
Jason Pullara
webmaster@geekstreak.com
webmaster@geekstreak.com
To eliminate warnings like these:
warning C4996: 'strcpy': This function or variable may be unsafe.
warning C4996: 'getch': The POSIX name for this item is deprecated.
Do this:
In Solution Explorer
Right click the 'project'
Select 'Properties' which brings up the Property Pages dialog
Expand 'Configuration Properties'
Expand 'C/C++'
Click on Preprocessor
At the end of the 'Preprocessor Definitions' add:
;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_DEPRECATE

View file

@ -1,52 +1,38 @@
Compiling CircleMUD
under Microsoft Windows 95 and NT
by Jeremy Elson
For help, write to help@circlemud.org
There are a number of different compilers available for Microsoft Windows
95 and NT that can be used to compile CircleMUD. Each compiler works
differently, so each compiler has a different set of instructions.
For up-to-date information on compiling CircleMUD under Windows, check out
Rob Baumstark's page at http://shirak.circlemud.net/
Updated: Apr 2007
Compiling tbaMUD
under Microsoft Windows
There are a number of different compilers available for Microsoft Windows that
can be used to compile tbaMUD. Each compiler works differently, so each
compiler has a different set of instructions.
We currently have instructions for using the following compilers:
1. Cygnus CYGWIN (Formerly Cygnus GNU-Win32). This is a FREE
compiler for Microsoft Windows 95 and NT! If you don't own a
compiler, you can just download this one off the net and get
Circle up and running in no time. Read the file README.CYGWIN
(submitted by David Goldstein <goldstei@cs.sunysb.edu>).
Please note however that the CYGWIN system is not recommended
for those unfamiliar with the Unix environment.
1. Cygnus CYGWIN (Formerly Cygnus GNU-Win32). This is a FREE compiler for
Microsoft Windows! If you don't own a compiler, you can just download this
one off the net and get tbaMUD up and running in no time. Read the file
README.CYGWIN.
2. Microsoft Visual C++ version 4.x -- read the file README.MSVC4
2. Microsoft Visual C++ version 4.x -- read the file README.MSVC4.
3. Microsoft Visual C++ version 5.x -- read the file README.MSVC5
3. Microsoft Visual C++ version 5.x -- read the file README.MSVC5.
4. Borland C++ -- read the file README.BORLAND
4. Microsoft Visual C++ version 6.x -- read the file README.MSVC6.
5. Watcom C++ v.11 -- read the file README.WATCOM
5. Microsoft Visual C++ version 8.x -- read the file README.MSVC8. This is
also called Microsoft Visual C++ 2005 and the express edition is free and
can be downloaded from Microsoft.
6. Borland C++ -- read the file README.BORLAND
It should be possible to compile CircleMUD using other compilers that are
not listed here, or other versions of these compilers -- as long as they
support long filenames, etc. However, we don't have instructions handy
for those compilers. Rob's page (http://www.connect.ab.ca/~rbmstrk) has
a lot of useful information about compiling under Windows; try looking
there for tips.
7. Watcom C++ v.11 -- read the file README.WATCOM
However, it not easy (and maybe even impossible) to compile at all
under Windows 3.x or DOS because they lack a number of features that
Circle requires such as the Win32 API and long filenames. It is
theoretically possible to compile under Windows 3.x by finding 3.x API
equivalents to the Win32 API calls, and changing all the filenames in
the entire distribution to fit the 8.3 DOS/Win3.x filenaming standard,
but I will never do this.
It should be possible to compile tbaMUD using other compilers that are not
listed here, or other versions of these compilers -- as long as they support
long filenames, etc. However, we don't have instructions handy for those
compilers. Feel free to submit your own.
Have fun!
For help, check out http://www.cwg.lazuras.org
Jeremy Elson
(To get help, write to help@circlemud.org)
Originally written by: Jeremy Elson

View file

@ -734,7 +734,7 @@ is 4-20 points damage.
The question often comes up as to what damage a weapon should inflict. I
will attempt to explain. To understand damage you first need to know hitpoints.
A player starts with 10 hitpoints. Then they gain a certain amount depending on
their class when they level. Stock CircleMUD uses the following: Magic Users
their class when they level. Stock tbaMUD uses the following: Magic Users
gain 3-8, Clerics 5-10, Thieves 7-13, Warriors 10-15. So a level 1 Warrior
will have 20-25 hitpoints. Now, let us apply common sense. A weapon that does
25 points of damage could kill a level 1 player in one hit. While a weapon with
@ -847,19 +847,16 @@ These are numerous and I will add them as people ask questions about them.
#31
CYGWIN README.CYGWIN README-CYGWIN COMPILER SHELLS
The README.Cygwin that comes with CircleMUD is outdated. Below is current and
works as of December 2006.
Compiling CircleMUD
Compiling tbaMUD
under Microsoft Windows using CygWin
CircleMUD 3.1 compiles under Cygwin without needing any special modifications.
tbaMUD compiles under Cygwin without needing any special modifications.
This free pseudo-Unix environment for Windows includes the "bash" shell, "gcc"
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/
Compiling Circle under Cygwin is basically the same as it would be under
Compiling tbaMUD under Cygwin is basically the same as it would be under
another form of Unix:
1) Download from: http://cygwin.com/setup.exe
@ -872,18 +869,17 @@ another form of Unix:
Click Next.
Install, follow prompts.
2) Download and uncompress the latest version of CircleMUD. TBA is now
recommending everyone use CWG (CircleMUD With Goodies) Buddha since it comes
pre-packaged with many important features like OLC and Trigedit. Join the
forum and download Buddha at: http://cwg.lazuras.org/ The forums will
also be a great resource for any problems that come up. Once you download
and uncompress Buddha (I use winRAR) read through the /doc directory.
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.
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 CircleMUD by using the "cd" change
MUD. Go to the directory where you extracted tbaMUD by using the "cd" change
directory command and "dir" directory listing to find the correct files. For
example "C:\circle". "cd c:/circle" "dir" in the listed files you should see
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.
4) Run the configure script by typing "./configure". This will automatically
@ -895,12 +891,12 @@ another form of Unix:
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 /circle/src directory "cd src", and type "make", and watch
CircleMUD and the additional utilities included in the Circle distribution
automatically being compiled and placed in /circle/bin.
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 /circle, and run the MUD either directly by typing
"bin/circle", or by using the "./autorun &" script.
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
@ -908,20 +904,17 @@ another form of Unix:
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 CircleMUD distribution. If you are still
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 /circle/doc directory, try
reading the through the CircleMUD website at: http://www.circlemud.org
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.
Credit where credit is due:
Some parts of this document have been derived or outright copied from other
files in the CircleMUD distribution by:
Jeremy Elson
David Goldstein
Tony Robbins
George Greer
files by: Jeremy Elson, David Goldstein, Tony Robbins, and George Greer
Rumble
Rumble@@builderacademy.net
@ -932,9 +925,9 @@ See also: CODING, DOWNLOADS
#31
TILDES ~
On stock CircleMUD a tilde is used in the world files to denote an end of line.
This way the files can be saved and read. Because of this adding a tilde in any
of the editors on older versions of CircleMUD could make the MUD unbootable.
On tbaMUD a tilde is used in the world files to denote an end of line. This way
the files can be saved and read. Because of this adding a tilde in any of the
editors on older versions of CircleMUD could make the MUD unbootable.
See also: WORLD-FILE
#31
@ -1062,23 +1055,21 @@ CWG BUDDHA SUNTZU RASPUTIN CIRCLEMUD-WITH-GOODIES
CWG is short for CircleMUD with Goodies. It is a customized codebase free
to download from http://cwg.lazuras.org/. It comes in three versions: Buddha,
Suntzu, and Rasputin.
Suntzu, and Rasputin. CWG is also nice enough to host the tbaMUD forums and
downloads section.
See also: RESOURCES
#31
SOURCES RESOURCES CODEBASE FTP DOWNLOADS DOCUMENTATION OLC-SOURCE CODEOLC OLCCODE OLC-CODE CODE-OLC WTFAQ MAILING-LISTS FORUMS MAILINGLISTS GROUPS
Source: http://cwg.lazuras.org/modules.php?name=Downloads&d_op=viewdownload&cid=16
CWG: http://cwg.lazuras.org/
Stock: ftp://ftp.circlemud.org/pub/CircleMUD/3.x/
Trigedit: http://builderacademy.net/Oasis_DG_pages/contents/downloads.htm
GDB: http://www.cs.clemson.edu/~ihcho/courses/cs360/common/gdb.html
Documentation:
http://www.circlemud.org
ftp://ftp.circlemud.org/pub/CircleMUD/3.x/uncompressed/circle-3.1/doc/
http://builderacademy.net/Oasis_DG_pages/index.html
http://www.circlemud.org/cdp/wtfaq/
http://developer.circlemud.org/
You should join the following forums and mailing lists. Learn how to search
them for any problems you have:
@ -1264,7 +1255,7 @@ road.
what you intended to have there all along. Novels have editors, and so
should any zone.
2) Add secrets! Reward players for participating in game that the zone
2) Add secrets! Reward players for participating in the game that the zone
represents. Always include at least one interesting thing per three or so
rooms. For example, have a bench in the garden or a table loaded to the
room. Many objects don't have to do anything, just break up the sparse
@ -1497,7 +1488,7 @@ road.
browns, and yellows unless you can make that description only show during
that season.
@cNOTE: If you would like to use this information for your game, you may do so
@cNOTE:@n If you would like to use this information for your game, you may do so
so long as you copy the entirety as is, keep Elaseth's copyright label
at the top of it, and make any corrections as specific to your mud in
parenthesis. If you wish to use this as a basis for your own building
@ -1708,7 +1699,7 @@ http://www.degraeve.com/img2txt.php
See also: TBAMAP, MAPPING
#31
ABBREVIATIONS
ABBREVIATIONS ABBREVS
We have added abbreviations so you do not have to type everything exactly as
it appears. This also means that when you enter keywords in OLC you do not have
@ -1841,7 +1832,7 @@ Be original, finish what you start, have fun, and don't forget to breathe!
#31
CALENDAR CALENDER MONTHS WEEKS DAYS HOURS
The CircleMUD calendar consists of 75 seconds per minute, 35 days a month and
The tbaMUD calendar consists of 75 seconds per minute, 35 days a month and
17 months a year.
Days of the week:
@ -2113,11 +2104,10 @@ FREEZE THAW FREEZING FROZEN
Usage: freeze [target]
thaw [target]
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.
FREEZE 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.
#31
GOTO TRANSFER TRANSPORT TELEPORT
@ -2272,7 +2262,7 @@ NOHASSLE HASSLE DARK NO_HASSLE DISABLE NOHASSEL HASSEL NO-HASSLE
Usage: nohassle
Toggles a flag to prevent aggressive monsters from attacking and also prevents
Toggles a flag to prevent aggressive monsters from attacking, and also prevents
immortals from firing triggers. If you wish to test triggers you must turn
nohassle off.
@ -2439,7 +2429,7 @@ TIME TICKS
Usage: time
Gives you the current game time. CircleMUD uses zulu time 0-24 hours. There are
Gives you the current game time. tbaMUD uses zulu time 0-24 hours. There are
75 seconds per minute, 35 days per month, and 17 months per year. 1 MUD year
takes about 12 days.
@ -2677,7 +2667,7 @@ entity by its Vnum. Vnums are not seen by mortal players. Each zone also has
a Vnum. The zone Vnum for any zone is simply the room, mob, object, shop, or
trigger Vnum divided by 100. For example, The Builder Academy is zone 13,
consisting of Vnums 1300 to 1399.
CircleMUD worlds are divided into distinct sections called zones. Each
tbaMUD worlds are divided into distinct sections called zones. Each
zone typically consists of a single region of the MUD's virtual world with a
consistent storyline. Each zone can define its own rooms, mobs, objects,
shops, and triggers. A single zone typically contains 100 rooms, 100 mobs, 100
@ -2692,7 +2682,7 @@ See also: TERMINOLOGY, VNUM, SHOW-ZONES, AREAS
#31
GCC
Several people have problems with configuring CircleMUD in cygwin the first
Several people have problems with configuring tbaMUD in cygwin the first
time. They will get an error saying "GCC could not be found" This means a C
compiler was not installed because you failed to follow the directions under
HELP CYGWIN. Reread them and add the compiler to the default download.
@ -3176,7 +3166,7 @@ wait 1 s
%load% <obj|mob> <vnum> [name [position]]
This command loads a mob or object into the game. No-take objects loaded to
a mob will load to the room.
an actor will load to the room. NO_RENT objects can not be loaded.
load an object to room: %load% obj 1300
load a mob to room : %load% mob 1300
@ -3207,7 +3197,7 @@ See also: POSITIONS
#31
%TELEPORT% WTELEPORT OTELEPORT MTELEPORT PORTALS %TRANSPORT% TRIG-TELEPORT
Stock CircleMUD does not have an object type portal. This is instead done with
Stock tbaMUD does not have an object type portal. This is instead done with
trigedit.
%teleport% <victim> <location>
@ -3876,8 +3866,6 @@ findmob.<room vnum X>(<mob vnum Y>)
&%var% - it, you, he/she Example: @RTSTAT 91@n
*%var% - it, you, him/her
^%var% - its, your, his/her
object only
'%obj% - something, name
Use \ for do not parse, or %% for %.
@ -4008,7 +3996,7 @@ next_in_room - The next mob/player in the room as a variable (id) nice to
pos() - %actor.pos% returns position. Subfield modifies. Sleeping,
resting, sitting, fighting, standing. @RTSTAT 1399, 20997@n
prac() - The actor's number of practices. Subfield modifies.
race - The actor's race, as a string. (not used in stock Circle)
race - The actor's race, as a string. (not used in tbaMUD)
room - The room the actor is in as a room variable.
sex - The actor's sex, as a string: MALE, FEMALE, or NEUTRAL.
skill() - The percentage of learnedness in the skill subfield.
@ -4748,7 +4736,7 @@ See also: TIMER, %TIMER%, %TIME%
#31
TRIGEDIT-ADVANCED-EXAMPLES
To add life to the worlds CircleMUD uses something called triggers. There are
To add life to the worlds tbaMUD uses something called triggers. There are
three things in game that can have triggers attached to them: mobiles, objects,
and rooms. Examples of common triggers include:
@ -5311,12 +5299,16 @@ positions to an array. See the examples below.
@RTSTAT 150, 41005, 1325, 57715@n
#31
ASSEMBLIES ASSEMBLE ASSEMBLY VEHICLES MAKE BAKE BREW CRAFT FLETCH KNIT MIX THATCH WEAVE ASSEDIT FORGE
These are no longer implemented here since the same thing can be done with
Trigedit.
TRIG-EXAMPLES ASSEMBLIES ASSEMBLE ASSEMBLY VEHICLES MAKE BAKE BREW CRAFT FLETCH KNIT MIX THATCH WEAVE ASSEDIT FORGE SMOKE SMOKING CIGARS CIGARETTES PIPES SHOTGUN BLAST SHOOT RANGED-WEAPONS FIRE-WEAPONS BOWS QUIVERS MISSILES GUNS
@RTSTAT 38, 48, 335@n
These are not implemented since the same thing can be done with trigedit.
Assemblies: @RTSTAT 38, 48, 335@n
Smokables: @RTSTAT 159@n
Furniture: @RTSTAT 1399@n
Weapons: @RTSTAT 1361, 9000, 11840, 13005@n
See Also: @RTRIG-QUESTS@n
#31
DG_AFFECTS SCRIPT-AFFLICTED AFFLICTED DG-AFFECTS DG-AFFECTS %DG_AFFECT% DG-EFFECT DG_EFFECT
@ -5440,29 +5432,6 @@ all these options.
Warning: Some clients will give you problems since they use special characters
like the / character (Avplay, Mush, and SimpleMU).
#31
FURNITURE COUCH CHAIR
There is no object type for furniture since this is stock CircleMUD. But it
can be done through trigedit. Just set the object type to OTHER and attach a
trigger similar to the example below. Just change the word chair to the name
you desire.
Example: @RTSTAT 1399@n
#31
SMOKE SMOKING CIGARS CIGARETTES PIPES
Smokable objects are not implemented on CircleMUD. The same effect may be
created through trigedit.
@RTSTAT 159@n
#31
SHOTGUN BLAST SHOOT RANGED-WEAPONS FIRE-WEAPONS BOWS QUIVERS MISSILES GUNS
Object type Fire Weapon and MISSILE are not implemented in CircleMUD. The
same effect may be created through trigedit.
@RTSTAT 1361, 9000, 11840, 13005@n
#31
TRIGEDIT TRIGS TRIGEDITOR TRIGGEREDIT TRIGGER-EDIT TRIGGERS DG-SCRIPTS TRIG-HELP SCRIPTS MOBPROGS MPROGS PROGS SCRIPTING TRIGMENU
@ -5502,12 +5471,7 @@ male PC 'Rumble' IDNum: [ 3531], In room [ 0]
See also: REMOTE, RDELETE
#31
ASSEMBLIES ASSEMBLE ASSEMBLY VEHICLES MAKE BAKE BREW CRAFT FLETCH KNIT MIX THATCH WEAVE ASSEDIT FORGE
See: @RTRIG-EXAMPLES@n
#31
TRIG-QUESTS TRIGEDIT-QUESTS AUTOQUEST QUESTS QUESTPOINTS QUEST-POINTS QUESTMASTERS TRIG-EXAMPLES TRIGEDIT-EXAMPLES QUEST-MOBS QUESTMOBS QEDIT TRIG_EXAMPLES
TRIG-QUESTS TRIGEDIT-QUESTS AUTOQUEST QUESTS QUESTPOINTS QUEST-POINTS QUESTMASTERS QUEST-MOBS QUESTMOBS QEDIT TRIG_EXAMPLES
Many zones have their own quests and examples within them, such as:
@ -5516,7 +5480,7 @@ Assembly Examples: @RTSTAT 38, 48, 335, GOTO 366@n
Questshop Example: @RTSTAT 167, GOTO 265@n
Fizban's Questshop Example: @RTSTAT 57705-57707@n
See Also Examples: BOATS, PORTALS, GUNS, ASSASSINS
See Also Examples: TRIG-EXAMPLES, BOATS, PORTALS, GUNS, ASSASSINS
#31
CANBESEEN %CANBESEEN% %ACTOR.CANBESEEN%
@ -6886,7 +6850,7 @@ $S his/her target of staff/wand/scroll/potion
PROPER USAGE: @RVSTAT OBJ 350@n
#31
OEDIT-TYPES OBJECT-TYPES OBJ-TYPES OBJ-WEAPONS TRASH
OEDIT-TYPES OBJECT-TYPES OBJ-TYPES OBJ-WEAPONS TRASH FURNITURE COUCH CHAIRS
5) Type : @cUNDEFINED@n
This specifies what type an object is defined as; also controls the meanings
@ -6916,6 +6880,7 @@ of value0 through value4 (option C). The Type Flag must be one of the following:
21 PEN Item is a pen.
22 BOAT Item is a boat; allows you to traverse water (noswim).
23 FOUNTAIN Item is a fountain.
24 CHAIR Item is a chair people can sit in.
Good items should be very rare, and hard to get. Lousy items should require
much less effort. Give the most powerful items actually to a mob; Thieves and
@ -7718,13 +7683,14 @@ about being a newbie here.
#31
ALIAS-EXAMPLES
To set up aliases to use older CircleMUD building commands:
To set up aliases to use older tbaMUD building commands:
alias poofin set self poofin $*
alias poofout set self poofout $*
alias poofs score
alias cheat return
alias mail at postmaster mail $*
alias history history all
See also: ALIASES
#31
@ -7739,6 +7705,19 @@ head and legs X2.
See also: MEDIT-AC
#31
PLIST PLAYERLIST P-LIST PLAYER-LIST
Usage: plist [minlev[-maxlev]] [-n name] [-d days] [-h hours] [-i] [-m]
This command allows immortals to search through the player files using
specific criteria.
Examples:
plist 0 - List everyone level 0.
plist -i -h 2 - List all immortals that have logged in in the past hour.
See Also: LAST
#31
TOGGLES CONFIGURE SETTINGS
Usage: toggle
@ -7776,12 +7755,12 @@ See also: AREAS
#0
AREAS ZONES
These zones are maintained in the latest CircleMUD format with DG Scripts on
These zones are maintained in the latest tbaMUD format with DG Scripts on
The Builder Academy (TBA) telnet://builderacademy.net:9091/
These areas include all donated areas from TBA, CircleMUD FTP, and stock. TBA
is always looking for new submissions or help on improving the current zones.
Please report any bugs, typos, ideas, or submissions to:
These areas include all donated areas from tbaMUD. We are always looking for
new submissions or help on improving the current zones. Please report any bugs,
typos, ideas, or submissions to:
Rumble
The Builder Academy
@ -7988,7 +7967,7 @@ you went idle.
#0
STOCK
This is a listing of stock areas available with CircleMUD.
This is a listing of stock areas.
0 Limbo -- DikuMud
9 River Island Of Minos -- Mahatma of HexOynx
@ -8436,16 +8415,13 @@ the body you are wearing the armor. Some items have a special bonus, and
subtract from the AC directly. Negative AC is better.
#0
PASSWORD PW
PASSWORDS PW
A secret series of characters that enables a user to access a file,
computer, or program. On multi-user systems, each user must enter his or her
password before the computer will respond to commands. The password helps
ensure that unauthorized users do not access the computer. In addition, data
files and programs may require a password. Ideally, the password should be
something that nobody could guess. In practice, most people choose a password
that is easy to remember, such as their name or their initials. This is one
reason it is relatively easy to break into most computer systems.
Ideally, your password should be something that nobody could guess. In
reality, most people choose a password that is easy to remember and they never
change it. While passwords on most MUDs are encrypted there is no rule that
they have to be. So please NEVER use a password on a MUD that you use anywhere
else. Choose a separate MUDding password and change it occasionally.
If you forget your password any IMP can reset it for you.
#0
@ -8562,14 +8538,15 @@ traveling and require some rest to continue.
See also: MANA, HITPOINTS
#0
CIRCLEMUD CREDITS
C I R C L E M U D 3 . 5
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.
t b a M U D 3 . 5 1
Many, many people contributed to CircleMUD in one way or another throughout
tbaMUD (formerly known as 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 tbaMUD is protected under a copyright by the Trustees of
the Johns Hopkins University.
Many, many people contributed to tbaMUD in one way or another throughout
the course of its development. Although it is impossible for me to remember
them all, I'd like to extend special thanks to certain people:
@ -8594,16 +8571,15 @@ them all, I'd like to extend special thanks to certain people:
...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
Bugs and Help: builderacademy.net 9091
URL: http://www.circlemud.org/
Mailing List: listserv@@post.queensu.ca
(write "subscribe circle <first name> <last name>")
URL: http://tbaMUD.com/
Mailing List: http://cwg.lazuras.org/
--Jeremy Elson
CircleMUD is currently being developed by The Builder Academy and all bugs and
requests for help should be directed to: builderacademy.net 9091
tbaMUD (formerly known as CircleMUD) is currently being developed by The
Builder Academy. All bugs and requests for help should be directed to:
builderacademy.net 9091
--Rumble
#0
@ -9754,11 +9730,10 @@ 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.
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.
#0
MAGIC-MISSILE
@ -10011,14 +9986,14 @@ See also: HOUSES
#0
POLICIES INFO NEWS POLICY VERSION UPDATES
These commands show you important information about CircleMUD. It is a good
These commands show you important information about tbaMUD. It is a good
idea to read them every once in a while.
info - useful information about the game for beginners
news - latest changes to the code and areas
policy - policies on topics like player killing
credits - the people who made CircleMUD possible!
version - displays the current CircleMUD version number
credits - the people who made tbaMUD possible!
version - displays the current tbaMUD version number
#0
INVENTORY
@ -10169,7 +10144,7 @@ Usage: notell
Use NO<channel> if you wish to stop using and seeing that channel. A
(no<channel>) flag will appear after your name in the WHO list.
See also: TOGGLE, FLAGS, TELL, TOGGLE, WHO
See also: TOGGLE, FLAGS, TELL, WHO
#0
OFFER RENTING UNRENTING UN-RENTING
@ -10964,22 +10939,24 @@ you are logged in the MUD or not.
BACKDOOR HACKING
Not a good thing to be searching for help on. Your IP address has been logged
and we will be contacting your service provider. Just Kidding. CircleMUD is
and we will be contacting your service provider. Just Kidding. tbaMUD is
actually very stable. I have never heard of one being hacked except via weak or
compromised passwords.
#0
DIKU ROM DBX DBZ SMAUG
These are other types of MUD codebases. We only focus on the latest version
of CircleMUD here.
These are other types of MUD codebases. We only focus on tbaMUD (the codebase
formerly known as CircleMUD).
#0
HISTORY
Usage: history
Usage: history < all | say | gossip | wiznet | tell | shout | grats | holler | auction >
Shows last 100 communications your player has seen while in the game.
Automatically clears after you check it or leave the game.
This command displays what has been said over the channel you input along
with a time stamp for when it was sent. History all will list the history of
all channels.
See also: CHANNELS
#0
@ -11045,6 +11022,33 @@ Thanks to ...
Share and enjoy.
MERC Industries
#0
PROMOTE PROMOTIONS ADVANCEMENTS RAISES LVLS LEVELS GAINS 31 32 33 34 RANKS RANKING HIRING
Here at The Builder Academy the level of an immortal generally denotes
their skill at building. This makes it easier for people to know who is in
charge, who they can ask for help, and who they should be wary of taking tips
from. I encourage everyone to help each other. Just realize that if the person
is not at least level 32 they may have relatively little experience.
Level 31 (Immortal) Anyone who is new to TBA and is working on their trial vnum
or zone.
Level 32 (God) An experienced builder that has proven their knowledge and is
willing to teach others. Level 32 and above is considered staff.
Level 33 (Greater God) An experienced builder that has contributed significantly
to TBA.
Level 34 (Implementor) Welcor and I (Rumble). Welcor codes, I administrate.
Do not bother asking to be advanced, and if that is why you are here, you
are wasting your time. Note, this does not mean you are not a quality builder,
but TBA is not your typical MUD. On the contrary, we are here as dedicated
people to help you learn to build. Because of this the only chance of
advancement is if you are willing to learn to build and then help teach others.
If you are willing to give back to the tbaMUD community, and have the
necessary skills to do so, you will be advanced and given further privileges
to help teach others. Generally, if you have to ask for a promotion you will be
less likely to receive it. Performance is everything here.
#0
HEIACH XTBA
@ -11111,7 +11115,7 @@ feeble essences, where he pretends to not be overly competent and actually
humble and helpful, but whatever you do...don't be fooled! It should be obvious
from the fact he's built 4 rooms in that many years that he is spending most
of his time elsewhere...on much darker motives than building happy zones
for CircleMUD players.
for tbaMUD players.
#0
PRAISE REVIEWS RATINGS
@ -11252,7 +11256,7 @@ service-oriented, and non-judgmental about building abilities.
If you wish to participate in any of the above, I believe we uniquely
suit your needs. The only drawback is that while many building
techniques are universal, we specifically teach the use of CircleMUD
techniques are universal, we specifically teach the use of tbaMUD
3.1 with DG-Scripts 1.0.12 and OasisOLC 2.0.6.
Happy Building!
@ -11280,7 +11284,7 @@ talented, has something to learn. Advice and honest opinions are
given when requested, but at the same time every builder has the
freedom to both experiment with unconventional building techniques,
as well as a chance to learn or get better with traditional
CircleMUD tools.
tbaMUD tools.
This is a place for builders who love to build, and the building
happens in the friendliest atmosphere you could possibly imagine. I
@ -11533,29 +11537,40 @@ CHALLENGE
That is what you will find here at TBA.
#0
TBA PROJECT BACKGROUND STORY HISTORY INTRODUCTION ACADEMY COMMUNITY OVERVIEW
TBAMUD PROJECT BACKGROUND STORY HISTORY INTRODUCTION ACADEMY COMMUNITY OVERVIEW VISION TBA-VISION
TBA stands for The Builder Academy.
@RGOTO 3@n to enter the Builder Academy tutorial.
A normal MUD will have a background (theme, plot, story, whatever you want
to call it) which a builder is expected to work from. TBA does not have
any such background. If you want to build a zone for a MUD then use their
background. Otherwise, you may build whatever your heart desires.
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.
TBA stands for The Builder Academy.
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.
I created TBA in October of 2000 on Cruel World which was being run by
Zemial and Welcor. I then 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 the current version of Oasis OLC. TBA now has many
purposes. It functions as a test port for Trigedit, Oasis OLC, CircleMUD, and
stock CircleMUD zones. And, of course, we are still open to anyone willing to
learn, teach, or help develop CircleMUD. We have also teamed up with Zizazat
of CWG to combine our efforts.
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.
We are a low stress, no deadline, training environment. Where anyone with
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.
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.
@ -11620,33 +11635,6 @@ and fill out the application.
See also: OLC, REDIT, MEDIT, OEDIT, ZEDIT, SEDIT, TRIGEDIT, AEDIT
#0
PROMOTE PROMOTIONS ADVANCEMENTS RAISES LVLS LEVELS GAINS 31 32 33 34 RANKS RANKING HIRING
Here at The Builder Academy the level of an immortal generally denotes
their skill at building. This makes it easier for people to know who is in
charge, who they can ask for help, and who they should be wary of taking tips
from. I encourage everyone to help each other. Just realize that if the person
is not at least level 32 they may have relatively little experience.
Level 31 (Immortal) Anyone who is new to TBA and is working on their trial vnum
or zone.
Level 32 (God) An experienced builder that has proven their knowledge and is
willing to teach others. Level 32 and above is considered staff.
Level 33 (Greater God) An experienced builder that has contributed significantly
to TBA.
Level 34 (Implementor) Welcor and I (Rumble). Welcor codes, I administrate.
Do not bother asking to be advanced, and if that is why you are here, you
are wasting your time. Note, this does not mean you are not a quality builder,
but TBA is not your typical MUD. On the contrary, we are here as dedicated
people to help you learn to build. Because of this the only chance of
advancement is if you are willing to learn to build and then help teach others.
If you are willing to give back to the CircleMUD community, and have the
necessary skills to do so, you will be advanced and given further privileges
to help teach others. Generally, if you have to ask for a promotion you will be
less likely to receive it. Performance is everything here.
#0
RANDOM-THOUGHTS BIGGEST EGO
@ -11661,69 +11649,112 @@ builders to the helpfiles.
@RTSTAT 41095@n
#0
THE-MUD-CONNECTOR TMC MUD-CONNECTOR
THE-MUD-CONNECTOR TMC MUD-CONNECTOR MUDCONNECTOR
Most of our traffic comes through word of mouth or TMC reviews. If you are so
inclined please leave a review about your experience with TBA at:
http://mudconnector.com/mud-bin/adv_search.cgi?Mode=MUD&mud=The+Builder+Academy
The most challenging aspect of running a mud is finding good
builders. You will hear this from the admin of every MUD that has ever
been. In the past it has always been up to each individual MUD to find
and usually train their own builders. This works, but I think the
MUDding community can come up with something better. That is why I
created The Builder Academy.
We have been open to anyone interested in learning or teaching how
to build using Oasis OLC with dg scripts since 2000. TBA has expanded
to also be used to develop stock zones for CircleMUD.
TBA has trained 1000's of builders and has an extensive tutorial
and help file system. No pressure, no deadline, just come learn,
teach, or help develop CircleMUD. Give back to the community we have
all taken so much from. TBA is a MUDding resource. Take advantage of
it so we can improve the entire MUDding community.
TBA can also be used by other MUDs as a builder's port. Just send
us your newbie builders. We will teach them and then you can have
them back with the zones they built.
We are always open to anyone willing to learn, teach, or help
develop our newly released tbaMUD codebase (the codebase formerly
known as CircleMUD).
See also: REVIEWS
#0
TBA-ADVERTISING
Mud Created: October, 2000
Mud Created: 2000
The Builder Academy
Code Base: [Circlemud] 3.1
Latest CircleMUD with OasisOLC and DG Scripts
Site: builderacademy.net 9091 [206.123.75.138]
Code Base: [tbaMUD] the latest version
Site: builderacademy.net 9091 [88.80.193.39]
Admin Email: rumble@@builderacademy.net
Theme: Teaching Builders, CircleMUD and DG Scripts development
Theme: Teaching Builders and tbaMUD codebase development
http://www.builderacademy.net/
telnet://builderacademy.net:9091
Since 2000 The Builder Academy has been training new builders and
developing the CircleMUD codebase, Oasis OLC, and trigedit. After years
of stock CircleMUD stagnation TBA offered to take over stock CircleMUD
development several times. TBA unofficially released CircleMUD 3.5 in
2006 and later released the codebase under the name tbaMUD. TbaMUD is
holding true to the original CircleMUD vision with a few additions. The
largest difference is the inclusion of Oasis OLC, trigedit, in-depth
tutorials, help files, and examples. TBA will continue development and is
always open to feedback and recommendations from the MUDding community.
TBA is foremost a MUDding resource with the goal of improving the MUDding
community.
The tbaMUD vision:
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.
The source:
http://tbamud.com/Oasis_DG_pages/downloads/patches/tbamud-3.51.tgz
The forums:
http://cwg.lazuras.org/
Rumble
The Builder Academy
builderacademy.net 9091
The most challenging aspect of running a mud is finding good builders. You
will hear this from the admin of every MUD that has ever been. In the past it
has always been up to each individual MUD to find and usually train their own
builders. This works, but I think the CircleMUD community can come up with
has always been up to each individual MUD to find and attempt to train their
own builders. This works, but I think the MUDding community can come up with
something better. That is why I created The Builder Academy.
We have been open to anyone interested in learning or teaching how to build
using Oasis OLC with dg scripts since 2000. The current developer of DG scripts,
Welcor, uses The Builder's Academy (TBA) as the development port for DG
scripts.
Now TBA has expanded to also be used to develop stock zones for CircleMUD.
TBA has been open to anyone interested in learning or teaching how to build
using Oasis OLC with dg scripts since 2000. TBA is now being used to develop
the tbaMUD codebase (formerly known as CircleMUD)
TBA has trained thousands of builders and has an extensive tutorial and help
file system. No pressure, no deadline, just come learn, teach, or help develop
CircleMUD. Give back to the community we have all taken so much from. TBA is a
CircleMUD resource. Take advantage of it so we can improve all of CircleMUD.
TBA can also be used by other MUDs as a builder's port. Just send us your
tbaMUD. Give back to the community we have all taken so much from. TBA is a
MUDding resource. Please take advantage of it so we can improve all of the
MUDding community.
TBA can even be used by other MUDs as a builder's port. Just send us your
newbie builders. We will teach them and then you can have them back with the
zones they built.
We are always open to anyone willing to learn, teach, or help develop stock
CircleMUD,Oasis OLC, and DG scripts.
TBA has been open to anyone interested in learning or teaching how to
build using Oasis OLC with DG Scripts since 2000. The current developer of
DG scripts and Oasis OLC, Welcor, uses TBA as the development port for both.
TBA is also developing stock and other zones that are free to download.
TBA has trained thousands of builders and has an extensive tutorial and help
file system. No pressure, no deadline, just come learn, teach, or help develop
CircleMUD. Give back to the community we have all taken so much from. TBA is a
CircleMUD resource. Take advantage of it so we can improve all of CircleMUD.
TBA can also be used by other MUDs as a builder's port. Just send us your
newbie builders. We will teach them and then you can have them back with the
zones they built.
We have now opened up a player's port running CWG Buddha to test and develop
zones. We have 177 zones ready for testing and free to download. Check it out
at: builderacademy.net 9092 [65.69.46.147]
We are always open to anyone willing to learn, teach, or help develop tbaMUD.
Rumble
The Builder Academy
builderacademy.net 9091 [206.123.75.138]
builderacademy.net 9091 [88.80.193.39]
#0
FAMOUS QUOTES
@ -11827,7 +11858,7 @@ administration: builderacademy.net 9091
WELCOR
Welcor is the head coder of The Builder Academy and uses TBA to develop
Trigedit and OLC for all of CircleMUD.
the tbaMUD codebase.
#0
USAGE
@ -11861,6 +11892,7 @@ http://www.slayn.net/web/
http://www.bylur.net/free/#110
http://xnixhosting.homeunix.org -- Contact Reaplo
http://www.planetmud.net/
www.evileyehosting.com
#0
THANKSGIVING

View file

@ -1,91 +1,92 @@
(lib/text/news)
THE tbaMUD HERALD
"We addict players for their own enjoyment."
February, 2007
NEW COMMANDS AND NEW MUD BEHAVIOR:
---------------------------------
** Over 100 new socials, check them out and feel free to suggest new ones.
** You will now be notified when you have new mail.
** New toggles: autoloot, autogold, autosplit, autosac, and autoassist.
** Improved toggle command allowing more options.
** You can now use the history command to see the last 100 communications
from all the channels. It clears upon viewing or log off.
** Your mail will now be saved so you will not lose it when you log off.
** You can now use the AFK toggle to let people see you are gone under
who.
** You now have almost 180 stock zones to play.
** You can now interact with rooms, mobs, and objects through triggers.
** Multiple objects will now be stacked and preceeded by a quantity so
your inventory won't be as long. (3) A waybread.
** Over 100 new socials, and the gemote command to use socials over the
gossip channel. Socials can now target bodyparts too, behave.
** You can now use color! @RHELP COLORCODES@n.
** Added new invisible mobs and objects so everything may not be as it
appears (not even visible with detect invis).
** Added an online dictionary. Tell m-w <word>.
** The player description length has been increased so please write a
decent description for yourself.
** You can now set your pagelength with the same command.
** You can now "look around" to see anything of interest in the room. But,
some things may still be hidden and require further investigation.
** You can now use "all" and "all.x" very generally with the get, put,
drop, junk, donate, give, wear and remove commands. Type HELP GET
for more info.
** The "track" function will show you the first step on the shortest
path to anyone in the game.
** You can now remove your own messages from the board. Also, if you
put someone else's name in parentheses in the message header, they
will be able to remove the message too.
** The MIDGAARD MAIL SYSTEM is now complete. The Post Office is north
of the entrance to the Grunting Boar inn. Stamps cost 150 coins.
** Fountains have now been implemented. You can drink from fountains
or fill containers from fountains using the FILL command.
** The SHOUT command, as always, only reaches people in your zone (you
can see who these people are by typing WHERE). The HOLLER command
reaches everyone in the game but costs extra movement points.
** When you are writing a message, you will now not be interrupted
by tells, shouts, emotes, socials, and even people talking in the
same room.
*****************************************************************************
IF YOU LEAVE THE GAME FOR MORE THAN AN HOUR, either by renting or plain
quitting, your hit points, move points, and mana will be fully restored
when you come back! This doesn't work if you're poisoned.
*****************************************************************************
** Use the ASSIST command to engage in mortal combat with someone in the
room who is getting pummeled.
** Use the SPLIT command to split gold among the members of your group
(including yourself) who are in the room. i.e. If you are in a group
with 4 other people who are in the room with you, type "SPLIT 100"
to give each of them 20 coins.
** You can use the VISIBLE command to break a spell of invisibility before
it expires.
(lib/text/news)
THE tbaMUD HERALD
"We addict players for their own enjoyment."
February, 2007
NEW COMMANDS AND NEW MUD BEHAVIOR:
---------------------------------
** Over 100 new socials, check them out and feel free to suggest new ones.
** You will now be notified when you have new mail.
** New toggles: autoloot, autogold, autosplit, autosac, and autoassist.
** Improved toggle command allowing more options.
** You can now use the history command to see the last 100 communications
from all the channels. It clears upon viewing or log off.
** Your mail will now be saved so you will not lose it when you log off.
** You can now use the AFK toggle to let people see you are gone under
who.
** You now have almost 180 stock zones to play.
** You can now interact with rooms, mobs, and objects through triggers.
** Multiple objects will now be stacked and preceeded by a quantity so
your inventory won't be as long. (3) A waybread.
** Over 100 new socials, and the gemote command to use socials over the
gossip channel. Socials can now target bodyparts too, behave.
** You can now use color! @RHELP COLORCODES@n.
** Added new invisible mobs and objects so everything may not be as it
appears (not even visible with detect invis).
** Added an online dictionary. Tell m-w <word>.
** The player description length has been increased so please write a
decent description for yourself.
** You can now set your pagelength with the same command.
** You can now "look around" to see anything of interest in the room. But,
some things may still be hidden and require further investigation.
** You can now use "all" and "all.x" very generally with the get, put,
drop, junk, donate, give, wear and remove commands. Type HELP GET
for more info.
** The "track" function will show you the first step on the shortest
path to anyone in the game.
** You can now remove your own messages from the board. Also, if you
put someone else's name in parentheses in the message header, they
will be able to remove the message too.
** The MIDGAARD MAIL SYSTEM is now complete. The Post Office is north
of the entrance to the Grunting Boar inn. Stamps cost 150 coins.
** Fountains have now been implemented. You can drink from fountains
or fill containers from fountains using the FILL command.
** The SHOUT command, as always, only reaches people in your zone (you
can see who these people are by typing WHERE). The HOLLER command
reaches everyone in the game but costs extra movement points.
** When you are writing a message, you will now not be interrupted
by tells, shouts, emotes, socials, and even people talking in the
same room.
*****************************************************************************
IF YOU LEAVE THE GAME FOR MORE THAN AN HOUR, either by renting or plain
quitting, your hit points, move points, and mana will be fully restored
when you come back! This doesn't work if you're poisoned.
*****************************************************************************
** Use the ASSIST command to engage in mortal combat with someone in the
room who is getting pummeled.
** Use the SPLIT command to split gold among the members of your group
(including yourself) who are in the room. i.e. If you are in a group
with 4 other people who are in the room with you, type "SPLIT 100"
to give each of them 20 coins.
** You can use the VISIBLE command to break a spell of invisibility before
it expires.

View file

@ -8,7 +8,6 @@
#include "conf.h"
#include "sysdep.h"
#include "structs.h"
#include "interpreter.h"
#include "handler.h"
@ -34,13 +33,7 @@ void aedit_setup_existing(struct descriptor_data *d, int real_num);
void aedit_save_internally(struct descriptor_data *d);
void aedit_save_to_disk(struct descriptor_data *d);
/*
* Utils and exported functions.
*/
/*------------------------------------------------------------------------*\
Utils and exported functions.
\*------------------------------------------------------------------------*/
/* Utils and exported functions. */
ACMD(do_oasis_aedit)
{
@ -48,7 +41,11 @@ ACMD(do_oasis_aedit)
struct descriptor_data *d;
int i;
if (CONFIG_NEW_SOCIALS == 0) {
/* No building as a mob or while being forced. */
if (IS_NPC(ch) || !ch->desc || STATE(ch->desc) != CON_PLAYING)
return;
if (CONFIG_NEW_SOCIALS == 0) {
send_to_char(ch, "Socials cannot be edited at the moment.\r\n");
return;
}
@ -81,9 +78,7 @@ ACMD(do_oasis_aedit)
return;
}
/*
* Give descriptor an OLC structure.
*/
/* Give descriptor an OLC structure. */
if (d->olc) {
mudlog(BRF, LVL_IMMORT, TRUE, "SYSERR: do_oasis: Player already had olc structure.");
free(d->olc);
@ -115,7 +110,6 @@ ACMD(do_oasis_aedit)
mudlog(CMP, LVL_IMMORT, TRUE, "OLC: %s starts editing actions.", GET_NAME(ch));
}
void aedit_setup_new(struct descriptor_data *d) {
CREATE(OLC_ACTION(d), struct social_messg, 1);
OLC_ACTION(d)->command = strdup(OLC_STORAGE(d));
@ -141,8 +135,6 @@ void aedit_setup_new(struct descriptor_data *d) {
OLC_VAL(d) = 0;
}
/*------------------------------------------------------------------------*/
void aedit_setup_existing(struct descriptor_data *d, int real_num) {
CREATE(OLC_ACTION(d), struct social_messg, 1);
OLC_ACTION(d)->command = strdup(soc_mess_list[real_num].command);
@ -181,8 +173,6 @@ void aedit_setup_existing(struct descriptor_data *d, int real_num) {
aedit_disp_menu(d);
}
void aedit_save_internally(struct descriptor_data *d) {
struct social_messg *new_soc_mess_list = NULL;
int i;
@ -212,9 +202,6 @@ void aedit_save_internally(struct descriptor_data *d) {
aedit_save_to_disk(d); /* autosave by Rumble */
}
/*------------------------------------------------------------------------*/
void aedit_save_to_disk(struct descriptor_data *d) {
FILE *fp;
int i;
@ -257,11 +244,7 @@ void aedit_save_to_disk(struct descriptor_data *d) {
remove_from_save_list(AEDIT_PERMISSION, SL_ACTION);
}
/*------------------------------------------------------------------------*/
/* Menu functions */
/* the main menu */
/* The Main Menu. */
void aedit_disp_menu(struct descriptor_data * d) {
struct social_messg *action = OLC_ACTION(d);
struct char_data *ch = d->character;
@ -332,10 +315,7 @@ void aedit_disp_menu(struct descriptor_data * d) {
}
/*
* The main loop
*/
/* The main loop. */
void aedit_parse(struct descriptor_data * d, char *arg) {
int i;

View file

@ -41,6 +41,10 @@ ACMD(do_oasis_cedit)
struct descriptor_data *d;
char buf1[MAX_STRING_LENGTH];
/* No building as a mob or while being forced. */
if (IS_NPC(ch) || !ch->desc || STATE(ch->desc) != CON_PLAYING)
return;
/* Parse any arguments. */
one_argument(argument, buf1);

View file

@ -44,6 +44,10 @@ ACMD(do_oasis_trigedit)
int number, real_num;
struct descriptor_data *d;
/* No building as a mob or while being forced. */
if (IS_NPC(ch) || !ch->desc || STATE(ch->desc) != CON_PLAYING)
return;
/* Parse any arguments. */
skip_spaces(&argument);
if (!*argument || !isdigit(*argument)) {

View file

@ -361,9 +361,9 @@ int delete_object(obj_rnum rnum)
struct obj_data *obj, *tmp;
int shop, j;
if (rnum == NOWHERE || rnum > top_of_objt)
return FALSE;
if (rnum == NOTHING || rnum > top_of_objt)
return NOTHING;
obj = &obj_proto[rnum];
zone_rnum zrnum = real_zone_by_thing(GET_OBJ_VNUM(obj));
@ -457,5 +457,5 @@ int delete_object(obj_rnum rnum)
save_objects(zrnum);
return TRUE;
return rnum;
}

View file

@ -9,7 +9,6 @@
#include "conf.h"
#include "sysdep.h"
#include "structs.h"
#include "utils.h"
#include "db.h"
@ -204,12 +203,8 @@ int in_save_list(zone_vnum zone, int type)
return FALSE;
}
/* -------------------------------------------------------------------------- */
/*
* Used from do_show(), ideally.
*/
void do_show_save_list(struct char_data *ch)
/* Used from do_show(), ideally. */
ACMD(do_show_save_list)
{
if (save_list == NULL)
send_to_char(ch, "All world files are up to date.\r\n");

View file

@ -6,18 +6,14 @@
************************************************************************/
#define STRING_TERMINATOR '~'
#define CONFIG_GENOLC_MOBPROG 0
/* from modify.c */
void smash_tilde(char *str);
void smash_tilde(char *str); /* from modify.c */
int genolc_checkstring(struct descriptor_data *d, char *arg);
int remove_from_save_list(zone_vnum, int type);
int add_to_save_list(zone_vnum, int type);
int in_save_list(zone_vnum, int type);
void strip_cr(char *);
void do_show_save_list(struct char_data *);
int save_all(void);
char *str_udup(const char *);
void copy_ex_descriptions(struct extra_descr_data **to, struct extra_descr_data *from);

View file

@ -111,6 +111,10 @@ ACMD(do_oasis_hedit)
struct descriptor_data *d;
int i;
/* No building as a mob or while being forced. */
if (IS_NPC(ch) || !ch->desc || STATE(ch->desc) != CON_PLAYING)
return;
if (!can_edit_zone(ch, HEDIT_PERMISSION)) {
send_to_char(ch, "You don't have access to editing help files.\r\n");
return;

View file

@ -183,6 +183,7 @@ ACMD(do_score);
ACMD(do_send);
ACMD(do_set);
ACMD(do_show);
ACMD(do_show_save_list);
ACMD(do_shutdown);
ACMD(do_sit);
ACMD(do_skillset);
@ -250,7 +251,7 @@ cpp_extern const struct command_info cmd_info[] = {
/* now, the main list */
{ "at" , "at" , POS_DEAD , do_at , LVL_IMMORT, 0 },
{ "advance" , "adv" , POS_DEAD , do_advance , LVL_GOD, 0 },
{ "aedit" , "aed" , POS_DEAD , do_oasis , LVL_GOD, SCMD_OASIS_AEDIT },
{ "aedit" , "aed" , POS_DEAD , do_oasis_aedit, LVL_GOD, 0 },
{ "alias" , "ali" , POS_DEAD , do_alias , 0, 0 },
{ "afk" , "afk" , POS_DEAD , do_gen_tog , 0, SCMD_AFK },
{ "assist" , "as" , POS_FIGHTING, do_assist , 1, 0 },
@ -270,7 +271,7 @@ cpp_extern const struct command_info cmd_info[] = {
{ "bug" , "bug" , POS_DEAD , do_gen_write, 0, SCMD_BUG },
{ "cast" , "c" , POS_SITTING , do_cast , 1, 0 },
{ "cedit" , "cedit" , POS_DEAD , do_oasis , LVL_IMPL, SCMD_OASIS_CEDIT },
{ "cedit" , "cedit" , POS_DEAD , do_oasis_cedit, LVL_IMPL, 0 },
{ "changelog", "cha" , POS_DEAD , do_changelog, LVL_IMPL, 0 },
{ "check" , "ch" , POS_STANDING, do_not_here , 1, 0 },
{ "checkload", "checkl" , POS_DEAD , do_checkloadstatus, LVL_GOD, 0 },
@ -326,7 +327,7 @@ cpp_extern const struct command_info cmd_info[] = {
{ "gtell" , "gt" , POS_SLEEPING, do_gsay , 0, 0 },
{ "help" , "h" , POS_DEAD , do_help , 0, 0 },
{ "hedit" , "hedit" , POS_DEAD , do_oasis , LVL_GOD , SCMD_OASIS_HEDIT },
{ "hedit" , "hedit" , POS_DEAD , do_oasis_hedit, LVL_GOD , 0 },
{ "hindex" , "hind" , POS_DEAD , do_hindex , 0, 0 },
{ "helpcheck", "helpch" , POS_DEAD , do_helpcheck, LVL_IMPL, 0 },
{ "hide" , "hi" , POS_RESTING , do_hide , 1, 0 },
@ -362,8 +363,8 @@ cpp_extern const struct command_info cmd_info[] = {
{ "motd" , "motd" , POS_DEAD , do_gen_ps , 0, SCMD_MOTD },
{ "mail" , "mail" , POS_STANDING, do_not_here , 1, 0 },
{ "medit" , "med" , POS_DEAD , do_oasis , LVL_BUILDER, SCMD_OASIS_MEDIT },
{ "mlist" , "mlist" , POS_DEAD , do_oasis , LVL_BUILDER, SCMD_OASIS_MLIST },
{ "medit" , "med" , POS_DEAD , do_oasis_medit, LVL_BUILDER, 0 },
{ "mlist" , "mlist" , POS_DEAD , do_oasis_list , LVL_BUILDER, SCMD_OASIS_MLIST },
{ "mute" , "mute" , POS_DEAD , do_wizutil , LVL_GOD, SCMD_SQUELCH },
{ "news" , "news" , POS_SLEEPING, do_gen_ps , 0, SCMD_NEWS },
@ -381,9 +382,9 @@ cpp_extern const struct command_info cmd_info[] = {
{ "open" , "o" , POS_SITTING , do_gen_door , 0, SCMD_OPEN },
{ "order" , "ord" , POS_RESTING , do_order , 1, 0 },
{ "offer" , "off" , POS_STANDING, do_not_here , 1, 0 },
{ "olc" , "olc" , POS_DEAD , do_oasis , LVL_BUILDER, SCMD_OLC_SAVEINFO },
{ "olist" , "olist" , POS_DEAD , do_oasis , LVL_BUILDER, SCMD_OASIS_OLIST },
{ "oedit" , "oedit" , POS_DEAD , do_oasis , LVL_BUILDER, SCMD_OASIS_OEDIT },
{ "olc" , "olc" , POS_DEAD , do_show_save_list, LVL_BUILDER, 0 },
{ "olist" , "olist" , POS_DEAD , do_oasis_list, LVL_BUILDER, SCMD_OASIS_OLIST },
{ "oedit" , "oedit" , POS_DEAD , do_oasis_oedit, LVL_BUILDER, 0 },
{ "put" , "p" , POS_RESTING , do_put , 0, 0 },
{ "peace" , "pe" , POS_DEAD , do_peace , LVL_BUILDER, 0 },
@ -417,8 +418,8 @@ cpp_extern const struct command_info cmd_info[] = {
{ "rescue" , "resc" , POS_FIGHTING, do_rescue , 1, 0 },
{ "restore" , "resto" , POS_DEAD , do_restore , LVL_GOD, 0 },
{ "return" , "retu" , POS_DEAD , do_return , 0, 0 },
{ "redit" , "redit" , POS_DEAD , do_oasis , LVL_BUILDER, SCMD_OASIS_REDIT },
{ "rlist" , "rlist" , POS_DEAD , do_oasis , LVL_BUILDER, SCMD_OASIS_RLIST },
{ "redit" , "redit" , POS_DEAD , do_oasis_redit, LVL_BUILDER, 0 },
{ "rlist" , "rlist" , POS_DEAD , do_oasis_list, LVL_BUILDER, SCMD_OASIS_RLIST },
{ "rclone" , "rclone" , POS_DEAD , do_room_copy, LVL_BUILDER, 0 },
{ "roomflags", "roomflags", POS_DEAD , do_gen_tog , LVL_IMMORT, SCMD_SHOWVNUMS },
@ -429,7 +430,7 @@ cpp_extern const struct command_info cmd_info[] = {
{ "save" , "sav" , POS_SLEEPING, do_save , 0, 0 },
{ "saveall" , "saveall" , POS_DEAD , do_saveall , LVL_BUILDER, 0},
{ "sell" , "sell" , POS_STANDING, do_not_here , 0, 0 },
{ "sedit" , "sedit" , POS_DEAD , do_oasis , LVL_BUILDER, SCMD_OASIS_SEDIT },
{ "sedit" , "sedit" , POS_DEAD , do_oasis_sedit, LVL_BUILDER, 0 },
{ "send" , "send" , POS_SLEEPING, do_send , LVL_GOD, 0 },
{ "set" , "set" , POS_DEAD , do_set , LVL_IMMORT, 0 },
{ "shout" , "sho" , POS_RESTING , do_gen_comm , 0, SCMD_SHOUT },
@ -439,7 +440,7 @@ cpp_extern const struct command_info cmd_info[] = {
{ "sip" , "sip" , POS_RESTING , do_drink , 0, SCMD_SIP },
{ "skillset" , "skillset", POS_SLEEPING, do_skillset , LVL_GRGOD, 0 },
{ "sleep" , "sl" , POS_SLEEPING, do_sleep , 0, 0 },
{ "slist" , "slist" , POS_SLEEPING, do_oasis , LVL_BUILDER, SCMD_OASIS_SLIST },
{ "slist" , "slist" , POS_SLEEPING, do_oasis_list, LVL_BUILDER, SCMD_OASIS_SLIST },
{ "sneak" , "sneak" , POS_STANDING, do_sneak , 1, 0 },
{ "snoop" , "snoop" , POS_DEAD , do_snoop , LVL_GOD, 0 },
{ "socials" , "socials" , POS_DEAD , do_commands , 0, SCMD_SOCIALS },
@ -460,9 +461,9 @@ cpp_extern const struct command_info cmd_info[] = {
{ "toggle" , "toggle" , POS_DEAD , do_toggle , 0, 0 },
{ "track" , "track" , POS_STANDING, do_track , 0, 0 },
{ "transfer" , "transfer", POS_SLEEPING, do_trans , LVL_GOD, 0 },
{ "trigedit" , "trigedit", POS_DEAD , do_oasis , LVL_BUILDER, SCMD_OASIS_TRIGEDIT},
{ "trigedit" , "trigedit", POS_DEAD , do_oasis_trigedit, LVL_BUILDER, 0 },
{ "typo" , "typo" , POS_DEAD , do_gen_write, 0, SCMD_TYPO },
{ "tlist" , "tlist" , POS_DEAD , do_oasis , LVL_BUILDER, SCMD_OASIS_TLIST },
{ "tlist" , "tlist" , POS_DEAD , do_oasis_list, LVL_BUILDER, SCMD_OASIS_TLIST },
{ "tstat" , "tstat" , POS_DEAD , do_tstat , LVL_BUILDER, 0 },
{ "unlock" , "unlock" , POS_SITTING , do_gen_door , 0, SCMD_UNLOCK },
@ -497,8 +498,8 @@ cpp_extern const struct command_info cmd_info[] = {
{ "write" , "write" , POS_STANDING, do_write , 1, 0 },
{ "zreset" , "zreset" , POS_DEAD , do_zreset , LVL_BUILDER, 0 },
{ "zedit" , "zedit" , POS_DEAD , do_oasis , LVL_BUILDER, SCMD_OASIS_ZEDIT },
{ "zlist" , "zlist" , POS_DEAD , do_oasis , LVL_BUILDER, SCMD_OASIS_ZLIST },
{ "zedit" , "zedit" , POS_DEAD , do_oasis_zedit, LVL_BUILDER, 0 },
{ "zlist" , "zlist" , POS_DEAD , do_oasis_list, LVL_BUILDER, SCMD_OASIS_ZLIST },
{ "zcheck" , "zcheck" , POS_DEAD , do_zcheck , LVL_GOD, 0 },
{ "zpurge" , "zpurge" , POS_DEAD , do_zpurge , LVL_BUILDER, 0 },

View file

@ -212,24 +212,13 @@ struct alias_data {
#define SCMD_LOCK 3
#define SCMD_PICK 4
/* do_olc */
#define SCMD_OASIS_REDIT 0
#define SCMD_OASIS_OEDIT 1
#define SCMD_OASIS_ZEDIT 2
#define SCMD_OASIS_MEDIT 3
#define SCMD_OASIS_SEDIT 4
#define SCMD_OASIS_CEDIT 5
#define SCMD_OLC_SAVEINFO 7
#define SCMD_OASIS_RLIST 8
#define SCMD_OASIS_MLIST 9
#define SCMD_OASIS_OLIST 10
#define SCMD_OASIS_SLIST 11
#define SCMD_OASIS_ZLIST 12
#define SCMD_OASIS_TRIGEDIT 13
#define SCMD_OASIS_AEDIT 14
#define SCMD_OASIS_TLIST 15
#define SCMD_OASIS_LINKS 16
#define SCMD_OASIS_HEDIT 17
/* do_oasis_Xlist */
#define SCMD_OASIS_RLIST 0
#define SCMD_OASIS_MLIST 1
#define SCMD_OASIS_OLIST 2
#define SCMD_OASIS_SLIST 3
#define SCMD_OASIS_ZLIST 4
#define SCMD_OASIS_TLIST 5
/* do_last */
#define SCMD_LIST_ALL 1

View file

@ -49,6 +49,10 @@ ACMD(do_oasis_medit)
char buf1[MAX_STRING_LENGTH];
char buf2[MAX_STRING_LENGTH];
/* No building as a mob or while being forced. */
if (IS_NPC(ch) || !ch->desc || STATE(ch->desc) != CON_PLAYING)
return;
/* Parse any arguments */
buf3 = two_arguments(argument, buf1, buf2);
@ -763,7 +767,7 @@ void medit_parse(struct descriptor_data *d, char *arg)
case MEDIT_DELETE:
if (*arg == 'y' || *arg == 'Y') {
if (delete_mobile(GET_MOB_RNUM(OLC_MOB(d))))
if (delete_mobile(GET_MOB_RNUM(OLC_MOB(d))) != NOBODY)
write_to_output(d, "Mobile deleted.\r\n");
else
write_to_output(d, "Couldn't delete the mobile!\r\n");

View file

@ -7,7 +7,6 @@
#include "conf.h"
#include "sysdep.h"
#include "structs.h"
#include "utils.h"
#include "interpreter.h"
@ -24,15 +23,10 @@
#include "screen.h"
#include "dg_olc.h"
/******************************************************************************/
/** External Functions **/
/******************************************************************************/
/* External Functions */
int is_name(const char *str, const char *namelist);
/******************************************************************************/
/** Internal Data Structures **/
/******************************************************************************/
/* Internal Data Structures */
struct olc_scmd_info_t {
const char *text;
int con_type;
@ -51,131 +45,20 @@ struct olc_scmd_info_t {
const char *nrm, *grn, *cyn, *yel;
/******************************************************************************/
/** Internal Functions **/
/******************************************************************************/
/* Internal Functions */
void free_config(struct config_data *data);
/* -------------------------------------------------------------------------- */
/*
* Only player characters should be using OLC anyway.
*/
/* Only player characters should be using OLC anyway. */
void clear_screen(struct descriptor_data *d)
{
if (PRF_FLAGGED(d->character, PRF_CLS))
write_to_output(d, "");
}
/* -------------------------------------------------------------------------- */
/*
* Exported ACMD do_oasis function.
*
* This function is the OLC interface. It deals with all the
* generic OLC stuff, then passes control to the sub-olc sections.
*
* UPDATE:
* I believe that yes, putting the code together that is common in all of the
* olc functions is good to a certain extent, but the do_oasis command was
* getting ridiculous. Therefore, I have separated them into separate
* functions that get called from in do_oasis....yes, similar code, but it is
* easier to handle.... - Kip Potter
*/
ACMD(do_oasis)
{
/*
* No screwing around as a mobile.
*/
if (IS_NPC(ch) || !ch->desc)
return;
/*
* Prevent forcing people in OLC to edit other stuff.
* 'force' just lets command_interpreter() handle the input,
* regardless of the state of the victim.
* This can wreck havoc if people are i OLC already
* - ie. their input would have been redirected by nanny(), and
* never get to command_interpreter().
* -- Welcor 09/03
* - thanks to Mark Garringer (zizazat@hotmail.com) for the bug report.
*/
if (STATE(ch->desc) != CON_PLAYING)
return;
switch (subcmd) {
/*
* The command to see what needs to be saved, typically 'olc'.
*/
case SCMD_OLC_SAVEINFO:
do_show_save_list(ch);
break;
case SCMD_OASIS_CEDIT:
do_oasis_cedit(ch, argument, cmd, subcmd);
break;
case SCMD_OASIS_ZEDIT:
do_oasis_zedit(ch, argument, cmd, subcmd);
break;
case SCMD_OASIS_REDIT:
do_oasis_redit(ch, argument, cmd, subcmd);
break;
case SCMD_OASIS_OEDIT:
do_oasis_oedit(ch, argument, cmd, subcmd);
break;
case SCMD_OASIS_MEDIT:
do_oasis_medit(ch, argument, cmd, subcmd);
break;
case SCMD_OASIS_SEDIT:
do_oasis_sedit(ch, argument, cmd, subcmd);
break;
case SCMD_OASIS_RLIST:
case SCMD_OASIS_MLIST:
case SCMD_OASIS_OLIST:
case SCMD_OASIS_SLIST:
case SCMD_OASIS_ZLIST:
case SCMD_OASIS_TLIST:
do_oasis_list(ch, argument, cmd, subcmd);
break;
case SCMD_OASIS_LINKS:
do_oasis_links(ch, argument, cmd, subcmd);
break;
case SCMD_OASIS_TRIGEDIT:
do_oasis_trigedit(ch, argument, cmd, subcmd);
break;
case SCMD_OASIS_AEDIT:
do_oasis_aedit(ch, argument, cmd, subcmd);
break;
case SCMD_OASIS_HEDIT:
do_oasis_hedit(ch, argument, cmd, subcmd);
break;
default:
log("SYSERR: (OLC) Invalid subcmd passed to do_oasis, subcmd - (%d)", subcmd);
return;
}
return;
}
/*------------------------------------------------------------*\
Exported utilities
\*------------------------------------------------------------*/
/*
* Set the colour string pointers for that which this char will
* see at color level NRM. Changing the entries here will change
* the colour scheme throughout the OLC.
*/
/* Exported utilities */
/* Set the color string pointers for that which this char will see at color
* level NRM. Changing the entries here will change the colour scheme
* throughout the OLC. */
void get_char_colors(struct char_data *ch)
{
nrm = CCNRM(ch, C_NRM);
@ -184,23 +67,16 @@ void get_char_colors(struct char_data *ch)
yel = CCYEL(ch, C_NRM);
}
/*
* This procedure frees up the strings and/or the structures
* attatched to a descriptor, sets all flags back to how they
* should be.
*/
/* This procedure frees up the strings and/or the structures attatched to a
* descriptor, sets all flags back to how they should be. */
void cleanup_olc(struct descriptor_data *d, byte cleanup_type)
{
/*
* Clean up WHAT?
*/
/* Clean up WHAT? */
if (d->olc == NULL)
return;
/*
* Check for a room. free_room doesn't perform
* sanity checks, we must be careful here.
*/
/* Check for a room. free_room doesn't perform sanity checks, we must be
* careful here. */
if (OLC_ROOM(d)) {
switch (cleanup_type) {
case CLEANUP_ALL:
@ -220,38 +96,28 @@ void cleanup_olc(struct descriptor_data *d, byte cleanup_type)
}
}
/*
* Check for an existing object in the OLC. The strings
* aren't part of the prototype any longer. They get added
* with strdup().
*/
/* Check for an existing object in the OLC. The strings aren't part of the
* prototype any longer. They get added with strdup(). */
if (OLC_OBJ(d)) {
free_object_strings(OLC_OBJ(d));
free(OLC_OBJ(d));
}
/*
* Check for a mob. free_mobile() makes sure strings are not in
* the prototype.
*/
/* Check for a mob. free_mobile() makes sure strings are not in the
* prototype. */
if (OLC_MOB(d))
free_mobile(OLC_MOB(d));
/*
* Check for a zone. cleanup_type is irrelevant here, free() everything.
*/
/* Check for a zone. cleanup_type is irrelevant here, free() everything. */
if (OLC_ZONE(d)) {
free(OLC_ZONE(d)->name);
free(OLC_ZONE(d)->cmd);
free(OLC_ZONE(d));
}
/*
* Check for a shop. free_shop doesn't perform sanity checks, we must
* be careful here.
* OLC_SHOP(d) is a _copy_ - no pointers to the original. Just go ahead
* and free it all.
*/
/* Check for a shop. free_shop doesn't perform sanity checks, we must be
* careful here. OLC_SHOP(d) is a _copy_ - no pointers to the original. Just
* go ahead and free it all. */
if (OLC_SHOP(d))
free_shop(OLC_SHOP(d));
@ -284,33 +150,23 @@ void cleanup_olc(struct descriptor_data *d, byte cleanup_type)
}
}
/* free storage if allocated (for tedit and aedit) */
/* and Triggers */
/*
* this is the command list - it's been copied to disk already,
* so just free it -- Welcor
*/
/* Free storage if allocated (tedit, aedit, and trigedit). This is the command
* list - it's been copied to disk already, so just free it -Welcor. */
if (OLC_STORAGE(d)) {
free(OLC_STORAGE(d));
OLC_STORAGE(d) = NULL;
}
/*
* Free this one regardless. If we've left olc, we've either made
* a fresh copy of it in the trig index, or we lost connection.
* Either way, we need to get rid of this.
*/
/* Free this one regardless. If we've left olc, we've either made a fresh
* copy of it in the trig index, or we lost connection. Either way, we need
* to get rid of this. */
if (OLC_TRIG(d)) {
free_trigger(OLC_TRIG(d));
OLC_TRIG(d) = NULL;
}
/*
* OLC_SCRIPT is always set as trig_proto of OLC_OBJ/MOB/ROOM.
* Therefore it should not be free'd here.
*/
/* OLC_SCRIPT is always set as trig_proto of OLC_OBJ/MOB/ROOM. Therefore it
* should not be free'd here. */
/*
* Restore descriptor playing status.
*/
/* Restore descriptor playing status. */
if (d->character) {
REMOVE_BIT(PLR_FLAGS(d->character), PLR_WRITING);
act("$n stops using OLC.", TRUE, d->character, NULL, NULL, TO_ROOM);
@ -331,10 +187,8 @@ void cleanup_olc(struct descriptor_data *d, byte cleanup_type)
d->olc = NULL;
}
/*
* This function is an exact duplicate of the tag_argument function found in
* one of the ascii patches located on the circlemud ftp website.
*/
/* This function is an exact duplicate of the tag_argument function found in
* one of the ascii patches located on the circlemud ftp website. */
void split_argument(char *argument, char *tag)
{
char *tmp = argument, *ttag = tag, *wrt = argument;
@ -360,34 +214,17 @@ void split_argument(char *argument, char *tag)
void free_config(struct config_data *data)
{
/****************************************************************************/
/** Free strings. **/
/****************************************************************************/
/* Free strings. */
free_strings(data, OASIS_CFG);
/****************************************************************************/
/** Free the data structure. **/
/****************************************************************************/
/* Free the data structure. */
free(data);
}
/******************************************************************************/
/** **/
/** Function : can_edit_zone() **/
/** **/
/** Description : Checks to see if a builder can modify the specified **/
/** zone. **/
/** **/
/** Arguments : **/
/** ch **/
/** The character requesting access to modify this zone. **/
/** rnum **/
/** The real number of the zone attempted to be modified. **/
/** **/
/** Returns : Returns TRUE if the builder has access, otherwise **/
/** FALSE. **/
/** **/
/******************************************************************************/
/* Checks to see if a builder can modify the specified zone. Ch is the imm
* requesting access to modify this zone. Rnum is the real number of the zone
* attempted to be modified. Returns TRUE if the builder has access, otherwisei
* FALSE. */
int can_edit_zone(struct char_data *ch, zone_rnum rnum)
{
/* no access if called with bad arguments */

View file

@ -346,7 +346,7 @@ int Crash_clean_file(char *name)
return FALSE;
/* Open so that permission problems will be flagged now, at boot time. */
if (!(fl = fopen(fname, "rw"))) {
if (!(fl = fopen(fname, "r"))) {
if (errno != ENOENT) /* if it fails, NOT because of no file */
log("SYSERR: OPENING OBJECT FILE %s (4): %s", fname, strerror(errno));
return FALSE;

View file

@ -62,6 +62,10 @@ ACMD(do_oasis_oedit)
char buf1[MAX_STRING_LENGTH];
char buf2[MAX_STRING_LENGTH];
/* No building as a mob or while being forced. */
if (IS_NPC(ch) || !ch->desc || STATE(ch->desc) != CON_PLAYING)
return;
/* Parse any arguments. */
buf3 = two_arguments(argument, buf1, buf2);
@ -1175,7 +1179,7 @@ void oedit_parse(struct descriptor_data *d, char *arg)
break;
case OEDIT_DELETE:
if (*arg == 'y' || *arg == 'Y') {
if (delete_object(GET_OBJ_RNUM(OLC_OBJ(d))))
if (delete_object(GET_OBJ_RNUM(OLC_OBJ(d))) != NOTHING)
write_to_output(d, "Object deleted.\r\n");
else
write_to_output(d, "Couldn't delete the object!\r\n");

View file

@ -40,6 +40,10 @@ ACMD(do_oasis_redit)
int number = NOWHERE, save = 0, real_num;
struct descriptor_data *d;
/* No building as a mob or while being forced. */
if (IS_NPC(ch) || !ch->desc || STATE(ch->desc) != CON_PLAYING)
return;
/* Parse any arguments. */
buf3 = two_arguments(argument, buf1, buf2);

View file

@ -60,6 +60,10 @@ ACMD(do_oasis_sedit)
char buf1[MAX_INPUT_LENGTH];
char buf2[MAX_INPUT_LENGTH];
/* No building as a mob or while being forced. */
if (IS_NPC(ch) || !ch->desc || STATE(ch->desc) != CON_PLAYING)
return;
/* Parse any arguments. */
buf3 = two_arguments(argument, buf1, buf2);

View file

@ -10,13 +10,11 @@
#include "conf.h"
#include "sysdep.h"
#include "structs.h"
#include "db.h"
#include "interpreter.h"
#include "utils.h"
/* external globals */
extern int mini_mud;
@ -41,7 +39,6 @@ void ASSIGNMOB(mob_vnum mob, SPECIAL(fname));
void ASSIGNOBJ(obj_vnum obj, SPECIAL(fname));
/* functions to perform assignments */
void ASSIGNMOB(mob_vnum mob, SPECIAL(fname))
{
mob_rnum rnum;
@ -72,11 +69,7 @@ void ASSIGNROOM(room_vnum room, SPECIAL(fname))
log("SYSERR: Attempt to assign spec to non-existant room #%d", room);
}
/* ********************************************************************
* Assignments *
******************************************************************** */
/* Assignments */
/* assign special procedures to mobiles */
void assign_mobiles(void)
{

View file

@ -10,7 +10,6 @@
#include "conf.h"
#include "sysdep.h"
#include "structs.h"
#include "utils.h"
#include "comm.h"
@ -39,23 +38,10 @@ void list_skills(struct char_data *ch);
SPECIAL(guild);
SPECIAL(dump);
SPECIAL(mayor);
void npc_steal(struct char_data *ch, struct char_data *victim);
SPECIAL(snake);
SPECIAL(thief);
SPECIAL(magic_user);
SPECIAL(guild_guard);
SPECIAL(puff);
SPECIAL(fido);
SPECIAL(janitor);
SPECIAL(cityguard);
SPECIAL(pet_shops);
SPECIAL(bank);
/* ********************************************************************
* Special procedures for mobiles *
******************************************************************** */
/* Special procedures for mobiles */
int spell_sort_info[MAX_SKILLS + 1];
int compare_spells(const void *x, const void *y)
@ -145,7 +131,6 @@ void list_skills(struct char_data *ch)
page_string(ch->desc, buf2, TRUE);
}
SPECIAL(guild)
{
int skill_num, percent;
@ -189,8 +174,6 @@ SPECIAL(guild)
return (TRUE);
}
SPECIAL(dump)
{
struct obj_data *k;
@ -224,7 +207,6 @@ SPECIAL(dump)
return (TRUE);
}
SPECIAL(mayor)
{
char actbuf[MAX_INPUT_LENGTH];
@ -318,324 +300,7 @@ SPECIAL(mayor)
return (FALSE);
}
/* ********************************************************************
* General special procedures for mobiles *
******************************************************************** */
void npc_steal(struct char_data *ch, struct char_data *victim)
{
int gold;
if (IS_NPC(victim))
return;
if (GET_LEVEL(victim) >= LVL_IMMORT)
return;
if (!CAN_SEE(ch, victim))
return;
if (AWAKE(victim) && (rand_number(0, GET_LEVEL(ch)) == 0)) {
act("You discover that $n has $s hands in your wallet.", FALSE, ch, 0, victim, TO_VICT);
act("$n tries to steal gold from $N.", TRUE, ch, 0, victim, TO_NOTVICT);
} else {
/* Steal some gold coins */
gold = (GET_GOLD(victim) * rand_number(1, 10)) / 100;
if (gold > 0) {
GET_GOLD(ch) += gold;
GET_GOLD(victim) -= gold;
}
}
}
/*
* Quite lethal to low-level characters.
*/
SPECIAL(snake)
{
if (cmd || GET_POS(ch) != POS_FIGHTING || !FIGHTING(ch))
return (FALSE);
if (IN_ROOM(FIGHTING(ch)) != IN_ROOM(ch) || rand_number(0, GET_LEVEL(ch)) != 0)
return (FALSE);
act("$n bites $N!", 1, ch, 0, FIGHTING(ch), TO_NOTVICT);
act("$n bites you!", 1, ch, 0, FIGHTING(ch), TO_VICT);
call_magic(ch, FIGHTING(ch), 0, SPELL_POISON, GET_LEVEL(ch), CAST_SPELL);
return (TRUE);
}
SPECIAL(thief)
{
struct char_data *cons;
if (cmd || GET_POS(ch) != POS_STANDING)
return (FALSE);
for (cons = world[IN_ROOM(ch)].people; cons; cons = cons->next_in_room)
if (!IS_NPC(cons) && GET_LEVEL(cons) < LVL_IMMORT && !rand_number(0, 4)) {
npc_steal(ch, cons);
return (TRUE);
}
return (FALSE);
}
SPECIAL(magic_user)
{
struct char_data *vict;
if (cmd || GET_POS(ch) != POS_FIGHTING)
return (FALSE);
/* pseudo-randomly choose someone in the room who is fighting me */
for (vict = world[IN_ROOM(ch)].people; vict; vict = vict->next_in_room)
if (FIGHTING(vict) == ch && !rand_number(0, 4))
break;
/* if I didn't pick any of those, then just slam the guy I'm fighting */
if (vict == NULL && IN_ROOM(FIGHTING(ch)) == IN_ROOM(ch))
vict = FIGHTING(ch);
/* Hm...didn't pick anyone...I'll wait a round. */
if (vict == NULL)
return (TRUE);
if (GET_LEVEL(ch) > 13 && rand_number(0, 10) == 0)
cast_spell(ch, vict, NULL, SPELL_POISON);
if (GET_LEVEL(ch) > 7 && rand_number(0, 8) == 0)
cast_spell(ch, vict, NULL, SPELL_BLINDNESS);
if (GET_LEVEL(ch) > 12 && rand_number(0, 12) == 0) {
if (IS_EVIL(ch))
cast_spell(ch, vict, NULL, SPELL_ENERGY_DRAIN);
else if (IS_GOOD(ch))
cast_spell(ch, vict, NULL, SPELL_DISPEL_EVIL);
}
if (rand_number(0, 4))
return (TRUE);
switch (GET_LEVEL(ch)) {
case 4:
case 5:
cast_spell(ch, vict, NULL, SPELL_MAGIC_MISSILE);
break;
case 6:
case 7:
cast_spell(ch, vict, NULL, SPELL_CHILL_TOUCH);
break;
case 8:
case 9:
cast_spell(ch, vict, NULL, SPELL_BURNING_HANDS);
break;
case 10:
case 11:
cast_spell(ch, vict, NULL, SPELL_SHOCKING_GRASP);
break;
case 12:
case 13:
cast_spell(ch, vict, NULL, SPELL_LIGHTNING_BOLT);
break;
case 14:
case 15:
case 16:
case 17:
cast_spell(ch, vict, NULL, SPELL_COLOR_SPRAY);
break;
default:
cast_spell(ch, vict, NULL, SPELL_FIREBALL);
break;
}
return (TRUE);
}
/* ********************************************************************
* Special procedures for mobiles *
******************************************************************** */
SPECIAL(guild_guard)
{
int i;
struct char_data *guard = (struct char_data *)me;
const char *buf = "The guard humiliates you, and blocks your way.\r\n";
const char *buf2 = "The guard humiliates $n, and blocks $s way.";
if (!IS_MOVE(cmd) || AFF_FLAGGED(guard, AFF_BLIND))
return (FALSE);
if (GET_LEVEL(ch) >= LVL_IMMORT)
return (FALSE);
for (i = 0; guild_info[i].guild_room != NOWHERE; i++) {
/* Wrong guild or not trying to enter. */
if (GET_ROOM_VNUM(IN_ROOM(ch)) != guild_info[i].guild_room || cmd != guild_info[i].direction)
continue;
/* Allow the people of the guild through. */
if (!IS_NPC(ch) && GET_CLASS(ch) == guild_info[i].pc_class)
continue;
send_to_char(ch, "%s", buf);
act(buf2, FALSE, ch, 0, 0, TO_ROOM);
return (TRUE);
}
return (FALSE);
}
SPECIAL(puff)
{
char actbuf[MAX_INPUT_LENGTH];
if (cmd)
return (FALSE);
switch (rand_number(0, 60)) {
case 0:
do_say(ch, strcpy(actbuf, "My god! It's full of stars!"), 0, 0); /* strcpy: OK */
return (TRUE);
case 1:
do_say(ch, strcpy(actbuf, "How'd all those fish get up here?"), 0, 0); /* strcpy: OK */
return (TRUE);
case 2:
do_say(ch, strcpy(actbuf, "I'm a very female dragon."), 0, 0); /* strcpy: OK */
return (TRUE);
case 3:
do_say(ch, strcpy(actbuf, "I've got a peaceful, easy feeling."), 0, 0); /* strcpy: OK */
return (TRUE);
default:
return (FALSE);
}
}
SPECIAL(fido)
{
struct obj_data *i, *temp, *next_obj;
if (cmd || !AWAKE(ch))
return (FALSE);
for (i = world[IN_ROOM(ch)].contents; i; i = i->next_content) {
if (!IS_CORPSE(i))
continue;
act("$n savagely devours a corpse.", FALSE, ch, 0, 0, TO_ROOM);
for (temp = i->contains; temp; temp = next_obj) {
next_obj = temp->next_content;
obj_from_obj(temp);
obj_to_room(temp, IN_ROOM(ch));
}
extract_obj(i);
return (TRUE);
}
return (FALSE);
}
SPECIAL(janitor)
{
struct obj_data *i;
if (cmd || !AWAKE(ch))
return (FALSE);
for (i = world[IN_ROOM(ch)].contents; i; i = i->next_content) {
if (!CAN_WEAR(i, ITEM_WEAR_TAKE))
continue;
if (GET_OBJ_TYPE(i) != ITEM_DRINKCON && GET_OBJ_COST(i) >= 15)
continue;
act("$n picks up some trash.", FALSE, ch, 0, 0, TO_ROOM);
obj_from_room(i);
obj_to_char(i, ch);
return (TRUE);
}
return (FALSE);
}
SPECIAL(cityguard)
{
struct char_data *tch, *evil, *spittle;
int max_evil, min_cha;
if (cmd || !AWAKE(ch) || FIGHTING(ch))
return (FALSE);
max_evil = 1000;
min_cha = 6;
spittle = evil = NULL;
for (tch = world[IN_ROOM(ch)].people; tch; tch = tch->next_in_room) {
if (!CAN_SEE(ch, tch))
continue;
if (!IS_NPC(tch) && PLR_FLAGGED(tch, PLR_KILLER)) {
act("$n screams 'HEY!!! You're one of those PLAYER KILLERS!!!!!!'", FALSE, ch, 0, 0, TO_ROOM);
hit(ch, tch, TYPE_UNDEFINED);
return (TRUE);
}
if (!IS_NPC(tch) && PLR_FLAGGED(tch, PLR_THIEF)) {
act("$n screams 'HEY!!! You're one of those PLAYER THIEVES!!!!!!'", FALSE, ch, 0, 0, TO_ROOM);
hit(ch, tch, TYPE_UNDEFINED);
return (TRUE);
}
if (FIGHTING(tch) && GET_ALIGNMENT(tch) < max_evil && (IS_NPC(tch) || IS_NPC(FIGHTING(tch)))) {
max_evil = GET_ALIGNMENT(tch);
evil = tch;
}
if (GET_CHA(tch) < min_cha) {
spittle = tch;
min_cha = GET_CHA(tch);
}
}
if (evil && GET_ALIGNMENT(FIGHTING(evil)) >= 0) {
act("$n screams 'PROTECT THE INNOCENT! BANZAI! CHARGE! ARARARAGGGHH!'", FALSE, ch, 0, 0, TO_ROOM);
hit(ch, evil, TYPE_UNDEFINED);
return (TRUE);
}
/* Reward the socially inept. */
if (spittle && !rand_number(0, 9)) {
static int spit_social;
if (!spit_social)
spit_social = find_command("spit");
if (spit_social > 0) {
char spitbuf[MAX_NAME_LENGTH + 1];
strncpy(spitbuf, GET_NAME(spittle), sizeof(spitbuf)); /* strncpy: OK */
spitbuf[sizeof(spitbuf) - 1] = '\0';
do_action(ch, spitbuf, spit_social, 0);
return (TRUE);
}
}
return (FALSE);
}
#define PET_PRICE(pet) (GET_LEVEL(pet) * 300)
SPECIAL(pet_shops)
{
char buf[MAX_STRING_LENGTH], pet_name[256];
@ -699,13 +364,7 @@ SPECIAL(pet_shops)
return (FALSE);
}
/* ********************************************************************
* Special procedures for objects *
******************************************************************** */
/* Special procedures for objects */
SPECIAL(bank)
{
int amount;

View file

@ -42,6 +42,10 @@ ACMD(do_oasis_zedit)
char buf1[MAX_STRING_LENGTH];
char buf2[MAX_STRING_LENGTH];
/* No building as a mob or while being forced. */
if (IS_NPC(ch) || !ch->desc || STATE(ch->desc) != CON_PLAYING)
return;
/* Parse any arguments. */
buf3 = two_arguments(argument, buf1, buf2);
@ -670,7 +674,7 @@ void zedit_parse(struct descriptor_data *d, char *arg)
case 'q':
case 'Q':
if (OLC_ZONE(d)->age || OLC_ZONE(d)->number) {
write_to_output(d, "Do you wish to save your changes? (y/n) : ");
write_to_output(d, "Do you wish to save your changes? : ");
OLC_MODE(d) = ZEDIT_CONFIRM_SAVESTRING;
} else {
write_to_output(d, "No changes made.\r\n");