diff --git a/ChangeLog b/ChangeLog index e0cf4b3..951931e 100644 --- a/ChangeLog +++ b/ChangeLog @@ -261,7 +261,7 @@ CircleMUD 3.5 Release history: Version 3.51 release: February, 2007 -Version 3.5 release: December 11, 2006 +Version 3.5 release: December, 2006 Version 3.1 (yes, no beta pl): November 18, 2002 Version 3.00 beta pl22 release: October 4, 2002 Version 3.00 beta pl21 release: April 15, 2002 @@ -290,4 +290,4 @@ Version 2.11 release: September 19, 1993 Version 2.10 release: September 1, 1993 Version 2.02 release: Late August 1993 Version 2.01 release: Early August 1993 -Version 2.00 release: July 16, 1993 (Initial public release) \ No newline at end of file +Version 2.00 release: July 16, 1993 (Initial public release) diff --git a/FAQ b/FAQ index b043f22..a3c0f04 100644 --- a/FAQ +++ b/FAQ @@ -1,8 +1,8 @@ -Frequently Asked Questions (FAQ) for CircleMUD with Answers +Frequently Asked Questions (FAQ) for tbaMUD with Answers -Updated: Dec 2006 +Updated: Apr 2007 -This file is intended to cover common questions related to CircleMUD. Any +This file is intended to cover common questions related to tbaMUD. Any contributions and corrections are more than welcome. It is currently maintained by Rumble of the Builder Academy. Please stop by the Builder Academy if you have any corrections or additions: builderacademy.net 9091 @@ -23,35 +23,35 @@ Table of Contents 1.3 I want to build my own MUD. Where do I start? - 1.4 What is CircleMUD? + 1.4 What is tbaMUD? - 1.5 What is the history of CircleMUD? + 1.5 What is the history of tbaMUD? 1.6 Where is the original CircleMUD so I can check it out? - 1.7 Will the CircleMUD creators visit my mud? + 1.7 Will the tbaMUD creators visit my mud? 1.8 What is UNIX? 2. Resources - 2.1 Where do I find the source code for CircleMUD? + 2.1 Where do I find the source code for tbaMUD? - 2.2 Where do I find areas, etc. for CircleMUD? + 2.2 Where do I find areas, etc. for tbaMUD? - 2.3 I have questions about CircleMUD. Where should I go? + 2.3 I have questions about tbaMUD. Where should I go? 2.4 How do I subscribe/unsubscribe to the Mailing List? - 2.5 To what platforms has CircleMUD been ported? + 2.5 To what platforms has tbaMUD been ported? - 2.6 How can I submit code or areas for use with CircleMUD? + 2.6 How can I submit code or areas for use with tbaMUD? 2.7 How do I use a patch file and how can I make one? -3. Compiling CircleMUD +3. Compiling tbaMUD 3.1 Why do I get many syntax errors with Sun's ``cc'' compiler? @@ -60,7 +60,7 @@ Table of Contents 3.3 When I try to compile, why do I get a lot of undefined symbols referenced in comm.o for functions like socket, accept, and bind? - 3.4 Every time I try to compile Circle (or any other piece of software) + 3.4 Every time I try to compile tbaMUD (or any other piece of software) under Linux, it gives me errors and says it cannot find include header files in the linux/ and asm/ directories. What can I do? @@ -87,7 +87,7 @@ Table of Contents 3.13 How can I handle directories in C? -4. Running CircleMUD +4. Running tbaMUD 4.1 I typed ``autorun'' but then my terminal just froze. @@ -101,13 +101,13 @@ Table of Contents 4.5 I just got this SIGPIPE, what is it and what Can I Do About It? - 4.6 When I run Circle under Linux, it tells me ``gethostbyaddr: + 4.6 When I run tbaMUD under Linux, it tells me ``gethostbyaddr: connection refused'' when the MUD boots, and then dies. Why? - 4.7 When I run Circle under Windows, it tells me ``Winsock error + 4.7 When I run tbaMUD under Windows, it tells me ``Winsock error #10047'' when the MUD boots, and then dies. Why? - 4.8 When I run Circle under Windows, players can't rent---their + 4.8 When I run tbaMUD under Windows, players can't rent---their equipment is just dropped on the ground, syslogs don't work, so what is the problem? @@ -136,16 +136,16 @@ Table of Contents 4.17 I run my MUD on a unix system and the pfile/rent file works great, but on my home system it's all screwed up. What gives? - 4.18 How do I get the CircleMUD to autoload when the Linux server is + 4.18 How do I get the tbaMUD to autoload when the Linux server is restarted? 4.19 My server shuts down my MUD everytime I logoff. How do I keep the MUD running when I logoff? -5. CircleMUD 3.X Questions +5. tbaMUD Questions - 5.1 Why does CircleMUD use BUF switches all through the code, what's + 5.1 Why does tbaMUD use BUF switches all through the code, what's happening here? 5.2 How do I add a new class? How do I add more levels? etc? @@ -157,17 +157,15 @@ ______________________________________________________________________ 1.1. I've never played a MUD before. What should I do? -Don't try to use your own copy of CircleMUD! There are two levels of MUD +Don't try to use your own copy of tbaMUD! There are two levels of MUD users: players and administrators. Administrators do what you're trying to do now -- get a copy of a MUD's source code, compile it, and run it. Players use MUDs that are being administered by someone else. If you try to actually run a MUD before you've ever played one, you'll get very confused indeed! Your best bet for now is to play someone else's MUD first. There are a large number of excellent MUDs out there already, some of which are -based on CircleMUD code. A good place to start looking is the MUD Connector -at: - -http://mudconnector.com/ +based on tbaMUD code. A good place to start looking is the MUD Connector +at: http://mudconnector.com/ 1.2. I'm new to C and/or coding. What do I do? @@ -214,9 +212,9 @@ By checking the FTP Site under contrib. *know* the FAQ. -1.4. What is CircleMUD? +1.4. What is tbaMUD? -CircleMUD is a DikuMUD derivitave, developed by Jeremy Elson and is from the +TbaMUD is a DikuMUD derivitave, developed by Jeremy Elson as CircleMUD from Gamma v0.0 of DikuMUD created by Hans Henrik Staerfeldt, Katja Nyboe, Tom Madsen, Michael Seifert and Sebastian Hammer at DIKU (Computer Science Instutute at Copenhagen University). Note that CircleMUD is a Diku @@ -225,20 +223,19 @@ notably it cannot be used to make money in ANY way, the original developers' names must be in the login screen and that the credits command always presents the same information, etc. -Quoting from CircleMUD's release.doc: - -CircleMUD is highly developed from the programming side, but highly UNdeveloped +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, races, and areas, Circle will probably disappoint -you severely. Circle still has only the 4 original Diku classes, the original +of spells, skills, classes, and races, tbaMUD will probably disappoint you +severely. 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, well-developed, well-organized "blank slate" MUD on which you -can put your OWN ideas for spells, skills, classes, and areas, then Circle -might be just what you're looking for." +can put your OWN ideas for spells, skills, and classes, then tbaMUD is what +what you are looking for." -1.5. What is the history of CircleMUD? +1.5. What is the history of tbaMUD? +Version 3.51 release: February, 2007 Version 3.5 release: December 2006 Version 3.1 (yes, no beta pl): November 18, 2002 Version 3.00 beta pl22 release: October 4, 2002 @@ -271,21 +268,20 @@ Version 2.01 release: Early August 1993 Version 2.00 release: July 16, 1993 (Initial public release) -1.6. Where is the original CircleMUD so I can check it out? +1.6. Where is the original tbaMUD so I can check it out? The Builder Academy builderacademy.net 9091 -1.7 Will the CircleMUD creators visit my mud? +1.7 Will the tbaMUD creators visit my mud? -While there is a possibility that one (or more) of the CircleMUD creators -will drop by your MUD for a visit, to play, or to simply look around, there -is a slim chance that they will even identify themselves. - -Would you like to see us on your MUD? You won't. We don't want free wizzes -or favors for our work here. In fact, we will state categorically that if -anyone comes on your MUD claiming to be associated with us, they aren't. +While there is a possibility that one (or more) of the tbaMUD creators +will drop by your MUD for a visit, to play, or to simply look around, +there is a slim chance that they will identify themselves. You won't. +We don't want free wizzes or favors for our work here. In fact, we +will state categorically that if anyone comes on your MUD claiming to be +associated with us, they aren't. 1.8. What is UNIX? @@ -308,28 +304,24 @@ and Microsoft does not make a variant. 2. Resources -2.1. Where do I find the source code for CircleMUD? +2.1. Where do I find the source code for tbaMUD? -Circle's complete source code and areas are available for download at: +TbaMUD's complete source code and areas are available for download at: http://cwg.lazuras.org/modules.php?name=Downloads -There is also a CircleMUD Home Page that is outdated at: +There is also a tbaMUD Home Page at: -http://www.circlemud.org/ - -The latest information can be found at: - -http://cwg.lazuras.org/modules.php?name=Forums +http://tbaMUD.com/ -2.2. Where do I find areas, etc. for CircleMUD? +2.2. Where do I find areas, etc. for tbaMUD? -All donated areas have been added to the latest version of CircleMUD. If you +All donated areas have been added to the latest version of tbaMUD. If you wish to donate some of your own work stop by the Builder Academy. -2.3. I have questions about CircleMUD. Where should I go? +2.3. I have questions about tbaMUD. Where should I go? If you have general questions about the MUD such as how to get it running, how to add new spells, how to add new skills, etc., the first place you @@ -349,36 +341,31 @@ http://groups.yahoo.com/group/dg_scripts/ 2.4. How do I subscribe/unsubscribe to the Mailing List? -There is a CircleMUD mailing list for coders, builders, and administrators. -To subscribe, send a message to the list server -with a message body of subscribe circle . To -unsubscribe from the list send a message to with -the words unsubscribe circle as the message body. DO NOT send subscription -or unsubscription requests to the list in general. There are hundreds of -people on the list, and it will only irritate a ton of people who have no -power to remove you from the list. Read the Mailing List FAQ -(http://qsilver.queensu.ca/~fletchra/Circle/list_faq.html) for more -information. +The CWG forums are available at: +http://cwg.lazuras.org/modules.php?name=Forums + +The older and less active CircleMUD mailing list can be found here: +http://post.queensu.ca/cgi-bin/listserv/wa?SUBED1=circle&A=1 -2.5. To what platforms has CircleMUD been ported? +2.5. To what platforms has tbaMUD been ported? -CircleMUD is very portable because it uses the GNU autoconf system, meaning you +TbaMUD is very portable because it uses the GNU autoconf system, meaning you only need to type ``configure'' to have it automatically determine various -features of your system and configure the code accordingly. CircleMUD compiles +features of your system and configure the code accordingly. TbaMUD compiles without changes under most BSD and SVR4 systems, including SunOS, Solaris, Ultrix, IRIX, AIX, Linux, BSD/OS, HP/UX, and others. -CircleMUD has also been ported to various non-UNIX platforms. You can now -compile Circle under OS/2 2.x and 3.x with the OS/2 port of gcc, Windows using -Microsoft Visual C++ version 4.0 or 5.0, Cygwin, Borland (now Inprise) C++ 4.5, +TbaMUD has also been ported to various non-UNIX platforms. You can now +compile it under OS/2 2.x and 3.x with the OS/2 port of gcc, Windows using +Microsoft Visual C++ version 4.0 or 5.0, Cygwin, Borland (now Inprise) C++, Watcom v.11, Cygnus GNU-WIN32, LCC, Macintosh with CodeWarrior, Amiga, and Acorn RiscOS. -2.6. How can I submit code or areas for use with CircleMUD? +2.6. How can I submit code or areas for use with tbaMUD? -Stop by the Builder Academy. builderacademy.net 9091 +Stop by the Builder Academy. builderacademy.net 9091 or visit the CWG forums. 2.7. How do I use a patch file and how can I make one? @@ -429,11 +416,11 @@ o The rest of the lines are just there to give you an idea of where to change. -3. Compiling CircleMUD +3. Compiling tbaMUD 3.1. Why do I get many syntax errors with Sun's ``cc'' compiler? -Because Circle is written in ANSI C, and Sun's standard cc compiler isn't +Because tbaMUD is written in ANSI C, and Sun's standard cc compiler isn't capable of compiling ANSI C code. You can try acc, Sun's ANSI C compiler, but it costs extra money to get it from Sun so your sysadmin may not have installed it. Most don't. The best solution is to get the GCC compiler @@ -444,7 +431,7 @@ have enough time and space. 3.2. Why do I get all sorts of errors with ``crypt'' functions and header files? -(This information applies ONLY to Version 3.0 of the code.) CircleMUD +(This information applies ONLY to Version 3.0 of the code). TbaMUD normally uses the UNIX crypt() function to enrypt players' passwords. Because of export restrictions imposed by the U.S., some systems do not have the crypt() function. ``configure'' will usually be able to figure out @@ -474,7 +461,7 @@ If you're using V2.20 and you have this error, the best thing to do is simply to use V3.0 instead. If you insist on using 2.20, go into the Makefile and search for the comment next to ``SVR4''. -3.4. Every time I try to compile Circle (or any other piece of soft- ware) +3.4. Every time I try to compile tbaMUD (or any other piece of software) under Linux, it gives me errors and says it cannot find include header files in the linux/ and asm/ directories. What can I do? @@ -594,7 +581,7 @@ For example, the equivalents for SYSV are: 3.11. My compiler doesn't have ``strdup()'', what can I do? -Use Circle's built-in str_dup() function instead. +Use tbaMUD's built-in str_dup() function instead. 3.12. I am having trouble with my ``makefile'', what could be the problem? @@ -651,7 +638,7 @@ The dirent structure contains only two useful elements, the file's name Thanks to Daniel Koepke for the above. -4. Running CircleMUD +4. Running tbaMUD 4.1. I typed ``autorun'' but then my terminal just froze. @@ -708,7 +695,7 @@ command. To stop the program from stoping at SIGPIPE, you would give GDB the command `handle SIGPIPE nostop' -4.6. When I run Circle under Linux, it tells me ``gethostbyaddr: con- +4.6. When I run tbaMUD under Linux, it tells me ``gethostbyaddr: con- nection refused'' when the MUD boots, and then dies. Why? You need to make sure you have Networking and TCP/IP support compiled into @@ -726,7 +713,7 @@ questions about which kernel features you want; make sure to answer ``Y'' to ``Networking support'' and ``TCP/IP support''. -4.7. When I run Circle under Windows, it tells me ``Winsock error +4.7. When I run tbaMUD under Windows, it tells me ``Winsock error #10047'' when the MUD boots, and then dies. Why? You need to configure TCP/IP networking from the Network Control Panel, even @@ -736,7 +723,7 @@ select ``Add Protocol'', and under the vendor ``Microsoft'', choose the drivers onto your hard drive. -4.8. When I run Circle under Windows, players can't rent---their +4.8. When I run tbaMUD under Windows, players can't rent---their equipment is just dropped on the ground, syslogs don't work, so what is the problem? @@ -747,7 +734,7 @@ in them.) This is fixed in Circle 3.0 patchlevel 12 and above. Before patchlevel 12, you can fix it simply by manually creating the needed directories: - CD \Circle30bpl11 + CD \tbamud-3.51 cd lib\plrobjs mkdir A-E mkdir F-J diff --git a/README b/README index e1deaf8..38eef2f 100644 --- a/README +++ b/README @@ -1,8 +1,8 @@ tbaMUD README File --------------------- -Updated: Jan 2006 +Updated: Apr 2007 -All requests for help or bugs should be reported there: builderacademy.net 9091. +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: http://www.circlemud.org @@ -51,7 +51,7 @@ WATCOM - If using WATCOM under Windows. WIN - If you are using Windows. -If you are interested in porting CircleMUD to a new platform, see the +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, diff --git a/src/act.informative.c b/src/act.informative.c index ccc81fa..2c7ca15 100644 --- a/src/act.informative.c +++ b/src/act.informative.c @@ -40,7 +40,6 @@ extern char *class_abbrevs[]; /* extern functions */ ACMD(do_action); -ACMD(do_insult); bitvector_t find_class_bitvector(const char *arg); int level_exp(int chclass, int level); char *title_male(int chclass, int level); @@ -994,7 +993,7 @@ int search_help(char *argument, int level) else top = mid - 1; } - return -1; + return NOWHERE; } ACMD(do_help) @@ -1020,9 +1019,8 @@ ACMD(do_help) } space_to_minus(argument); - mid = search_help(argument, GET_LEVEL(ch)); - if (mid < 0) { + if ((mid = search_help(argument, GET_LEVEL(ch))) == NOWHERE) { send_to_char(ch, "There is no help on that word.\r\n"); mudlog(NRM, MAX(LVL_IMPL, GET_INVIS_LEV(ch)), TRUE, "%s tried to get help on %s", GET_NAME(ch), argument); @@ -1968,7 +1966,7 @@ ACMD(do_toggle) if ((result = PRF_TOG_CHK(ch, PRF_AFK))) act("$n is now away from $s keyboard.", TRUE, ch, 0, 0, TO_ROOM); else { - act("$n has return to $s keyboard.", TRUE, ch, 0, 0, TO_ROOM); + act("$n has returned to $s keyboard.", TRUE, ch, 0, 0, TO_ROOM); if (has_mail(GET_IDNUM(ch))) send_to_char(ch, "You have mail waiting.\r\n"); } @@ -2092,7 +2090,7 @@ ACMD(do_commands) if ((complete_cmd_info[i].minimum_level >= LVL_IMMORT) != wizhelp) continue; - if (!wizhelp && socials != (complete_cmd_info[i].command_pointer == do_action || complete_cmd_info[i].command_pointer == do_insult)) + if (!wizhelp && socials != (complete_cmd_info[i].command_pointer == do_action)) continue; if (wizhelp && complete_cmd_info[i].command_pointer == do_action) diff --git a/src/act.social.c b/src/act.social.c index 6862883..41f32e5 100644 --- a/src/act.social.c +++ b/src/act.social.c @@ -23,7 +23,6 @@ /* local functions */ int find_action(int cmd); ACMD(do_action); -ACMD(do_insult); void free_social_messages(void); void free_action(struct social_messg *mess); void free_command_list(void); @@ -108,55 +107,6 @@ ACMD(do_action) } } - - -ACMD(do_insult) -{ - char arg[MAX_INPUT_LENGTH]; - struct char_data *victim; - - one_argument(argument, arg); - - if (*arg) { - if (!(victim = get_char_vis(ch, arg, NULL, FIND_CHAR_ROOM))) - send_to_char(ch, "Can't hear you!\r\n"); - else { - if (victim != ch) { - send_to_char(ch, "You insult %s.\r\n", GET_NAME(victim)); - - switch (rand_number(0, 2)) { - case 0: - if (GET_SEX(ch) == SEX_MALE) { - if (GET_SEX(victim) == SEX_MALE) - act("$n accuses you of fighting like a woman!", FALSE, ch, 0, victim, TO_VICT); - else - act("$n says that women can't fight.", FALSE, ch, 0, victim, TO_VICT); - } else { /* Ch == Woman */ - if (GET_SEX(victim) == SEX_MALE) - act("$n accuses you of having the smallest... (brain?)", - FALSE, ch, 0, victim, TO_VICT); - else - act("$n tells you that you'd lose a beauty contest against a troll.", - FALSE, ch, 0, victim, TO_VICT); - } - break; - case 1: - act("$n calls your mother a bitch!", FALSE, ch, 0, victim, TO_VICT); - break; - default: - act("$n tells you to get lost!", FALSE, ch, 0, victim, TO_VICT); - break; - } /* end switch */ - - act("$n insults $N.", TRUE, ch, 0, victim, TO_NOTVICT); - } else { /* ch == victim */ - send_to_char(ch, "You feel insulted.\r\n"); - } - } - } else - send_to_char(ch, "I'm sure you don't want to insult *everybody*...\r\n"); -} - /* this function adds in the loaded socials and assigns them a command # */ void create_command_list(void) { @@ -237,7 +187,6 @@ void free_social_messages(void) free_action(mess); } free(soc_mess_list); - } void free_action(struct social_messg *mess) { diff --git a/src/constants.c b/src/constants.c index 8a70218..4821a00 100644 --- a/src/constants.c +++ b/src/constants.c @@ -14,7 +14,7 @@ #include "interpreter.h" /* alias_data */ cpp_extern const char *circlemud_version = - "tbaMUD, version 3.51"; + "tbaMUD, version 3.52"; cpp_extern const char *oasisolc_version = "OasisOLC 2.0.6"; diff --git a/src/dg_objcmd.c b/src/dg_objcmd.c index 3b66bf0..e8d441b 100644 --- a/src/dg_objcmd.c +++ b/src/dg_objcmd.c @@ -726,33 +726,40 @@ OCMD(do_osetval) /* submitted by PurpleOnyx - tkhasi@shadowglen.com*/ OCMD(do_oat) { - char location[MAX_INPUT_LENGTH], arg2[MAX_INPUT_LENGTH]; - int vnum = 0, rnum = 0; - obj_data *object; + room_rnum loc = NOWHERE; + struct char_data *ch; + struct obj_data *object; + char arg[MAX_INPUT_LENGTH], *command; - half_chop(argument, location, arg2); + command = any_one_arg(argument, arg); - if (!*location || !*arg2 || !isdigit(*location)) { - obj_log(obj, "oat: bad syntax : %s", argument); - return; + if (!*arg) { + obj_log(obj, "oat called with no args"); + return; } - vnum = atoi(location); - rnum = real_room(vnum); + skip_spaces(&command); - if (rnum == NOWHERE) { - obj_log(obj, "oat: location not found"); - return; + if (!*command) { + obj_log(obj, "oat called without a command"); + return; } - object = read_object(GET_OBJ_VNUM(obj), VIRTUAL); - if (!object) + if (isdigit(*arg)) loc = real_room(atoi(arg)); + else if ((ch = get_char_by_obj(obj, arg))) loc = IN_ROOM(ch); + + if (loc == NOWHERE) { + obj_log(obj, "oat: location not found (%s)", arg); + return; + } + + if (!(object = read_object(GET_OBJ_VNUM(obj), VIRTUAL))) return; - obj_to_room(object, rnum); - obj_command_interpreter(object, arg2); + obj_to_room(object, loc); + obj_command_interpreter(object, command); - if (object->in_room == rnum) + if (object->in_room == loc) extract_obj(object); } diff --git a/src/dg_wldcmd.c b/src/dg_wldcmd.c index d8585b9..ab438b4 100644 --- a/src/dg_wldcmd.c +++ b/src/dg_wldcmd.c @@ -560,26 +560,34 @@ WCMD(do_wdamage) { script_damage(ch, dam); } +WCMD(do_wat) +{ + room_rnum loc = NOWHERE; + struct char_data *ch; + char arg[MAX_INPUT_LENGTH], *command; -WCMD(do_wat) { - char location[MAX_INPUT_LENGTH], arg2[MAX_INPUT_LENGTH]; - int vnum = 0; - room_data *r2; + command = any_one_arg(argument, arg); - half_chop(argument, location, arg2); + if (!*arg) { + wld_log(room, "wat called with no args"); + return; + } - if (!*location || !*arg2 || !isdigit(*location)) { - wld_log(room, "wat: bad syntax"); - return; - } - vnum = atoi(location); - if (NOWHERE == real_room(vnum)) { - wld_log(room, "wat: location not found"); - return; - } + skip_spaces(&command); - r2 = &world[real_room(vnum)]; - wld_command_interpreter(r2, arg2); + if (!*command) { + wld_log(room, "wat called without a command"); + return; + } + + if (isdigit(*arg)) loc = real_room(atoi(arg)); + else if ((ch = get_char_by_room(room, arg))) loc = IN_ROOM(ch); + + if (loc == NOWHERE) { + wld_log(room, "wat: location not found (%s)", arg); + return; + } + wld_command_interpreter(&world[loc], command); } const struct wld_command_info wld_cmd_info[] = { diff --git a/src/hedit.c b/src/hedit.c index a847366..2ab34c0 100644 --- a/src/hedit.c +++ b/src/hedit.c @@ -6,7 +6,6 @@ #include "conf.h" #include "sysdep.h" - #include "structs.h" #include "comm.h" #include "interpreter.h" @@ -75,9 +74,9 @@ void load_help(FILE *fl, char *name) /* If we ran out of buffer space, eat the rest of the entry. */ while (*line != '#') get_one_line(fl, line); - } - if (*line == '#'){ + + if (*line == '#') { if (sscanf(line, "#%d", &el.min_level) != 1){ log("SYSERR: Help entry does not have a min level. %s", key); el.min_level = 0; @@ -113,7 +112,7 @@ ACMD(do_oasis_hedit) int i; if (!can_edit_zone(ch, HEDIT_PERMISSION)) { - send_to_char(ch, "You don't have access to editing Help files.\r\n"); + send_to_char(ch, "You don't have access to editing help files.\r\n"); return; } @@ -140,25 +139,21 @@ ACMD(do_oasis_hedit) 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); } - CREATE(d->olc, struct oasis_olc_data, 1); + CREATE(d->olc, struct oasis_olc_data, 1); OLC_NUM(d) = 0; OLC_STORAGE(d) = strdup(argument); - OLC_ZNUM(d) = search_help(OLC_STORAGE(d), GET_LEVEL(ch)); + OLC_ZNUM(d) = search_help(OLC_STORAGE(d), LVL_IMPL); for(i = 0; i < (int)strlen(argument); i++) argument[i] = toupper(argument[i]); - if (OLC_ZNUM(d) <= 0) + if (OLC_ZNUM(d) == NOWHERE) hedit_setup_new(d, OLC_STORAGE(d)); else hedit_setup_existing(d, OLC_ZNUM(d)); @@ -170,11 +165,7 @@ ACMD(do_oasis_hedit) mudlog(CMP, LVL_IMMORT, TRUE, "OLC: %s starts editing help files.", GET_NAME(d->character)); } - -/*------------------------------------------------------------------------*\ - Utils and exported functions. -\*------------------------------------------------------------------------*/ - +/* Utils and exported functions. */ void hedit_setup_new(struct descriptor_data *d, char *new_key) { CREATE(OLC_HELP(d), struct help_index_element, 1); @@ -186,32 +177,22 @@ void hedit_setup_new(struct descriptor_data *d, char *new_key) OLC_VAL(d) = 0; } -/*------------------------------------------------------------------------*/ - void hedit_setup_existing(struct descriptor_data *d, int rnum) { - /* - * Build a copy of the help entry for editing. - */ + /* Build a copy of the help entry for editing.*/ CREATE(OLC_HELP(d), struct help_index_element, 1); - /* - * Allocate space for all strings. - */ + /* Allocate space for all strings. */ OLC_HELP(d)->keywords = strdup(help_table[rnum].keywords ? help_table[rnum].keywords : "UNDEFINED\r\n"); OLC_HELP(d)->entry = strdup(help_table[rnum].entry ? help_table[rnum].entry : "undefined\r\n"); OLC_HELP(d)->min_level = help_table[rnum].min_level; - /* - * Attach copy of help entry to player's descriptor. - */ + /* Attach copy of help entry to player's descriptor. */ OLC_VAL(d) = 0; hedit_disp_menu(d); } -/*------------------------------------------------------------------------*/ - void hedit_save_internally(struct descriptor_data *d) { struct help_index_element *new_help_table = NULL; @@ -230,7 +211,6 @@ void hedit_save_internally(struct descriptor_data *d) hedit_save_to_disk(d); } -/*------------------------------------------------------------------------*/ void hedit_save_to_disk(struct descriptor_data *d) { FILE *fp; @@ -249,37 +229,26 @@ void hedit_save_to_disk(struct descriptor_data *d) strncpy(buf1, help_table[i].entry ? help_table[i].entry : "Empty\n\r", sizeof(buf1) - 1); strip_cr(buf1); - /* - * Forget making a buffer, lets just write the thing now. - */ + /* Forget making a buffer, lets just write the thing now. */ fprintf(fp, "%s" "#%d\n", buf1, help_table[i].min_level); } - /* - * Write final line and close. - */ + /* Write final line and close. */ fprintf(fp, "$~\n"); fclose(fp); do_reboot(d->character, strcpy(buf, "xhelp"), 0, 0); } -/************************************************************************** - Menu functions - **************************************************************************/ - -/* - * The main menu. - */ +/* Menu functions */ +/* The main menu. */ void hedit_disp_menu(struct descriptor_data *d) { clear_screen(d); write_to_output(d, -"\r\n@c-------------------------------------------------------------------------@n\r\n" - " @CHelpfile Editor@n \r\n" -"@c-------------------------------------------------------------------------@n\r\n" - "@g1@n) Keyword [@G%-12s@g]@n\r\n" - "@g2@n) Entry : \n@y%s\r\n" - "@g3@n) Min Level : @c%d@n\r\n" + "-- Help file editor\r\n" + "1) Keywords : %s\r\n" + "2) Entry :\r\n%s" + "@g3@n) Min Level : @c%d@n\r\n" "@gQ@n) Quit\r\n" "Enter choice : ", @@ -290,17 +259,13 @@ void hedit_disp_menu(struct descriptor_data *d) OLC_MODE(d) = HEDIT_MAIN_MENU; } -/************************************************************************** - The main loop - **************************************************************************/ - +/* The main loop */ void hedit_parse(struct descriptor_data *d, char *arg) { char buf[MAX_STRING_LENGTH]; char *oldtext = '\0'; int number; - switch (OLC_MODE(d)) { case HEDIT_CONFIRM_SAVESTRING: switch (*arg) { @@ -310,16 +275,12 @@ void hedit_parse(struct descriptor_data *d, char *arg) mudlog(TRUE, MAX(LVL_BUILDER, GET_INVIS_LEV(d->character)), CMP, buf); write_to_output(d, "Help files saved to disk.\r\n"); hedit_save_internally(d); - /* - * Do NOT free strings! Just the help structure. - */ + /* Do NOT free strings! Just the help structure. */ cleanup_olc(d, CLEANUP_STRUCTS); break; case 'n': case 'N': - /* - * Free everything up, including strings, etc. - */ + /* Free everything up, including strings, etc. */ cleanup_olc(d, CLEANUP_ALL); break; default: @@ -378,9 +339,7 @@ void hedit_parse(struct descriptor_data *d, char *arg) break; case HEDIT_ENTRY: - /* - * We will NEVER get here, we hope. - */ + /* We will NEVER get here, we hope. */ mudlog(TRUE, LVL_BUILDER, BRF, "SYSERR: Reached HEDIT_ENTRY case in parse_hedit"); break; @@ -395,15 +354,11 @@ void hedit_parse(struct descriptor_data *d, char *arg) return; default: - /* - * We should never get here. - */ + /* We should never get here. */ mudlog(TRUE, LVL_BUILDER, BRF, "SYSERR: Reached default case in parse_hedit"); break; } - /* - * If we get this far, something has been changed. - */ + /* If we get this far, something has been changed. */ OLC_VAL(d) = 1; hedit_disp_menu(d); } @@ -415,7 +370,7 @@ void hedit_string_cleanup(struct descriptor_data *d, int terminator) default: hedit_disp_menu(d); break; - } + } } ACMD(do_helpcheck) @@ -431,7 +386,7 @@ ACMD(do_helpcheck) for (i = 1; *(complete_cmd_info[i].command) != '\n'; i++) { if (complete_cmd_info[i].command_pointer != do_action) { - if (search_help((char *) complete_cmd_info[i].command, GET_LEVEL(ch)) < 0) { + if (search_help((char *) complete_cmd_info[i].command, LVL_IMPL) == NOWHERE) { nlen = snprintf(buf + len, sizeof(buf) - len, " %-20.20s%s", complete_cmd_info[i].command, (++count % 3 ? "|":"\r\n")); if (len + nlen >= sizeof(buf) || nlen < 0) @@ -449,7 +404,6 @@ ACMD(do_helpcheck) *buf = '\0'; } - ACMD(do_hindex) { int len, count = 0, i; @@ -488,19 +442,18 @@ void free_help(struct help_index_element *help) free(help); } - void free_help_table(void) { -int i; + int i; - if (help_table) { - for (i = 0; i <= top_of_h_table; i++) { - if (help_table[i].keywords) - free(help_table[i].keywords); - if (help_table[i].entry && !help_table[i].duplicate) - free(help_table[i].entry); - } - free(help_table); + if (help_table) { + for (i = 0; i <= top_of_h_table; i++) { + if (help_table[i].keywords) + free(help_table[i].keywords); + if (help_table[i].entry && !help_table[i].duplicate) + free(help_table[i].entry); } - top_of_h_table = 0; + free(help_table); + } + top_of_h_table = 0; } diff --git a/src/interpreter.c b/src/interpreter.c index 18336ba..d0a0212 100644 --- a/src/interpreter.c +++ b/src/interpreter.c @@ -118,7 +118,6 @@ ACMD(do_helpcheck); ACMD(do_hide); ACMD(do_hit); ACMD(do_house); -ACMD(do_insult); ACMD(do_inventory); ACMD(do_invis); ACMD(do_kick); @@ -351,7 +350,6 @@ cpp_extern const struct command_info cmd_info[] = { { "imotd" , "imo" , POS_DEAD , do_gen_ps , LVL_IMMORT, SCMD_IMOTD }, { "immlist" , "imm" , POS_DEAD , do_gen_ps , 0, SCMD_IMMLIST }, { "info" , "info" , POS_SLEEPING, do_gen_ps , 0, SCMD_INFO }, - { "insult" , "insult" , POS_RESTING , do_insult , 0, 0 }, { "invis" , "invi" , POS_DEAD , do_invis , LVL_IMMORT, 0 }, { "junk" , "j" , POS_RESTING , do_drop , 0, SCMD_JUNK }, diff --git a/src/pfdefaults.h b/src/pfdefaults.h index 0084aea..f32d608 100644 --- a/src/pfdefaults.h +++ b/src/pfdefaults.h @@ -49,7 +49,7 @@ #define PFDEF_HUNGER 0 #define PFDEF_THIRST 0 #define PFDEF_DRUNK 0 -#define PFDEF_OLC 65535 +#define PFDEF_OLC NOWHERE #define PFDEF_PAGELENGTH 22 #endif diff --git a/src/spell_parser.c b/src/spell_parser.c index 1e95d01..e97bf45 100644 --- a/src/spell_parser.c +++ b/src/spell_parser.c @@ -542,10 +542,12 @@ ACMD(do_cast) } t = strtok(NULL, "\0"); + skip_spaces(&s); + /* spellnum = search_block(s, spells, 0); */ spellnum = find_skill_num(s); - if ((spellnum < 1) || (spellnum > MAX_SPELLS)) { + if ((spellnum < 1) || (spellnum > MAX_SPELLS) || !*s) { send_to_char(ch, "Cast what?!?\r\n"); return; } diff --git a/src/structs.h b/src/structs.h index 55c8ee2..dbbad4f 100644 --- a/src/structs.h +++ b/src/structs.h @@ -17,7 +17,7 @@ * You are supposed to compare this with the macro CIRCLEMUD_VERSION() * in utils.h. See there for usage. */ -#define _CIRCLEMUD 0x030510 /* Major/Minor/Patchlevel - MMmmPP */ +#define _CIRCLEMUD 0x030520 /* Major/Minor/Patchlevel - MMmmPP */ /* * If you want equipment to be automatically equipped to the same place