This is patch03 to PennMUSH 1.8.0. After applying this patch, you will have version 1.8.0p3 To apply this patch, save it to a file in your top-level MUSH directory, and do the following: patch -p1 < 1.8.0-patch03 make clean make install If you use GNU patch 2.2, you probably want the above to be 'patch -b -p1', not just 'patch -p1'. Unix (or cygwin) users need not worry about failed hunks in src/switchinc.c, hdrs/switches.h, hdrs/cmds.h, or hdrs/funs.h. These files are automatically rebuilt on compile. On the off chance they appear not to be, simply rm them and re-run make. Then @shutdown and restart your MUSH. - Alan/Javelin In this patch: Fixes: * 1.8.0p2 fixed ""hi when chat_strip_quote was on, and broke it when it was off. Fixed both ways now. Report by Cheetah@M*U*S*H. * The @break fix in 1.8.0p2 stopped compound break actions in {}'s from working correctly. Fixed now. Report by Kevin@M*U*S*H. [TAP] * @list/list() works right with flags/powers now. * MS VS.NET project file now includes sql.c/h and bufferq.c/h. Report by T'orA@M*U*S*H. * playermem() and objectmem() now return #-1 NO MATCH consistently when they can't match their argument to an object of an appropriate type. Suggested by Cheetah@M*U*S*H. Prereq: 1.8.0p2 *** 1_8_0.25/Patchlevel Wed, 02 Feb 2005 08:57:29 -0600 dunemush (pennmush/5_Patchlevel 1.17.1.11.1.43.1.2 600) --- 1_8_0.32(w)/Patchlevel Sat, 26 Feb 2005 10:12:28 -0600 dunemush (pennmush/5_Patchlevel 1.17.1.11.1.43.1.2 600) *************** *** 1,2 **** Do not edit this file. It is maintained by the official PennMUSH patches. ! This is PennMUSH 1.8.0p2 --- 1,2 ---- Do not edit this file. It is maintained by the official PennMUSH patches. ! This is PennMUSH 1.8.0p3 *** 1_8_0.25/src/wiz.c Tue, 21 Dec 2004 10:20:52 -0600 dunemush (pennmush/b/23_wiz.c 1.44.1.1.1.1.1.2.1.7.1.1.1.1.1.1.1.1.1.1.1.8.1.2.2.2.1.2.1.1.1.1.1.1.1.2.1.1.1.2.2.17.1.9.1.30.1.3.1.2 660) --- 1_8_0.32(w)/src/wiz.c Sat, 26 Feb 2005 10:12:54 -0600 dunemush (pennmush/b/23_wiz.c 1.44.1.1.1.1.1.2.1.7.1.1.1.1.1.1.1.1.1.1.1.8.1.2.2.2.1.2.1.1.1.1.1.1.1.2.1.1.1.2.2.17.1.9.1.30.1.3.1.2.1.1 660) *************** *** 1949,1956 **** else { thing = noisy_match_result(executor, args[0], NOTYPE, MAT_OBJECTS); } ! ! if (!GoodObject(thing) || !Can_Examine(executor, thing)) { safe_str(T(e_perm), buff, bp); return; } --- 1949,1959 ---- else { thing = noisy_match_result(executor, args[0], NOTYPE, MAT_OBJECTS); } ! if (!GoodObject(thing)) { ! safe_str(T(e_match), buff, bp); ! return; ! } ! if (!Can_Examine(executor, thing)) { safe_str(T(e_perm), buff, bp); return; } *************** *** 1978,1984 **** thing = atoi(args[0] + 1); else thing = lookup_player(args[0]); ! if (!GoodObject(thing) || !Can_Examine(executor, thing)) { safe_str(T(e_perm), buff, bp); return; } --- 1981,1991 ---- thing = atoi(args[0] + 1); else thing = lookup_player(args[0]); ! if (!GoodObject(thing) || !IsPlayer(thing)) { ! safe_str(T(e_match), buff, bp); ! return; ! } ! if (!Can_Examine(executor, thing)) { safe_str(T(e_perm), buff, bp); return; } *** 1_8_0.25/src/game.c Thu, 03 Feb 2005 11:50:18 -0600 dunemush (pennmush/c/10_game.c 1.50.1.8.1.1.1.1.2.1.1.1.2.1.1.4.1.1.1.1.1.1.1.1.1.1.2.1.1.2.1.1.1.1.1.1.1.2.1.1.1.2.1.1.1.1.1.1.1.1.1.5.1.3.1.2.1.2.1.1.1.1.1.1.1.1.1.12.1.3.1.7.1.2.2.1.1.32.1.2.2.1 660) --- 1_8_0.32(w)/src/game.c Sat, 26 Feb 2005 10:12:53 -0600 dunemush (pennmush/c/10_game.c 1.50.1.8.1.1.1.1.2.1.1.1.2.1.1.4.1.1.1.1.1.1.1.1.1.1.2.1.1.2.1.1.1.1.1.1.1.2.1.1.1.2.1.1.1.1.1.1.1.1.1.5.1.3.1.2.1.2.1.1.1.1.1.1.1.1.1.12.1.3.1.7.1.2.2.1.1.32.1.2.2.1.1.1 660) *************** *** 2228,2233 **** --- 2228,2237 ---- do_motd(player, MOTD_LIST, ""); else if (string_prefix("attribs", arg)) do_list_attribs(player, lc); + else if (string_prefix("flags", arg)) + do_list_flags("FLAG", player, "", lc, T("Flags")); + else if (string_prefix("powers", arg)) + do_list_flags("POWERS", player, "", lc, T("Powers")); else notify(player, T("I don't understand what you want to @list.")); } *** 1_8_0.25/src/funmisc.c Sat, 10 Jul 2004 09:53:09 -0500 dunemush (pennmush/c/14_funmisc.c 1.30.1.1.1.41 660) --- 1_8_0.32(w)/src/funmisc.c Sat, 26 Feb 2005 10:12:53 -0600 dunemush (pennmush/c/14_funmisc.c 1.30.1.1.1.41.1.2 660) *************** *** 577,582 **** --- 577,586 ---- safe_str(list_commands(), buff, bp); else if (string_prefix("attribs", args[0])) safe_str(list_attribs(), buff, bp); + else if (string_prefix("flags", args[0])) + safe_str(list_all_flags("FLAG", "", executor, 0x3), buff, bp); + else if (string_prefix("powers", args[0])) + safe_str(list_all_flags("POWER", "", executor, 0x3), buff, bp); else safe_str("#-1", buff, bp); return; *************** *** 588,594 **** dbref thing; char save_ccom[BUFFER_LEN]; char *cmdptr; - if (nargs == 1) { thing = executor; cmdptr = args[0]; --- 592,597 ---- *************** *** 615,641 **** enum whichof_t { DO_FIRSTOF, DO_ALLOF }; static void ! do_whichof(char *args[], int nargs, enum whichof_t flag, char *buff, char **bp, ! dbref executor, dbref caller, dbref enactor, PE_Info * pe_info) { int j; char tbuf[BUFFER_LEN], *tp; char const *sp; char sep = ' '; int first = 1; - tbuf[0] = '\0'; - if (flag == DO_ALLOF) { /* The last arg is a delimiter. Parse it in place. */ char insep[BUFFER_LEN]; char *isep = insep; const char *arglast = args[nargs - 1]; ! process_expression(insep, &isep, &arglast, executor, caller, enactor, ! PE_DEFAULT, PT_DEFAULT, pe_info); *isep = '\0'; strcpy(args[nargs - 1], insep); - if (!delim_check(buff, bp, nargs, args, nargs, &sep)) return; nargs--; --- 618,642 ---- enum whichof_t { DO_FIRSTOF, DO_ALLOF }; static void ! do_whichof(char *args[], int nargs, enum whichof_t flag, ! char *buff, char **bp, dbref executor, ! dbref caller, dbref enactor, PE_Info * pe_info) { int j; char tbuf[BUFFER_LEN], *tp; char const *sp; char sep = ' '; int first = 1; tbuf[0] = '\0'; if (flag == DO_ALLOF) { /* The last arg is a delimiter. Parse it in place. */ char insep[BUFFER_LEN]; char *isep = insep; const char *arglast = args[nargs - 1]; ! process_expression(insep, &isep, &arglast, executor, ! caller, enactor, PE_DEFAULT, PT_DEFAULT, pe_info); *isep = '\0'; strcpy(args[nargs - 1], insep); if (!delim_check(buff, bp, nargs, args, nargs, &sep)) return; nargs--; *************** *** 644,660 **** for (j = 0; j < nargs; j++) { tp = tbuf; sp = args[j]; ! process_expression(tbuf, &tp, &sp, executor, caller, enactor, ! PE_DEFAULT, PT_DEFAULT, pe_info); *tp = '\0'; if (parse_boolean(tbuf)) { if (!first) { safe_chr(sep, buff, bp); } else first = 0; - safe_str(tbuf, buff, bp); - if (flag == DO_FIRSTOF) return; } --- 645,659 ---- for (j = 0; j < nargs; j++) { tp = tbuf; sp = args[j]; ! process_expression(tbuf, &tp, &sp, executor, caller, ! enactor, PE_DEFAULT, PT_DEFAULT, pe_info); *tp = '\0'; if (parse_boolean(tbuf)) { if (!first) { safe_chr(sep, buff, bp); } else first = 0; safe_str(tbuf, buff, bp); if (flag == DO_FIRSTOF) return; } *************** *** 666,679 **** /* ARGSUSED */ FUNCTION(fun_firstof) { ! do_whichof(args, nargs, DO_FIRSTOF, buff, bp, executor, caller, enactor, ! pe_info); } /* ARGSUSED */ FUNCTION(fun_allof) { ! do_whichof(args, nargs, DO_ALLOF, buff, bp, executor, caller, enactor, ! pe_info); } --- 665,678 ---- /* ARGSUSED */ FUNCTION(fun_firstof) { ! do_whichof(args, nargs, DO_FIRSTOF, buff, bp, executor, ! caller, enactor, pe_info); } /* ARGSUSED */ FUNCTION(fun_allof) { ! do_whichof(args, nargs, DO_ALLOF, buff, bp, executor, ! caller, enactor, pe_info); } *** 1_8_0.25/src/command.c Wed, 02 Feb 2005 08:57:29 -0600 dunemush (pennmush/c/36_command.c 1.56.1.1.1.1.1.1.1.2.1.1.1.1.1.5.1.2.1.1.1.1.1.2.1.3.1.10.1.1.3.74.1.5 660) --- 1_8_0.32(w)/src/command.c Sat, 26 Feb 2005 10:12:52 -0600 dunemush (pennmush/c/36_command.c 1.56.1.1.1.1.1.1.1.2.1.1.1.1.1.5.1.2.1.1.1.1.1.2.1.3.1.10.1.1.3.74.1.6 660) *************** *** 898,904 **** return NULL; case SAY_TOKEN: replacer = "SAY"; ! p--; /* Since 'say' strips out the '"' */ break; case POSE_TOKEN: replacer = "POSE"; --- 898,905 ---- return NULL; case SAY_TOKEN: replacer = "SAY"; ! if (CHAT_STRIP_QUOTE) ! p--; /* Since 'say' strips out the '"' */ break; case POSE_TOKEN: replacer = "POSE"; *** 1_8_0.25/src/cmds.c Sat, 09 Oct 2004 15:42:59 -0500 dunemush (pennmush/c/37_cmds.c 1.33.1.1.1.2.1.2.2.3.1.1.1.2.1.1.1.3.1.8.1.1.2.2.2.20.1.3.1.7.1.2.1.20.1.2 660) --- 1_8_0.32(w)/src/cmds.c Sat, 26 Feb 2005 10:12:52 -0600 dunemush (pennmush/c/37_cmds.c 1.33.1.1.1.2.1.2.2.3.1.1.1.2.1.1.1.3.1.8.1.1.2.2.2.20.1.3.1.7.1.2.1.20.1.2.1.1 660) *************** *** 95,110 **** COMMAND (cmd_break) { if (parse_boolean(arg_left)) { global_eval_context.break_called = 1; ! if (arg_right && *arg_right) ! strcpy(global_eval_context.break_replace, arg_right); } } COMMAND (cmd_assert) { if (!parse_boolean(arg_left)) { global_eval_context.break_called = 1; ! if (arg_right && *arg_right) ! strcpy(global_eval_context.break_replace, arg_right); } } --- 95,122 ---- COMMAND (cmd_break) { if (parse_boolean(arg_left)) { global_eval_context.break_called = 1; ! if (arg_right && *arg_right) { ! char const *sp = arg_right; ! char *bp = global_eval_context.break_replace; ! process_expression(global_eval_context.break_replace, &bp, &sp, ! player, player, cause, ! PE_COMMAND_BRACES, PT_DEFAULT, NULL); ! *bp++ = '\0'; ! } } } COMMAND (cmd_assert) { if (!parse_boolean(arg_left)) { global_eval_context.break_called = 1; ! if (arg_right && *arg_right) { ! char const *sp = arg_right; ! char *bp = global_eval_context.break_replace; ! process_expression(global_eval_context.break_replace, &bp, &sp, ! player, player, cause, ! PE_COMMAND_BRACES, PT_DEFAULT, NULL); ! *bp++ = '\0'; ! } } } *** 1_8_0.25/hdrs/version.h Wed, 02 Feb 2005 08:57:29 -0600 dunemush (pennmush/c/47_version.h 1.32.1.2.1.7.1.9.1.1.1.17.1.45.1.3 660) --- 1_8_0.32(w)/hdrs/version.h Sat, 26 Feb 2005 10:12:55 -0600 dunemush (pennmush/c/47_version.h 1.32.1.2.1.7.1.9.1.1.1.17.1.45.1.3 660) *************** *** 1,4 **** #define VERSION "1.8.0" ! #define PATCHLEVEL "2" ! #define PATCHDATE "[02/02/2005]" ! #define NUMVERSION 001008000002 --- 1,4 ---- #define VERSION "1.8.0" ! #define PATCHLEVEL "3" ! #define PATCHDATE "[02/26/2005]" ! #define NUMVERSION 001008000003 *** 1_8_0.25/hdrs/parse.h Thu, 02 Sep 2004 11:04:56 -0500 dunemush (pennmush/c/51_parse.h 1.10.1.15 660) --- 1_8_0.32(w)/hdrs/parse.h Sat, 26 Feb 2005 10:12:54 -0600 dunemush (pennmush/c/51_parse.h 1.10.1.16 660) *************** *** 188,193 **** --- 188,197 ---- * * PE_STRIP_BRACES strips off top-level braces. * + * PE_COMMAND_BRACES strips off only completely enclosing braces, + * suitable for trimming command lists given to noparse commands like + * @switch or @break. + * * PE_EVALUATE allows %-substitutions, []-evaluation, function evaluation, * and \-stripping. * *** 1_8_0.25/win32/msvc.net/pennmush.vcproj Sun, 08 Aug 2004 16:10:12 -0500 dunemush (pennmush/g/18_pennmush.v 1.8 600) --- 1_8_0.32(w)/win32/msvc.net/pennmush.vcproj Wed, 23 Feb 2005 10:10:36 -0600 dunemush (pennmush/g/18_pennmush.v 1.9 600) *************** *** 139,144 **** --- 139,150 ---- RelativePath=".\src\bsd.c"> + + + + + + + + *** 1_8_0.25/game/txt/hlp/pennvOLD.hlp Mon, 31 Jan 2005 14:14:40 -0600 dunemush (pennmush/g/30_pennvOLD.h 1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.9.1.2.1.5.1.1 660) --- 1_8_0.32(w)/game/txt/hlp/pennvOLD.hlp Sat, 26 Feb 2005 10:12:58 -0600 dunemush (pennmush/g/30_pennvOLD.h 1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.9.1.2.1.5.1.1.1.1 660) *************** *** 4417,4423 **** For information on a specific patchlevel of one of the versions listed, type 'help p'. For example, 'help 1.7.2p3' ! 1.8.0: 0, 1, 2 1.7.7: 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40 --- 4417,4423 ---- For information on a specific patchlevel of one of the versions listed, type 'help p'. For example, 'help 1.7.2p3' ! 1.8.0: 0, 1, 2, 3 1.7.7: 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40 *** 1_8_0.25/game/txt/hlp/pennv180.hlp Thu, 03 Feb 2005 11:50:18 -0600 dunemush (pennmush/h/28_pennv180.h 1.1.1.2.1.1.1.2 660) --- 1_8_0.32(w)/game/txt/hlp/pennv180.hlp Sat, 26 Feb 2005 10:12:58 -0600 dunemush (pennmush/h/28_pennv180.h 1.1.1.2.1.1.1.2.1.1.1.1.1.2.1.1 660) *************** *** 1,4 **** ! & 1.8.0p2 & changes This is a list of changes in this patchlevel which are probably of interest to players. More information about new commands and functions --- 1,4 ---- ! & 1.8.0p3 & changes This is a list of changes in this patchlevel which are probably of interest to players. More information about new commands and functions *************** *** 11,16 **** --- 11,33 ---- A list of the patchlevels associated with each release can be read in 'help patchlevels'. + Version 1.8.0 patchlevel 3 February 26, 2005 + + Fixes: + * 1.8.0p2 fixed ""hi when chat_strip_quote was on, and broke it + when it was off. Fixed both ways now. Report by Cheetah@M*U*S*H. + * The @break fix in 1.8.0p2 stopped compound break actions + in {}'s from working correctly. Fixed now. Report by + Kevin@M*U*S*H. [TAP] + * @list/list() works right with flags/powers now. + * MS VS.NET project file now includes sql.c/h and bufferq.c/h. + Report by T'orA@M*U*S*H. + * playermem() and objectmem() now return #-1 NO MATCH consistently + when they can't match their argument to an object of an appropriate + type. Suggested by Cheetah@M*U*S*H. + + + & 1.8.0p2 Version 1.8.0 patchlevel 2 February 2, 2005 Fixes: *** 1_8_0.25/CHANGES.180 Thu, 03 Feb 2005 11:50:18 -0600 dunemush (pennmush/h/21_CHANGES.18 1.16 600) --- 1_8_0.32(w)/CHANGES.180 Sat, 26 Feb 2005 10:12:44 -0600 dunemush (pennmush/h/21_CHANGES.18 1.21 600) *************** *** 12,17 **** --- 12,33 ---- ========================================================================== + Version 1.8.0 patchlevel 3 February 26, 2005 + + Fixes: + * 1.8.0p2 fixed ""hi when chat_strip_quote was on, and broke it + when it was off. Fixed both ways now. Report by Cheetah@M*U*S*H. + * The @break fix in 1.8.0p2 stopped compound break actions + in {}'s from working correctly. Fixed now. Report by + Kevin@M*U*S*H. [TAP] + * @list/list() works right with flags/powers now. + * MS VS.NET project file now includes sql.c/h and bufferq.c/h. + Report by T'orA@M*U*S*H. + * playermem() and objectmem() now return #-1 NO MATCH consistently + when they can't match their argument to an object of an appropriate + type. Suggested by Cheetah@M*U*S*H. + + Version 1.8.0 patchlevel 2 February 2, 2005 Fixes: