From 7f65248b2ad6e92d682da52be36c00b93305e84d Mon Sep 17 00:00:00 2001 From: Rumble Date: Wed, 28 Mar 2007 12:53:48 +0000 Subject: [PATCH] - 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 --- FAQ | 5 +- README | 21 +- changelog | 9 +- doc/README.CYGWIN | 28 ++- doc/README.MSVC8 | 16 +- doc/README.WIN | 62 +++--- lib/text/help/help.hlp | 466 ++++++++++++++++++++++------------------- lib/text/news | 183 ++++++++-------- src/aedit.c | 38 +--- src/cedit.c | 4 + src/dg_olc.c | 4 + src/genobj.c | 8 +- src/genolc.c | 9 +- src/genolc.h | 6 +- src/hedit.c | 4 + src/interpreter.c | 33 +-- src/interpreter.h | 25 +-- src/medit.c | 6 +- src/oasis.c | 237 ++++----------------- src/objsave.c | 2 +- src/oedit.c | 6 +- src/redit.c | 4 + src/sedit.c | 4 + src/spec_assign.c | 9 +- src/spec_procs.c | 345 +----------------------------- src/zedit.c | 6 +- 26 files changed, 534 insertions(+), 1006 deletions(-) diff --git a/FAQ b/FAQ index a1def06..3ba2296 100644 --- a/FAQ +++ b/FAQ @@ -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 diff --git a/README b/README index ebebc7f..02d12c5 100644 --- a/README +++ b/README @@ -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 diff --git a/changelog b/changelog index b880a7f..5bc1d31 100644 --- a/changelog +++ b/changelog @@ -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. diff --git a/doc/README.CYGWIN b/doc/README.CYGWIN index 3246bb9..ff9916f 100644 --- a/doc/README.CYGWIN +++ b/doc/README.CYGWIN @@ -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 diff --git a/doc/README.MSVC8 b/doc/README.MSVC8 index 54e5e57..50cea4e 100644 --- a/doc/README.MSVC8 +++ b/doc/README.MSVC8 @@ -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 \ No newline at end of file +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 diff --git a/doc/README.WIN b/doc/README.WIN index 133be20..83e2b2c 100644 --- a/doc/README.WIN +++ b/doc/README.WIN @@ -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 ). - 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 diff --git a/lib/text/help/help.hlp b/lib/text/help/help.hlp index 2c6f907..dee6b52 100644 --- a/lib/text/help/help.hlp +++ b/lib/text/help/help.hlp @@ -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% [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% @@ -3876,8 +3866,6 @@ findmob.() &%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 ") + 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 if you wish to stop using and seeing that channel. A (no) 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 diff --git a/lib/text/news b/lib/text/news index 45751b6..0b6a984 100644 --- a/lib/text/news +++ b/lib/text/news @@ -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 . - -** 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 . + +** 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. diff --git a/src/aedit.c b/src/aedit.c index bb3b8f9..03f37f4 100644 --- a/src/aedit.c +++ b/src/aedit.c @@ -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; diff --git a/src/cedit.c b/src/cedit.c index 13ef47c..dbbff33 100644 --- a/src/cedit.c +++ b/src/cedit.c @@ -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); diff --git a/src/dg_olc.c b/src/dg_olc.c index a8b885d..796d0bf 100644 --- a/src/dg_olc.c +++ b/src/dg_olc.c @@ -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)) { diff --git a/src/genobj.c b/src/genobj.c index c3864e9..960f6eb 100644 --- a/src/genobj.c +++ b/src/genobj.c @@ -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; } diff --git a/src/genolc.c b/src/genolc.c index 4f09807..62044c5 100644 --- a/src/genolc.c +++ b/src/genolc.c @@ -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"); diff --git a/src/genolc.h b/src/genolc.h index d381a17..141270e 100644 --- a/src/genolc.h +++ b/src/genolc.h @@ -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); diff --git a/src/hedit.c b/src/hedit.c index ddd5c91..d541496 100644 --- a/src/hedit.c +++ b/src/hedit.c @@ -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; diff --git a/src/interpreter.c b/src/interpreter.c index 3001ef1..4ce4ef2 100644 --- a/src/interpreter.c +++ b/src/interpreter.c @@ -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 }, diff --git a/src/interpreter.h b/src/interpreter.h index 0bc5abd..0abe9ff 100644 --- a/src/interpreter.h +++ b/src/interpreter.h @@ -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 diff --git a/src/medit.c b/src/medit.c index 7695db1..c16fa7f 100644 --- a/src/medit.c +++ b/src/medit.c @@ -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"); diff --git a/src/oasis.c b/src/oasis.c index ee9fca1..79ee837 100644 --- a/src/oasis.c +++ b/src/oasis.c @@ -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 */ diff --git a/src/objsave.c b/src/objsave.c index c6946ce..d6f8959 100644 --- a/src/objsave.c +++ b/src/objsave.c @@ -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; diff --git a/src/oedit.c b/src/oedit.c index 989fbee..b8ed201 100644 --- a/src/oedit.c +++ b/src/oedit.c @@ -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"); diff --git a/src/redit.c b/src/redit.c index 09e5063..b25faa6 100644 --- a/src/redit.c +++ b/src/redit.c @@ -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); diff --git a/src/sedit.c b/src/sedit.c index 41543e3..d91dd7c 100644 --- a/src/sedit.c +++ b/src/sedit.c @@ -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); diff --git a/src/spec_assign.c b/src/spec_assign.c index eb14f0c..26430d9 100644 --- a/src/spec_assign.c +++ b/src/spec_assign.c @@ -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) { diff --git a/src/spec_procs.c b/src/spec_procs.c index 485b5f7..da89334 100644 --- a/src/spec_procs.c +++ b/src/spec_procs.c @@ -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; diff --git a/src/zedit.c b/src/zedit.c index d824f98..88a71dd 100644 --- a/src/zedit.c +++ b/src/zedit.c @@ -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");