This is patch07 to PennMUSH 1.7.4. After applying this patch, you will have version 1.7.4p7 To apply this patch, save it to a file in your top-level MUSH directory, and do the following: patch -p1 < 1.7.4-patch07 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. Then @shutdown and restart your MUSH. - Alan/Javelin In this patch: Major changes: * %r can now evaluate to one character or two, based on a new config option, newline_one_char, which defaults to being yes. This allows %r to be used as a list delimiter. However, this may break softcode which expects strlen(%r) to be 2, but it's probably smarter to fix the softcode than turn off this option. [sw] * If a command and a standard attribute have the same name, the command takes precedence. So if you have an @attribute named "PEMIT", @pemit me=foo will do the command, not set the attribute. [SW] Minor changes: * When someone attempts to create too many attributes on an object, the log indicates who and which object. Suggested by Frob@Battlestar Galactica:TSC. * Buncha tprintfs replaced with notify_formats. [SW] * New local_connect() and local_disconnect() hooks in local.dst. Suggested by Eratl@M*U*S*H. * lookup_player now deals with player names prefixed with "*", so a bunch of commands like @newpassword will now treat those arguments. Suggested by Glonk@GlonkMUSH. * Make is more verbose about alerting you to changes in the src/*.dst files. * The message for undestroying someone else's object more closely matches the destroy message. Suggested by Noltar@Korongil. * Server output that used to be tagged with "PRE" for Pueblo is now tagged with "SAMP", because the original Pueblo client did not correctly handle "
\n" in PRE, and the newer clients that are supporting the pueblo protocol, like MUSHclient, do handle it correctly, causing an incompatibility problem. Our workaround is to avoid PRE. Reported by [NJG]. * The WHO list output is tagged for Pueblo to get appropriate newline handling. [NJG] * help @mail mentions help @malias. Suggested by Trispis@M*U*S*H. * Matching code now treats players you can't see like disconnected players when matching *player. Reported by Walker@M*U*S*H. * @newpassword now confirms whose password was changed. Suggested by Xyrxwyrth@M*U*S*H. * @chan/who and cwho() now include objects on the channel. Suggested by Glonk@GlonkMUSH. * q-register lookup is slightly faster. [SW] * Floating-point numbers in exponential format (6.02e23) are always accepted, not just when tiny_math is set. [SW] * isint() and isnum() ignore the null_eq_zero option, since they already ignore tiny_math. [SW] * time() and convsecs() take an optional timezone argument that, if 'UTC', makes them act the same way as utctime() and convutcsecs(). From MUX2. [SW] Fixes: * Additional range checking to avoid some bugs reported by Alierak. [SW] * Fix to buglet in @name error with PLAYER_NAME_SPACES reported by Luke@M*U*S*H. * Typo in @name error message fixed by Luke@M*U*S*H. * One could @pcreate players past the hard db limit. Reported by Z@Korongil. * Typos in config_h.SH and options.h.dist fixed by Oriens@Alexandria. * Under some conditions, you could double-join a channel. Reported by Xyrxwyrth@M*U*S*H, investigated by Steven@Champions. * Error message for @chan/desc improved. Reported by Oriens@Alexandria. * Typo in alias.cnf fixed by rodregis@M*U*S*H. * @mvattr sometimes failed to remove the old attrib, when it was a standard attrib that could be abbreviated (@mvattr a/desc=b). Fixed by Walker@M*U*S*H. * Some english-matching (like 'get 1st foo') would fail. Reported by Mystery8. * Typo in help @verb reported by Greck. * MacOS tweaks. [DW] * Better detection of numbers that are too big. [SW] * Wizards could crash the server by entering objects in their own inventory. Reported by Howie@New Frontiers. Prereq: 1.7.4p6 *** 1_7_4.101/Patchlevel Thu, 31 May 2001 15:33:03 -0500 dunemush (pennmush/5_Patchlevel 1.24 600) --- 1_7_4.129(w)/Patchlevel Mon, 02 Jul 2001 10:20:22 -0500 dunemush (pennmush/5_Patchlevel 1.25 600) *************** *** 1,2 **** Do not edit this file. It is maintained by the official PennMUSH patches. ! This is PennMUSH 1.7.4p6 --- 1,2 ---- Do not edit this file. It is maintained by the official PennMUSH patches. ! This is PennMUSH 1.7.4p7 *** 1_7_4.101/README Mon, 12 Mar 2001 14:44:39 -0600 dunemush (pennmush/4_README 1.7 600) --- 1_7_4.129(w)/README Thu, 14 Jun 2001 18:21:54 -0500 dunemush (pennmush/4_README 1.8 600) *************** *** 523,528 **** --- 523,529 ---- SGI Indy Irix 5.x and 6.x HP 9000 series HP-UX 8.x IBM RS/6000 AIX 3.2 + IBM S/390 Linux Novell Unixware SVR4 Linux FreeBSD *** 1_7_4.101/CHANGES Mon, 11 Jun 2001 10:50:03 -0500 dunemush (pennmush/8_CHANGES 1.216 600) --- 1_7_4.129(w)/CHANGES Tue, 10 Jul 2001 14:23:12 -0500 dunemush (pennmush/8_CHANGES 1.219.1.16 600) *************** *** 7,13 **** [TN] is Thorvald Natvig, a PennMUSH developer (aka Trivian) [TAP] is T. Alexander Popiel, a PennMUSH developer (aka Talek) [SW] is Shawn Wagner, a PennMUSH developer (aka Raevnos) ! [LdW] is Luuk de Waard, a PennMUSH developer (aka Halatir) [RLM] is Ralph Melton, a former PennMUSH developer [NJG] is Nick Gammon, the Win32 porter [DW] is Dan Williams, the MacOS porter --- 7,13 ---- [TN] is Thorvald Natvig, a PennMUSH developer (aka Trivian) [TAP] is T. Alexander Popiel, a PennMUSH developer (aka Talek) [SW] is Shawn Wagner, a PennMUSH developer (aka Raevnos) ! [LdW] is Luuk de Waard, a former PennMUSH developer (aka Halatir) [RLM] is Ralph Melton, a former PennMUSH developer [NJG] is Nick Gammon, the Win32 porter [DW] is Dan Williams, the MacOS porter *************** *** 17,22 **** --- 17,92 ---- ========================================================================== + Version 1.7.4 patchlevel 7 July 02, 2001 + + Major changes: + * %r can now evaluate to one character or two, based on a new config + option, newline_one_char, which defaults to being yes. This allows + %r to be used as a list delimiter. However, this may + break softcode which expects strlen(%r) to be 2, but it's probably + smarter to fix the softcode than turn off this option. [sw] + * If a command and a standard attribute have the same name, the + command takes precedence. So if you have an @attribute named + "PEMIT", @pemit me=foo will do the command, not set the attribute. [SW] + Minor changes: + * When someone attempts to create too many attributes on an object, + the log indicates who and which object. Suggested by Frob@Battlestar + Galactica:TSC. + * Buncha tprintfs replaced with notify_formats. [SW] + * New local_connect() and local_disconnect() hooks in local.dst. + Suggested by Eratl@M*U*S*H. + * lookup_player now deals with player names prefixed with "*", + so a bunch of commands like @newpassword will now treat those + arguments. Suggested by Glonk@GlonkMUSH. + * Make is more verbose about alerting you to changes in the + src/*.dst files. + * The message for undestroying someone else's object more closely matches + the destroy message. Suggested by Noltar@Korongil. + * Server output that used to be tagged with "PRE" for Pueblo is now + tagged with "SAMP", because the original Pueblo client did not correctly + handle "
\n" in PRE, and the newer clients that are supporting + the pueblo protocol, like MUSHclient, do handle it correctly, causing + an incompatibility problem. Our workaround is to avoid PRE. + Reported by [NJG]. + * The WHO list output is tagged for Pueblo to get + appropriate newline handling. [NJG] + * help @mail mentions help @malias. Suggested by Trispis@M*U*S*H. + * Matching code now treats players you can't see like disconnected players + when matching *player. Reported by Walker@M*U*S*H. + * @newpassword now confirms whose password was changed. Suggested by + Xyrxwyrth@M*U*S*H. + * @chan/who and cwho() now include objects on the channel. Suggested by + Glonk@GlonkMUSH. + * q-register lookup is slightly faster. [SW] + * Floating-point numbers in exponential format (6.02e23) are always + accepted, not just when tiny_math is set. [SW] + * isint() and isnum() ignore the null_eq_zero option, since they already + ignore tiny_math. [SW] + * time() and convsecs() take an optional timezone argument that, + if 'UTC', makes them act the same way as utctime() and convutcsecs(). + From MUX2. [SW] + Fixes: + * Additional range checking to avoid some bugs reported by Alierak. [SW] + * Fix to buglet in @name error with PLAYER_NAME_SPACES reported by + Luke@M*U*S*H. + * Typo in @name error message fixed by Luke@M*U*S*H. + * One could @pcreate players past the hard db limit. Reported by Z@Korongil. + * Typos in config_h.SH and options.h.dist fixed by Oriens@Alexandria. + * Under some conditions, you could double-join a channel. + Reported by Xyrxwyrth@M*U*S*H, investigated by Steven@Champions. + * Error message for @chan/desc improved. Reported by Oriens@Alexandria. + * Typo in alias.cnf fixed by rodregis@M*U*S*H. + * @mvattr sometimes failed to remove the old attrib, when it was a + standard attrib that could be abbreviated (@mvattr a/desc=b). + Fixed by Walker@M*U*S*H. + * Some english-matching (like 'get 1st foo') would fail. Reported by + Mystery8. + * Typo in help @verb reported by Greck. + * MacOS tweaks. [DW] + * Better detection of numbers that are too big. [SW] + * Wizards could crash the server by entering objects in their own + inventory. Reported by Howie@New Frontiers. + Version 1.7.4 patchlevel 6 June 11, 2001 Minor changes: *************** *** 84,90 **** * Paging a page-locked player didn't give the appropriate messages. Reported by Steven@Champions. * left, right, and mid are now ansi-aware. Patch by Luke@M*U*S*H. ! * Help fixes to lexits(), name() (Noltar@Korongil), 1.7.4p3 (Matrim@M*U*S*H). * win32/cmds.h updated with prototypes for dismiss and desert by Noltar@Korongil. And hdrs/externs.h, too, by [SW]. * Memory leak with using alphabetic q-registers in queued commands fixed. --- 154,160 ---- * Paging a page-locked player didn't give the appropriate messages. Reported by Steven@Champions. * left, right, and mid are now ansi-aware. Patch by Luke@M*U*S*H. ! * Help fixes to lexits(), name() (Noltar@Korongil), 1.7.4p3 (Z@Korongil). * win32/cmds.h updated with prototypes for dismiss and desert by Noltar@Korongil. And hdrs/externs.h, too, by [SW]. * Memory leak with using alphabetic q-registers in queued commands fixed. *************** *** 112,118 **** * Distributed register.txt file is now more descriptive. Suggested by Xyrxwyrth@M*U*S*H. * The ctime(), mtime(), restarttime(), and starttime() functions now ! return 2-digit days (01 vs. 1). Reported by Matrim@M*U*S*H. * @malias output uses the alias token more consistently. Suggested by Kyieren@M*U*S*H. * hints/solaris_2.sh modified a bit. --- 182,188 ---- * Distributed register.txt file is now more descriptive. Suggested by Xyrxwyrth@M*U*S*H. * The ctime(), mtime(), restarttime(), and starttime() functions now ! return 2-digit days (01 vs. 1). Reported by Z@Korongil. * @malias output uses the alias token more consistently. Suggested by Kyieren@M*U*S*H. * hints/solaris_2.sh modified a bit. *************** *** 135,141 **** the use of *playername to match the player (e.g. mail(), hidden()). (This is generally more consistent). Minor changes: ! * @tr of a nonexistent attribute now reports that. Report by Matrim@M*U*S*H. * TEL_OK is an alias for JUMP_OK. Suggested by Kyieren@M*U*S*H. * Added 'help i18n' (aka help translation). Suggested by Kyieren@M*U*S*H. * When you use 'teach' and, as a result, run the command you are teaching, --- 205,211 ---- the use of *playername to match the player (e.g. mail(), hidden()). (This is generally more consistent). Minor changes: ! * @tr of a nonexistent attribute now reports that. Report by Z@Korongil. * TEL_OK is an alias for JUMP_OK. Suggested by Kyieren@M*U*S*H. * Added 'help i18n' (aka help translation). Suggested by Kyieren@M*U*S*H. * When you use 'teach' and, as a result, run the command you are teaching, *** 1_7_4.101/game/txt/hlp/pennvers.hlp Mon, 11 Jun 2001 10:50:03 -0500 dunemush (pennmush/12_pennvers.h 1.166 600) --- 1_7_4.129(w)/game/txt/hlp/pennvers.hlp Tue, 10 Jul 2001 14:23:14 -0500 dunemush (pennmush/12_pennvers.h 1.169.1.15 600) *************** *** 1,5 **** & changes ! & 1.7.4p6 This is a list of changes in this patchlevel which are probably of interest to players. More information about new commands and functions can probably be gotten via 'help '. 'help credits' --- 1,5 ---- & changes ! & 1.7.4p7 This is a list of changes in this patchlevel which are probably of interest to players. More information about new commands and functions can probably be gotten via 'help '. 'help credits' *************** *** 11,16 **** --- 11,87 ---- A list of the patchlevels associated with each release can be read in 'help patchlevels'. + Version 1.7.4 patchlevel 7 July 02, 2001 + + Major changes: + * %r can now evaluate to one character or two, based on a new config + option, newline_one_char, which defaults to being yes. This allows + %r to be used as a list delimiter. However, this may + break softcode which expects strlen(%r) to be 2, but it's probably + smarter to fix the softcode than turn off this option. [sw] + * If a command and a standard attribute have the same name, the + command takes precedence. So if you have an @attribute named + "PEMIT", @pemit me=foo will do the command, not set the attribute. [SW] + Minor changes: + * When someone attempts to create too many attributes on an object, + the log indicates who and which object. Suggested by Frob@Battlestar + Galactica:TSC. + * Buncha tprintfs replaced with notify_formats. [SW] + * New local_connect() and local_disconnect() hooks in local.dst. + Suggested by Eratl@M*U*S*H. + * lookup_player now deals with player names prefixed with "*", + so a bunch of commands like @newpassword will now treat those + arguments. Suggested by Glonk@GlonkMUSH. + * Make is more verbose about alerting you to changes in the + src/*.dst files. + * The message for undestroying someone else's object more closely matches + the destroy message. Suggested by Noltar@Korongil. + * Server output that used to be tagged with "PRE" for Pueblo is now + tagged with "SAMP", because the original Pueblo client did not correctly + handle "
\n" in PRE, and the newer clients that are supporting + the pueblo protocol, like MUSHclient, do handle it correctly, causing + an incompatibility problem. Our workaround is to avoid PRE. + Reported by [NJG]. + * The WHO list output is tagged for Pueblo to get + appropriate newline handling. [NJG] + * help @mail mentions help @malias. Suggested by Trispis@M*U*S*H. + * Matching code now treats players you can't see like disconnected players + when matching *player. Reported by Walker@M*U*S*H. + * @newpassword now confirms whose password was changed. Suggested by + Xyrxwyrth@M*U*S*H. + * @chan/who and cwho() now include objects on the channel. Suggested by + Glonk@GlonkMUSH. + * q-register lookup is slightly faster. [SW] + * Floating-point numbers in exponential format (6.02e23) are always + accepted, not just when tiny_math is set. [SW] + * isint() and isnum() ignore the null_eq_zero option, since they already + ignore tiny_math. [SW] + * time() and convsecs() take an optional timezone argument that, + if 'UTC', makes them act the same way as utctime() and convutcsecs(). + From MUX2. [SW] + Fixes: + * Additional range checking to avoid some bugs reported by Alierak. [SW] + * Fix to buglet in @name error with PLAYER_NAME_SPACES reported by + Luke@M*U*S*H. + * Typo in @name error message fixed by Luke@M*U*S*H. + * One could @pcreate players past the hard db limit. Reported by Z@Korongil. + * Typos in config_h.SH and options.h.dist fixed by Oriens@Alexandria. + * Under some conditions, you could double-join a channel. + Reported by Xyrxwyrth@M*U*S*H, investigated by Steven@Champions. + * Error message for @chan/desc improved. Reported by Oriens@Alexandria. + * Typo in alias.cnf fixed by rodregis@M*U*S*H. + * @mvattr sometimes failed to remove the old attrib, when it was a + standard attrib that could be abbreviated (@mvattr a/desc=b). + Fixed by Walker@M*U*S*H. + * Some english-matching (like 'get 1st foo') would fail. Reported by + Mystery8. + * Typo in help @verb reported by Greck. + * MacOS tweaks. [DW] + * Better detection of numbers that are too big. [SW] + * Wizards could crash the server by entering objects in their own + inventory. Reported by Howie@New Frontiers. + + & 1.7.4p6 Version 1.7.4 patchlevel 6 June 11, 2001 Minor changes: *************** *** 80,86 **** * Paging a page-locked player didn't give the appropriate messages. Reported by Steven@Champions. * left, right, and mid are now ansi-aware. Patch by Luke@M*U*S*H. ! * Help fixes to lexits(), name() (Noltar@Korongil), 1.7.4p3 (Matrim@M*U*S*H). * win32/cmds.h updated with prototypes for dismiss and desert by Noltar@Korongil. And hdrs/externs.h, too, by [SW]. * Memory leak with using alphabetic q-registers in queued commands fixed. --- 151,157 ---- * Paging a page-locked player didn't give the appropriate messages. Reported by Steven@Champions. * left, right, and mid are now ansi-aware. Patch by Luke@M*U*S*H. ! * Help fixes to lexits(), name() (Noltar@Korongil), 1.7.4p3 (Z@Korongil). * win32/cmds.h updated with prototypes for dismiss and desert by Noltar@Korongil. And hdrs/externs.h, too, by [SW]. * Memory leak with using alphabetic q-registers in queued commands fixed. *************** *** 109,115 **** * Distributed register.txt file is now more descriptive. Suggested by Xyrxwyrth@M*U*S*H. * The ctime(), mtime(), restarttime(), and starttime() functions now ! return 2-digit days (01 vs. 1). Reported by Matrim@M*U*S*H. * @malias output uses the alias token more consistently. Suggested by Kyieren@M*U*S*H. * hints/solaris_2.sh modified a bit. --- 180,186 ---- * Distributed register.txt file is now more descriptive. Suggested by Xyrxwyrth@M*U*S*H. * The ctime(), mtime(), restarttime(), and starttime() functions now ! return 2-digit days (01 vs. 1). Reported by Z@Korongil. * @malias output uses the alias token more consistently. Suggested by Kyieren@M*U*S*H. * hints/solaris_2.sh modified a bit. *************** *** 133,139 **** the use of *playername to match the player (e.g. mail(), hidden()). (This is generally more consistent). Minor changes: ! * @tr of a nonexistent attribute now reports that. Report by Matrim@M*U*S*H. * TEL_OK is an alias for JUMP_OK. Suggested by Kyieren@M*U*S*H. * Added 'help i18n' (aka help translation). Suggested by Kyieren@M*U*S*H. * When you use 'teach' and, as a result, run the command you are teaching, --- 204,210 ---- the use of *playername to match the player (e.g. mail(), hidden()). (This is generally more consistent). Minor changes: ! * @tr of a nonexistent attribute now reports that. Report by Z@Korongil. * TEL_OK is an alias for JUMP_OK. Suggested by Kyieren@M*U*S*H. * Added 'help i18n' (aka help translation). Suggested by Kyieren@M*U*S*H. * When you use 'teach' and, as a result, run the command you are teaching, *************** *** 4700,4706 **** For information on a specific patchlevel of one of the versions listed, type 'help p'. For example, 'help 1.7.2p3' ! 1.7.4: 0, 1, 2, 3, 4, 5, 6 1.7.3: 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14 1.7.2: 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 --- 4771,4777 ---- For information on a specific patchlevel of one of the versions listed, type 'help p'. For example, 'help 1.7.2p3' ! 1.7.4: 0, 1, 2, 3, 4, 5, 6, 7 1.7.3: 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14 1.7.2: 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 *** 1_7_4.101/game/txt/hlp/pennmail.hlp Fri, 23 Mar 2001 10:25:52 -0600 dunemush (pennmush/15_pennmail.h 1.7 600) --- 1_7_4.129(w)/game/txt/hlp/pennmail.hlp Fri, 29 Jun 2001 12:32:44 -0500 dunemush (pennmush/15_pennmail.h 1.8 600) *************** *** 22,29 **** Message #'s, in which case you send to the sender of that message. An alias name (see help @malias) ! See the following topics: ! mail-sending mail-reading mail-folders mail-other mail-admin & mail-reading @mail --- 22,29 ---- Message #'s, in which case you send to the sender of that message. An alias name (see help @malias) ! See also the following topics: mail-sending mail-reading ! mail-folders mail-other mail-admin @malias & mail-reading @mail *** 1_7_4.101/game/txt/hlp/pennfunc.hlp Fri, 08 Jun 2001 14:14:28 -0500 dunemush (pennmush/16_pennfunc.h 1.2.1.50.1.1.1.1.1.2.1.7.1.1 600) --- 1_7_4.129(w)/game/txt/hlp/pennfunc.hlp Sat, 07 Jul 2001 20:57:46 -0500 dunemush (pennmush/16_pennfunc.h 1.2.1.50.1.1.1.1.1.2.1.7.1.3 600) *************** *** 530,536 **** & CONVSECS() & CONVUTCSECS() ! convsecs() convutcsecs() This function converts seconds to a time string, based on how many --- 530,536 ---- & CONVSECS() & CONVUTCSECS() ! convsecs([, ]) convutcsecs() This function converts seconds to a time string, based on how many *************** *** 538,545 **** UTC, but returns local time, convsecs(0) is not going to be "Thu Jan 1 00:00:00 1970" unless you're in the UTC (GMT) timezone. ! convutcsecs() returns the time based on UTC time instead of local ! time. Example: > say [secs()] --- 538,545 ---- UTC, but returns local time, convsecs(0) is not going to be "Thu Jan 1 00:00:00 1970" unless you're in the UTC (GMT) timezone. ! convutcsecs() and convsecs() with a second argument of 'utc' return ! the time based on UTC time instead of the server's local time. Example: > say [secs()] *************** *** 2496,2502 **** registers. setq() returns a null string; it is a purely "side effect" function. setr() returns the value stored. ! There are thirtysix local registers, numbered 0 through 9 and A through Z. They are cleared at the start of each new queue cycle (i.e. whenever a new command is evaluated). They are most useful for storing complex function evaluations which are used repeatedly within a --- 2496,2502 ---- registers. setq() returns a null string; it is a purely "side effect" function. setr() returns the value stored. ! There are thirty-six local registers, numbered 0 through 9 and A through Z. They are cleared at the start of each new queue cycle (i.e. whenever a new command is evaluated). They are most useful for storing complex function evaluations which are used repeatedly within a *************** *** 2889,2903 **** See also: @tel & TIME() & UTCTIME() ! time() utctime() time() gives you the current time on the MUSH. WARNING! This is the time on the machine that the mush is running on, and not where you are. ! utctime() gives the same time in UTC (Aka GMT), not the server's ! timezone. See also: timefmt(), timestring(), convsecs(), convtime() & ETIMEFMT() --- 2889,2903 ---- See also: @tel & TIME() & UTCTIME() ! time([]) utctime() time() gives you the current time on the MUSH. WARNING! This is the time on the machine that the mush is running on, and not where you are. ! utctime() and time(utc) give the same time in UTC (Aka GMT), not the server's ! local timezone. See also: timefmt(), timestring(), convsecs(), convtime() & ETIMEFMT() *** 1_7_4.101/game/txt/hlp/penncmd.hlp Mon, 11 Jun 2001 10:50:03 -0500 dunemush (pennmush/18_penncmd.hl 1.2.1.1.1.47.1.1.1.1.1.3.1.2 600) --- 1_7_4.129(w)/game/txt/hlp/penncmd.hlp Fri, 06 Jul 2001 13:47:58 -0500 dunemush (pennmush/18_penncmd.hl 1.2.1.1.1.47.1.1.1.1.1.3.1.4 600) *************** *** 2796,2802 **** doesn't have an . executes the contents of his attribute. ! By supplying up to nine , you may pass those values on the stack (i.e. %0, %1, %2, etc. up through %9). See "help @verb2" for more. --- 2796,2802 ---- doesn't have an . executes the contents of his attribute. ! By supplying up to ten , you may pass those values on the stack (i.e. %0, %1, %2, etc. up through %9). See "help @verb2" for more. *************** *** 2816,2822 **** & @verb3 Example: ! &VERB_EXAMPLE Test Object=$test:@verb me=%N,TEST,You just tested.,OTEST, just tested the example.,ATEST,%N test > You just tested. --- 2816,2822 ---- & @verb3 Example: ! &VERB_EXAMPLE Test Object=$test:@verb me=%#,TEST,You just tested.,OTEST, just tested the example.,ATEST,%N test > You just tested. *** 1_7_4.101/game/mushcnf.dst Mon, 12 Feb 2001 16:29:23 -0600 dunemush (pennmush/41_mushcnf.ds 1.1.1.19.1.1 600) --- 1_7_4.129(w)/game/mushcnf.dst Sat, 07 Jul 2001 21:03:12 -0500 dunemush (pennmush/41_mushcnf.ds 1.1.1.19.1.1.1.1 600) *************** *** 554,559 **** --- 554,565 ---- # "hi!", or not (producing X says, ""hi!"). chat_strip_quote yes + + # Should strlen(%r) be 1 or 2? Turning this option on will allow %r to be + # used as a list delimiter, but might break formatting softcode that depends + # on its length being 2. + newline_one_char yes + ### ### Default flags for newly created stuff ### *** 1_7_4.101/config_h.SH Mon, 26 Mar 2001 15:53:23 -0600 dunemush (pennmush/b/17_config_h.S 1.17.1.2 660) --- 1_7_4.129(w)/config_h.SH Sat, 30 Jun 2001 08:58:56 -0500 dunemush (pennmush/b/17_config_h.S 1.17.1.2.1.1 660) *************** *** 410,416 **** #endif /* WIN32_CDECL: ! * Defined as __cdecl if the compiler can handle a that keyword to specify * C-style argument passing conventions. This allows MS VC++ * on Win32 to use the __fastcall convention for everything else * and get a performance boost. Any compiler with a brain (read: --- 410,416 ---- #endif /* WIN32_CDECL: ! * Defined as __cdecl if the compiler can handle that keyword to specify * C-style argument passing conventions. This allows MS VC++ * on Win32 to use the __fastcall convention for everything else * and get a performance boost. Any compiler with a brain (read: *************** *** 587,593 **** #$d_memmove HAS_MEMMOVE /**/ /* CAN_NEWSTYLE: ! * Defined if new-style functions definitions are allowable. * If they are, we can avoid some warnings that you get if * you declare char arguments in a prototype and use old-style * function definitions, which implicitly promote them to ints. --- 587,593 ---- #$d_memmove HAS_MEMMOVE /**/ /* CAN_NEWSTYLE: ! * Defined if new-style function definitions are allowable. * If they are, we can avoid some warnings that you get if * you declare char arguments in a prototype and use old-style * function definitions, which implicitly promote them to ints. *************** *** 595,607 **** #$d_newstyle CAN_NEWSTYLE /**/ /* HAS_RANDOM: ! * Have we got random(), our first choice for number generation. */ /* HAS_LRAND48: ! * Have we got lrand48(), our second choice. */ /* HAS_RAND: ! * Have we got rand(), our last choice. */ #$d_random HAS_RANDOM /**/ #$d_lrand48 HAS_LRAND48 /**/ --- 595,607 ---- #$d_newstyle CAN_NEWSTYLE /**/ /* HAS_RANDOM: ! * Have we got random(), our first choice for number generation? */ /* HAS_LRAND48: ! * Have we got lrand48(), our second choice? */ /* HAS_RAND: ! * Have we got rand(), our last choice? */ #$d_random HAS_RANDOM /**/ #$d_lrand48 HAS_LRAND48 /**/ *************** *** 722,729 **** #$d_uwait UNION_WAIT /**/ /* HAS_VSNPRINTF: ! * This symbol, if defined, indicates that the vsnprintf routine is available ! * to printf with a pointer to an argument list. If unavailable, you * may need to write your own, probably in terms of _doprnt(). */ #$d_vsnprintf HAS_VSNPRINTF /**/ --- 722,729 ---- #$d_uwait UNION_WAIT /**/ /* HAS_VSNPRINTF: ! * This symbol, if defined, indicates that the vsnprintf routine is ! * available to printf with a pointer to an argument list. If not, you * may need to write your own, probably in terms of _doprnt(). */ #$d_vsnprintf HAS_VSNPRINTF /**/ *** 1_7_4.101/src/local.dst Wed, 29 Nov 2000 11:35:38 -0600 dunemush (pennmush/b/19_local.dst 1.5 660) --- 1_7_4.129(w)/src/local.dst Tue, 10 Jul 2001 14:23:21 -0500 dunemush (pennmush/b/19_local.dst 1.6 660) *************** *** 87,92 **** --- 87,110 ---- { } + /* Called when a player connects. If this is a new creation, + * isnew will be true. num gives the number of connections by + * that player (so if num > 1, this is a multiple connect). + */ + void + local_connect(dbref player, int isnew, int num) + { + } + + /* Called when a player disconnects. If num > 1, this is + * a partial disconnect. + */ + void + local_disconnect(dbref player, int num) + { + } + + #ifdef LOCAL_DATA /* For serious hackers only */ *** 1_7_4.101/src/cmdlocal.dst Wed, 10 Jan 2001 12:33:19 -0600 dunemush (pennmush/b/21_cmdlocal.d 1.7 660) --- 1_7_4.129(w)/src/cmdlocal.dst Tue, 10 Jul 2001 14:23:21 -0500 dunemush (pennmush/b/21_cmdlocal.d 1.8 660) *************** *** 52,59 **** #ifdef EXAMPLE COMMAND (cmd_local_silly) { if (SW_ISSET(sw, SWITCH_NOISY)) ! notify(player, tprintf("Noisy silly with %s", arg_left)); ! notify(player, tprintf("SillyCommand %s", arg_left)); } #endif --- 52,59 ---- #ifdef EXAMPLE COMMAND (cmd_local_silly) { if (SW_ISSET(sw, SWITCH_NOISY)) ! notify_format(player, "Noisy silly with %s", arg_left); ! notify_format(player, "SillyCommand %s", arg_left); } #endif *** 1_7_4.101/src/wiz.c Mon, 11 Jun 2001 10:50:03 -0500 dunemush (pennmush/b/23_wiz.c 1.44.1.1.1.1.1.2 660) --- 1_7_4.129(w)/src/wiz.c Tue, 10 Jul 2001 14:23:21 -0500 dunemush (pennmush/b/23_wiz.c 1.44.1.1.1.1.1.2.1.4 660) *************** *** 102,107 **** --- 102,109 ---- notify(creator, T("You do not have the power over body and mind!")); return NOTHING; } + if (!can_pay_fees(creator, 0)) + return NOTHING; player = create_player(player_name, player_password, "None", "None"); if (player == NOTHING) { notify(creator, *************** *** 336,343 **** victim = player; to = arg1; } else { ! if ((victim = noisy_match_result(player, arg1, NOTYPE, MAT_OBJECTS | MAT_ENGLISH)) == ! NOTHING) { return; } to = arg2; --- 338,346 ---- victim = player; to = arg1; } else { ! if ((victim = ! noisy_match_result(player, arg1, NOTYPE, ! MAT_OBJECTS | MAT_ENGLISH)) == NOTHING) { return; } to = arg2; *************** *** 718,726 **** } else { /* it's ok, do it */ (void) atr_add(victim, "XYXXY", mush_crypt(password), GOD, NOTHING); ! notify(player, T("Password changed.")); ! notify(victim, tprintf(T("Your password has been changed by %s."), ! Name(player))); do_log(LT_WIZ, player, victim, "*** NEWPASSWORD ***"); } } --- 721,729 ---- } else { /* it's ok, do it */ (void) atr_add(victim, "XYXXY", mush_crypt(password), GOD, NOTHING); ! notify_format(player, T("Password for %s changed."), Name(victim)); ! notify_format(victim, T("Your password has been changed by %s."), ! Name(player)); do_log(LT_WIZ, player, victim, "*** NEWPASSWORD ***"); } } *** 1_7_4.101/src/warnings.c Tue, 15 May 2001 15:59:50 -0500 dunemush (pennmush/b/25_warnings.c 1.17 660) --- 1_7_4.129(w)/src/warnings.c Tue, 10 Jul 2001 14:23:21 -0500 dunemush (pennmush/b/25_warnings.c 1.18 660) *************** *** 116,123 **** const char *name; const char *desc; { ! notify(player, tprintf(T("Warning '%s' for %s:"), ! name, unparse_object(player, i))); notify(player, desc); } --- 116,123 ---- const char *name; const char *desc; { ! notify_format(player, T("Warning '%s' for %s:"), ! name, unparse_object(player, i)); notify(player, desc); } *************** *** 305,311 **** } /* At this point, we haven't matched any warnings. */ if (!found) { ! notify(player, tprintf(T("Unknown warning: %s"), w)); } w = split_token(&s, ' '); } --- 305,311 ---- } /* At this point, we haven't matched any warnings. */ if (!found) { ! notify_format(player, T("Unknown warning: %s"), w); } w = split_token(&s, ' '); } *************** *** 314,320 **** } else { Warnings(thing) &= ~negate_flags; } ! notify(player, tprintf(T("@warnings set to %s"), unparse_warnings(thing))); return; } } --- 314,320 ---- } else { Warnings(thing) &= ~negate_flags; } ! notify_format(player, T("@warnings set to %s"), unparse_warnings(thing)); return; } } *** 1_7_4.101/src/version.c Wed, 06 Sep 2000 20:09:35 -0500 dunemush (pennmush/b/26_version.c 1.5 660) --- 1_7_4.129(w)/src/version.c Tue, 10 Jul 2001 14:23:21 -0500 dunemush (pennmush/b/26_version.c 1.6 660) *************** *** 30,51 **** { char buff[BUFFER_LEN]; ! notify(player, tprintf(T("You are connected to %s"), MUDNAME)); strcpy(buff, ctime(&start_time)); buff[strlen(buff) - 1] = '\0'; /* eat the newline */ ! notify(player, tprintf(T("Last restarted: %s"), buff)); ! notify(player, tprintf("%s", VERSION)); #ifdef PATCHES ! notify(player, tprintf("Patches: %s", PATCHES)); #endif #ifdef WIN32 ! notify(player, tprintf(T("Build date: %s"), __DATE__)); #else ! notify(player, tprintf(T("Build date: %s"), BUILDDATE)); ! notify(player, tprintf("Compiler: %s", COMPILER)); ! notify(player, tprintf(T("Compilation flags: %s"), CCFLAGS)); ! notify(player, tprintf(T("Malloc package: %d"), MALLOC_PACKAGE)); #endif } --- 30,51 ---- { char buff[BUFFER_LEN]; ! notify_format(player, T("You are connected to %s"), MUDNAME); strcpy(buff, ctime(&start_time)); buff[strlen(buff) - 1] = '\0'; /* eat the newline */ ! notify_format(player, T("Last restarted: %s"), buff); ! notify_format(player, "%s", VERSION); #ifdef PATCHES ! notify_format(player, "Patches: %s", PATCHES); #endif #ifdef WIN32 ! notify_format(player, T("Build date: %s"), __DATE__); #else ! notify_format(player, T("Build date: %s"), BUILDDATE); ! notify_format(player, T("Compiler: %s"), COMPILER); ! notify_format(player, T("Compilation flags: %s"), CCFLAGS); ! notify_format(player, T("Malloc package: %d"), MALLOC_PACKAGE); #endif } *** 1_7_4.101/src/help.c Thu, 31 May 2001 11:20:12 -0500 dunemush (pennmush/f/32_help.c 1.4.1.2.1.1.1.3.2.2.1.1.2.1.1.2 660) --- 1_7_4.129(w)/src/help.c Tue, 10 Jul 2001 14:23:19 -0500 dunemush (pennmush/f/32_help.c 1.4.1.2.1.1.1.3.2.2.1.1.2.1.1.2.1.2 660) *************** *** 217,223 **** } if (!entry) { ! notify(player, tprintf(T("No entry for '%s'."), arg1)); return; } --- 217,223 ---- } if (!entry) { ! notify_format(player, T("No entry for '%s'."), arg1); return; } *************** *** 242,248 **** notify(player, the_topic); if (SUPPORT_PUEBLO) ! notify_noenter(player, tprintf("%cPRE%c", TAG_START, TAG_END)); for (n = 0; n < BUFFER_LEN; n++) { if (fgets(line, LINE_SIZE, fp) == NULL) break; --- 242,248 ---- notify(player, the_topic); if (SUPPORT_PUEBLO) ! notify_noenter(player, tprintf("%cSAMP%c", TAG_START, TAG_END)); for (n = 0; n < BUFFER_LEN; n++) { if (fgets(line, LINE_SIZE, fp) == NULL) break; *************** *** 258,267 **** } } if (SUPPORT_PUEBLO) ! notify(player, tprintf("%c/PRE%c", TAG_START, TAG_END)); fclose(fp); if (n >= BUFFER_LEN) ! notify(player, tprintf(T("%s output truncated."), help_dat->command)); } void --- 258,267 ---- } } if (SUPPORT_PUEBLO) ! notify_format(player, "%c/SAMP%c", TAG_START, TAG_END); fclose(fp); if (n >= BUFFER_LEN) ! notify_format(player, T("%s output truncated."), help_dat->command); } void *** 1_7_4.101/src/htab.c Mon, 11 Jun 2001 10:50:03 -0500 dunemush (pennmush/b/30_htab.c 1.8.1.1 660) --- 1_7_4.129(w)/src/htab.c Tue, 10 Jul 2001 14:23:19 -0500 dunemush (pennmush/b/30_htab.c 1.8.1.2 660) *************** *** 250,267 **** while (hent) { nent = hent->next; hval = hash_val(hent->key, mask); ! for (curr = newarr[hval], old = NULL; ! curr; ! old = curr, curr = curr->next) { ! if (strcmp(curr->key, hent->key) > 0) ! break; } if (old) { ! old->next = hent; ! hent->next = curr; } else { ! hent->next = newarr[hval]; ! newarr[hval] = hent; } hent = nent; } --- 250,265 ---- while (hent) { nent = hent->next; hval = hash_val(hent->key, mask); ! for (curr = newarr[hval], old = NULL; curr; old = curr, curr = curr->next) { ! if (strcmp(curr->key, hent->key) > 0) ! break; } if (old) { ! old->next = hent; ! hent->next = curr; } else { ! hent->next = newarr[hval]; ! newarr[hval] = hent; } hent = nent; } *************** *** 447,455 **** hash_stats_header(player) dbref player; { ! notify(player, ! tprintf ! ("Table Buckets Entries LChain ECh 1Ch 2Ch 3Ch 4+Ch AvgCh ~Memory")); } void --- 445,452 ---- hash_stats_header(player) dbref player; { ! notify_format(player, ! "Table Buckets Entries LChain ECh 1Ch 2Ch 3Ch 4+Ch AvgCh ~Memory"); } void *************** *** 492,500 **** for (n = 1; n < 5; n++) totchains += lengths[n]; ! notify(player, ! tprintf("%-10s %7d %7d %6d %4d %4d %4d %4d %4d %6.3f %7u", hname, ! htab->hashsize, htab->entries, longest, lengths[0], lengths[1], ! lengths[2], lengths[3], lengths[4], ! totchains == 0.0 ? 0.0 : chainlens / totchains, bytes)); } --- 489,497 ---- for (n = 1; n < 5; n++) totchains += lengths[n]; ! notify_format(player, ! "%-10s %7d %7d %6d %4d %4d %4d %4d %4d %6.3f %7u", hname, ! htab->hashsize, htab->entries, longest, lengths[0], lengths[1], ! lengths[2], lengths[3], lengths[4], ! totchains == 0.0 ? 0.0 : chainlens / totchains, bytes); } *** 1_7_4.101/src/strutil.c Thu, 31 May 2001 15:33:03 -0500 dunemush (pennmush/b/33_strutil.c 1.28.1.3.1.3.1.5 660) --- 1_7_4.129(w)/src/strutil.c Tue, 10 Jul 2001 14:23:21 -0500 dunemush (pennmush/b/33_strutil.c 1.28.1.3.1.3.1.6 660) *************** *** 1095,1101 **** depopulate_codes(as); ! if (start > as->len) return safe_str("", buff, bp); /* Find the starting codes */ --- 1095,1101 ---- depopulate_codes(as); ! if (start > as->len || start < 0 || as->len < 0) return safe_str("", buff, bp); /* Find the starting codes */ *** 1_7_4.101/src/speech.c Mon, 11 Jun 2001 10:50:03 -0500 dunemush (pennmush/b/35_speech.c 1.21.1.2.1.3.1.5.1.1.1.7.1.3.1.1 660) --- 1_7_4.129(w)/src/speech.c Tue, 10 Jul 2001 14:23:21 -0500 dunemush (pennmush/b/35_speech.c 1.21.1.2.1.3.1.5.1.1.1.7.1.3.1.1.1.1 660) *************** *** 535,547 **** who = noisy_match_result(player, p, NOTYPE, MAT_ABSOLUTE); if (GoodObject(who) && okay_pemit(player, who)) { if (Nospoof(who)) { ! bp = tbuf; ! if (Paranoid(who)) ! safe_format(tbuf, &bp, "[%s(#%d)->] ", Name(player), player); ! else ! safe_format(tbuf, &bp, "[%s->] ", Name(player)); ! safe_str(message, tbuf, &bp); ! *bp = '\0'; notify(who, tbuf); } else { notify(who, message); --- 535,547 ---- who = noisy_match_result(player, p, NOTYPE, MAT_ABSOLUTE); if (GoodObject(who) && okay_pemit(player, who)) { if (Nospoof(who)) { ! bp = tbuf; ! if (Paranoid(who)) ! safe_format(tbuf, &bp, "[%s(#%d)->] ", Name(player), player); ! else ! safe_format(tbuf, &bp, "[%s->] ", Name(player)); ! safe_str(message, tbuf, &bp); ! *bp = '\0'; notify(who, tbuf); } else { notify(who, message); *** 1_7_4.101/src/set.c Mon, 11 Jun 2001 10:50:03 -0500 dunemush (pennmush/b/38_set.c 1.26.1.3 660) --- 1_7_4.129(w)/src/set.c Tue, 10 Jul 2001 14:23:21 -0500 dunemush (pennmush/b/38_set.c 1.26.1.5 660) *************** *** 103,111 **** password = newname; while (*password && !isspace(*password)) password++; ! *password++ = '\0'; ! while (*password && isspace(*password)) ! password++; } } else { --- 103,113 ---- password = newname; while (*password && !isspace(*password)) password++; ! if (*password) { ! *password++ = '\0'; ! while (*password && isspace(*password)) ! password++; ! } } } else { *************** *** 125,131 **** if (!God(player) && !*password) { notify(player, T("You must specify a password to change a player name.")); ! notify(player, T("E.g.: name player = newname password")); return; } else if (!God(player) && !password_check(thing, password)) { notify(player, T("Incorrect password.")); --- 127,133 ---- if (!God(player) && !*password) { notify(player, T("You must specify a password to change a player name.")); ! notify(player, T("E.g.: @name player = newname password")); return; } else if (!God(player) && !password_check(thing, password)) { notify(player, T("Incorrect password.")); *************** *** 655,661 **** notify(player, tprintf(T("Attribute %s (%d copies)"), (move ? "moved" : "copied"), copies)); if (move) ! do_set_atr(oldobj, p, NULL, player, 1); } else { notify(player, tprintf(T("Unable to %s attribute."), (move ? "move" : "copy"))); --- 657,663 ---- notify(player, tprintf(T("Attribute %s (%d copies)"), (move ? "moved" : "copied"), copies)); if (move) ! do_set_atr(oldobj, AL_NAME(a), NULL, player, 1); } else { notify(player, tprintf(T("Unable to %s attribute."), (move ? "move" : "copy"))); *************** *** 758,769 **** *tbufp = '\0'; *tbufap = '\0'; ! if (do_set_atr(thing, a->name, tbuf1, player, 0) && !Quiet(player) && !Quiet(thing)) { if (!ansi_long_flag && ShowAnsi(player)) ! notify(player, tprintf("%s - Set: %s", a->name, tbuf_ansi)); else ! notify(player, tprintf("%s - Set: %s", a->name, tbuf1)); } return 1; --- 760,771 ---- *tbufp = '\0'; *tbufap = '\0'; ! if (do_set_atr(thing, AL_NAME(a), tbuf1, player, 0) && !Quiet(player) && !Quiet(thing)) { if (!ansi_long_flag && ShowAnsi(player)) ! notify(player, tprintf("%s - Set: %s", AL_NAME(a), tbuf_ansi)); else ! notify(player, tprintf("%s - Set: %s", AL_NAME(a), tbuf1)); } return 1; *** 1_7_4.101/src/rob.c Mon, 11 Jun 2001 10:50:03 -0500 dunemush (pennmush/b/42_rob.c 1.18.1.2.1.2 660) --- 1_7_4.129(w)/src/rob.c Tue, 10 Jul 2001 14:23:21 -0500 dunemush (pennmush/b/42_rob.c 1.18.1.2.1.3 660) *************** *** 137,143 **** int i; /* check recipient */ ! switch (who = match_result(player, recipient, TYPE_PLAYER, MAT_NEAR_THINGS | MAT_ENGLISH)) { case NOTHING: notify(player, T("Give to whom?")); return; --- 137,145 ---- int i; /* check recipient */ ! switch (who = ! match_result(player, recipient, TYPE_PLAYER, ! MAT_NEAR_THINGS | MAT_ENGLISH)) { case NOTHING: notify(player, T("Give to whom?")); return; *************** *** 157,163 **** /* must be giving object */ if (*s) { dbref thing; ! switch (thing = match_result(player, amnt, TYPE_THING, MAT_POSSESSION | MAT_ENGLISH)) { case NOTHING: notify(player, T("You don't have that!")); return; --- 159,167 ---- /* must be giving object */ if (*s) { dbref thing; ! switch (thing = ! match_result(player, amnt, TYPE_THING, ! MAT_POSSESSION | MAT_ENGLISH)) { case NOTHING: notify(player, T("You don't have that!")); return; *** 1_7_4.101/src/predicat.c Thu, 31 May 2001 11:19:20 -0500 dunemush (pennmush/b/44_predicat.c 1.1.1.34.1.1.1.3.1.2 660) --- 1_7_4.129(w)/src/predicat.c Tue, 10 Jul 2001 14:23:21 -0500 dunemush (pennmush/b/44_predicat.c 1.1.1.34.1.1.1.3.1.3 660) *************** *** 417,423 **** } /* Can they afford it? */ if (!NoPay(who) && (Pennies(Owner(who)) < pennies)) { ! notify(who, tprintf(T("Sorry, you don't have enough %s."), MONIES)); return 0; } /* check building quota */ --- 417,423 ---- } /* Can they afford it? */ if (!NoPay(who) && (Pennies(Owner(who)) < pennies)) { ! notify_format(who, T("Sorry, you don't have enough %s."), MONIES); return 0; } /* check building quota */ *************** *** 815,826 **** free((Malloc_t) asave); if (*buff) { ptr = (struct tm *) localtime(&mudtime); ! notify(player, tprintf(T("%s message from %s: %s"), type, ! Name(target), buff)); if (!Haven(target)) ! notify(target, ! tprintf(T("[%d:%02d] %s message sent to %s."), ptr->tm_hour, ! ptr->tm_min, type, Name(player))); } } else if (def && *def) notify(player, def); --- 815,826 ---- free((Malloc_t) asave); if (*buff) { ptr = (struct tm *) localtime(&mudtime); ! notify_format(player, T("%s message from %s: %s"), type, ! Name(target), buff); if (!Haven(target)) ! notify_format(target, ! T("[%d:%02d] %s message sent to %s."), ptr->tm_hour, ! ptr->tm_min, type, Name(player)); } } else if (def && *def) notify(player, def); *** 1_7_4.101/src/plyrlist.c Tue, 07 Nov 2000 15:36:38 -0600 dunemush (pennmush/b/46_plyrlist.c 1.5 660) --- 1_7_4.129(w)/src/plyrlist.c Tue, 10 Jul 2001 14:23:21 -0500 dunemush (pennmush/b/46_plyrlist.c 1.5.1.1 660) *************** *** 68,73 **** --- 68,75 ---- p = atoi(name); return ((GoodObject(p) && IsPlayer(p)) ? p : NOTHING); } + if (*name == LOOKUP_TOKEN) + name++; hval = hashfind(strupper(name), &htab_player_list); if (!hval) return NOTHING; *** 1_7_4.101/src/player.c Tue, 15 May 2001 15:59:50 -0500 dunemush (pennmush/b/47_player.c 1.15.1.1.1.1.1.1 660) --- 1_7_4.129(w)/src/player.c Tue, 10 Jul 2001 14:23:21 -0500 dunemush (pennmush/b/47_player.c 1.15.1.1.1.1.1.3 660) *************** *** 199,204 **** --- 199,209 ---- do_log(LT_CONN, 0, 0, T("Failed creation (bad password) from %s"), host); return AMBIGUOUS; } + if (DBTOP_MAX && (db_top >= DBTOP_MAX + 1) && (first_free == NOTHING)) { + /* Oops, out of db space! */ + do_log(LT_CONN, 0, 0, T("Failed creation (no db space) from %s"), host); + return NOTHING; + } /* else he doesn't already exist, create him */ return make_player(name, password, host, ip); } *************** *** 271,276 **** --- 276,286 ---- return NOTHING; } + if (DBTOP_MAX && (db_top >= DBTOP_MAX + 1) && (first_free == NOTHING)) { + /* Oops, out of db space! */ + do_log(LT_CONN, 0, 0, T("Failed registration (no db space) from %s"), host); + return NOTHING; + } /* Come up with a random password of length 7-12 chars */ len = get_random_long(7, 12); *************** *** 464,479 **** if (h && a) { strcpy(last_place, uncompress(h->value)); strcpy(last_time, uncompress(a->value)); ! notify(player, tprintf(T("Last connect was from %s on %s."), ! last_place, last_time)); } /* How about last failed connection */ h = atr_get_noparent(player, "LASTFAILED"); if (h && a) { strcpy(last_place, uncompress(h->value)); if (strlen(last_place) > 2) ! notify(player, ! tprintf(T("Last FAILED connect was from %s."), last_place)); } /* if there is no Lastsite, then the player is newly created. * the extra variables are a kludge to work around some weird --- 474,488 ---- if (h && a) { strcpy(last_place, uncompress(h->value)); strcpy(last_time, uncompress(a->value)); ! notify_format(player, T("Last connect was from %s on %s."), ! last_place, last_time); } /* How about last failed connection */ h = atr_get_noparent(player, "LASTFAILED"); if (h && a) { strcpy(last_place, uncompress(h->value)); if (strlen(last_place) > 2) ! notify_format(player, T("Last FAILED connect was from %s."), last_place); } /* if there is no Lastsite, then the player is newly created. * the extra variables are a kludge to work around some weird *** 1_7_4.101/src/parse.c Mon, 29 Jan 2001 09:51:40 -0600 dunemush (pennmush/b/48_parse.c 1.23.1.7 660) --- 1_7_4.129(w)/src/parse.c Tue, 10 Jul 2001 14:23:20 -0500 dunemush (pennmush/b/48_parse.c 1.23.1.8 660) *************** *** 91,96 **** --- 91,117 ---- #endif + /* Indexes of valid q-regs into the renv array. -1 is error. */ + signed char qreg_indexes[UCHAR_MAX + 1] = { + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, -1, -1, -1, -1, -1, -1, + -1, 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, -1, -1, -1, -1, -1, + -1, 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, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 + }; + + dbref parse_dbref(str) char const *str; *************** *** 166,173 **** is_integer(str) char const *str; { ! char const *p = str; ! int val; /* If we're emulating Tiny, anything is an integer */ if (TINY_MATH) return 1; --- 187,194 ---- is_integer(str) char const *str; { ! char *end; ! /* If we're emulating Tiny, anything is an integer */ if (TINY_MATH) return 1; *************** *** 175,192 **** return 0; while (isspace(*str)) str++; ! if (!*str) ! return (NULL_EQ_ZERO ? 1 : 0); ! if ((*str == '-') && isdigit(str[1])) ! str += 2; ! while (isdigit(*str)) ! str++; ! while (isspace(*str)) ! str++; ! if (*str) ! return 0; ! val = parse_integer(p); ! if ((val > HUGE_INT) || (-val > HUGE_INT)) return 0; return 1; } --- 196,206 ---- return 0; while (isspace(*str)) str++; ! if (*str == '\0') ! return NULL_EQ_ZERO; ! errno = 0; ! strtol(str, &end, 10); ! if (errno == ERANGE || *end != '\0') return 0; return 1; } *************** *** 195,220 **** is_uinteger(str) char const *str; { ! char const *p = str; ! unsigned int val; /* If we're emulating Tiny, anything is an integer */ if (TINY_MATH) return 1; if (!str) return 0; while (isspace(*str)) str++; ! if (!*str) ! return (NULL_EQ_ZERO ? 1 : 0); ! while (isdigit(*str)) ! str++; ! while (isspace(*str)) ! str++; ! if (*str) return 0; errno = 0; ! val = parse_uinteger(p); ! if (val == ULONG_MAX || errno == ERANGE) return 0; return 1; } --- 209,231 ---- is_uinteger(str) char const *str; { ! char *end; ! /* If we're emulating Tiny, anything is an integer */ if (TINY_MATH) return 1; if (!str) return 0; + /* strtoul() accepts negative numbers, so we still have to do this check */ while (isspace(*str)) str++; ! if (*str == '\0') ! return NULL_EQ_ZERO; ! if (!(isdigit(*str) || *str == '+')) return 0; errno = 0; ! strtoul(str, &end, 10); ! if (errno == ERANGE || *end != '\0') return 0; return 1; } *************** *** 223,279 **** is_strict_number(str) char const *str; { ! char const *p = str; NVAL val; - if (!str) return 0; ! while (isspace(*str)) ! str++; ! if (!*str) ! return (NULL_EQ_ZERO ? 1 : 0); ! if (((*str == '-') || (*str == '+')) && str[1]) ! str++; ! while (isdigit(*str)) ! str++; ! if (*str == '.') ! str++; ! while (isdigit(*str)) ! str++; ! while (isspace(*str)) ! str++; ! if (*str) ! return 0; ! val = parse_number(p); ! if ((val > HUGE_NVAL) || (-val > HUGE_NVAL)) return 0; ! return 1; } int is_strict_integer(str) const char *str; { ! const char *p = str; int val; if (!str) return 0; ! while (isspace(*str)) ! str++; ! if (!*str) ! return (NULL_EQ_ZERO ? 1 : 0); ! if (((*str == '-') || (*str == '+')) && str[1]) ! str++; ! while (isdigit(*str)) ! str++; ! while (isspace(*str)) ! str++; ! if (*str) ! return 0; ! val = parse_integer(p); ! if ((val > HUGE_INT) || (-val > HUGE_INT)) return 0; ! return 1; } int --- 234,263 ---- is_strict_number(str) char const *str; { ! char *end; NVAL val; if (!str) return 0; ! errno = 0; ! val = strtod(str, &end); ! if (errno == ERANGE || *end != '\0') return 0; ! return end > str; } int is_strict_integer(str) const char *str; { ! char *end; int val; if (!str) return 0; ! errno = 0; ! val = strtol(str, &end, 10); ! if (errno == ERANGE || *end != '\0') return 0; ! return end > str; } int *************** *** 283,288 **** --- 267,276 ---- /* If we're emulating Tiny, anything is a number */ if (TINY_MATH) return 1; + while (isspace(*str)) + str++; + if (*str == '\0') + return NULL_EQ_ZERO; return is_strict_number(str); } *************** *** 334,341 **** char temp[3]; int temp_eflags; int old_iter_limit; ! static char qindex[NUMQ] = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ"; ! char *qp; if (!buff || !bp || !str || !*str) return; --- 322,328 ---- char temp[3]; int temp_eflags; int old_iter_limit; ! int qindex; if (!buff || !bp || !str || !*str) return; *************** *** 566,579 **** if (!nextc) goto exit_sequence; (*str)++; ! if (!(qp = strchr(qindex, UPCASE(nextc)))) break; ! if (renv[qp - qindex]) ! safe_str(renv[qp - qindex], buff, bp); break; case 'R': case 'r': /* newline */ ! safe_str("\r\n", buff, bp); break; case 'S': case 's': /* enactor subjective pronoun */ --- 553,569 ---- if (!nextc) goto exit_sequence; (*str)++; ! if ((qindex = qreg_indexes[(unsigned char) nextc]) == -1) break; ! if (renv[qindex]) ! safe_str(renv[qindex], buff, bp); break; case 'R': case 'r': /* newline */ ! if (NEWLINE_ONE_CHAR) ! safe_chr('\n', buff, bp); ! else ! safe_str("\r\n", buff, bp); break; case 'S': case 's': /* enactor subjective pronoun */ *** 1_7_4.101/src/move.c Mon, 11 Jun 2001 10:50:03 -0500 dunemush (pennmush/b/51_move.c 1.1.1.18.1.5.1.13.1.3.1.3 660) --- 1_7_4.129(w)/src/move.c Tue, 10 Jul 2001 14:23:20 -0500 dunemush (pennmush/b/51_move.c 1.1.1.18.1.5.1.13.1.3.1.5 660) *************** *** 60,65 **** --- 60,69 ---- dbref loc, old; dbref absloc, absold; + /* Don't move something into something it's holding */ + if (recursive_member(where, what, 0)) + return; + /* remove what from old loc */ absold = absolute_room(what); if ((loc = old = Location(what)) != NOTHING) { *************** *** 210,215 **** --- 214,226 ---- deep--; return; } + if (recursive_member(loc, player, 0)) { + do_rawlog(LT_ERR, + T("ERROR: Attempt to move player %d into carried object %d\n"), + player, loc); + deep--; + return; + } /* get old location */ old = Location(player); *************** *** 484,490 **** dbref loc = Location(player); dbref thing; char tbuf1[BUFFER_LEN]; ! long match_flags = MAT_NEIGHBOR | MAT_ABSOLUTE | MAT_CHECK_KEYS | MAT_NEAR | MAT_ENGLISH; char *myenv[10]; int i; --- 495,502 ---- dbref loc = Location(player); dbref thing; char tbuf1[BUFFER_LEN]; ! long match_flags = ! MAT_NEIGHBOR | MAT_ABSOLUTE | MAT_CHECK_KEYS | MAT_NEAR | MAT_ENGLISH; char *myenv[10]; int i; *************** *** 599,605 **** switch (thing = match_result(player, name, TYPE_THING, ! MAT_POSSESSION | MAT_ABSOLUTE | MAT_CONTROL | MAT_ENGLISH)) { case NOTHING: notify(player, T("You don't have that!")); return; --- 611,618 ---- switch (thing = match_result(player, name, TYPE_THING, ! MAT_POSSESSION | MAT_ABSOLUTE | MAT_CONTROL | ! MAT_ENGLISH)) { case NOTHING: notify(player, T("You don't have that!")); return; *** 1_7_4.101/src/memcheck.c Mon, 20 Nov 2000 09:55:52 -0600 dunemush (pennmush/c/1_memcheck.c 1.8 660) --- 1_7_4.129(w)/src/memcheck.c Tue, 10 Jul 2001 14:23:20 -0500 dunemush (pennmush/c/1_memcheck.c 1.8.1.1 660) *************** *** 96,102 **** MEM *loop; for (loop = my_check; loop; loop = loop->next) { ! notify(player, tprintf("%s : %d", loop->ref_name, loop->ref_count)); } } --- 96,102 ---- MEM *loop; for (loop = my_check; loop; loop = loop->next) { ! notify_format(player, "%s : %d", loop->ref_name, loop->ref_count); } } *** 1_7_4.101/src/match.c Sat, 07 Apr 2001 09:38:06 -0500 dunemush (pennmush/c/2_match.c 1.20 660) --- 1_7_4.129(w)/src/match.c Tue, 10 Jul 2001 14:23:20 -0500 dunemush (pennmush/c/2_match.c 1.22 660) *************** *** 71,77 **** static dbref match_me _((const dbref who, const char *name)); static dbref match_here _((const dbref who, const char *name)); static dbref match_absolute _((const char *name)); ! static dbref match_player _((const char *match_name)); static dbref match_list _((const dbref match_who, const char *match_name, const int type, const long int flags, dbref first, dbref *last_match, int *match_count)); --- 71,77 ---- static dbref match_me _((const dbref who, const char *name)); static dbref match_here _((const dbref who, const char *name)); static dbref match_absolute _((const char *name)); ! static dbref match_player _((const dbref matcher, const char *match_name)); static dbref match_list _((const dbref match_who, const char *match_name, const int type, const long int flags, dbref first, dbref *last_match, int *match_count)); *************** *** 191,197 **** } } if (flags & MAT_PLAYER) { ! match = match_player(name); if (GoodObject(match)) return match; } --- 191,197 ---- } } if (flags & MAT_PLAYER) { ! match = match_player(who, name); if (GoodObject(match)) return match; } *************** *** 326,332 **** } static dbref ! match_player(match_name) const char *match_name; { dbref match; --- 326,333 ---- } static dbref ! match_player(matcher, match_name) ! const dbref matcher; const char *match_name; { dbref match; *************** *** 340,346 **** } else { /* try a partial match on a connected player, 2.0 style */ /* Can return a match, NOTHING, or AMBIGUOUS */ ! return short_page(p); } } return NOTHING; --- 341,347 ---- } else { /* try a partial match on a connected player, 2.0 style */ /* Can return a match, NOTHING, or AMBIGUOUS */ ! return visible_short_page(matcher, p); } } return NOTHING; *************** *** 540,545 **** --- 541,547 ---- int do_loc; int do_cont; int num, matchnum; + char *dupname, *p; char *mname; char *e; dbref item; *************** *** 547,552 **** --- 549,555 ---- if (!Mobile(who)) return NOTHING; + p = dupname = mush_strdup(name, "string"); if (flags & MAT_NEIGHBOR) do_loc = 1; else *************** *** 556,584 **** else do_cont = 0; ! if (do_loc && (!strncasecmp(name, "this here ", 10))) { ! name += 10; do_cont = 0; ! } else if (do_loc && (!strncasecmp(name, "here ", 5) ! || !strncasecmp(name, "this ", 5))) { ! name += 5; do_cont = 0; ! } else if (do_cont && (!strncasecmp(name, "my ", 3) ! || !strncasecmp(name, "me ", 3))) { ! name += 3; do_loc = 0; } ! while (*name == ' ') ! name++; ! if (!*name) return NOTHING; ! mname = strchr(name, ' '); if (mname) { *mname = '\0'; ! num = strtoul(name, &e, 10); if (e && *e) { if (num < 1) { num = -1; --- 559,589 ---- else do_cont = 0; ! if (do_loc && (!strncasecmp(dupname, "this here ", 10))) { ! dupname += 10; do_cont = 0; ! } else if (do_loc && (!strncasecmp(dupname, "here ", 5) ! || !strncasecmp(dupname, "this ", 5))) { ! dupname += 5; do_cont = 0; ! } else if (do_cont && (!strncasecmp(dupname, "my ", 3) ! || !strncasecmp(dupname, "me ", 3))) { ! dupname += 3; do_loc = 0; } ! while (*dupname == ' ') ! dupname++; ! if (!*dupname) { ! mush_free(p, "string"); return NOTHING; + } ! mname = strchr(dupname, ' '); if (mname) { *mname = '\0'; ! num = strtoul(dupname, &e, 10); if (e && *e) { if (num < 1) { num = -1; *************** *** 600,608 **** } if (num != -1) { ! name = mname + 1; ! while (*name == ' ') ! name++; } else { num = 1; *mname = ' '; --- 605,613 ---- } if (num != -1) { ! dupname = mname + 1; ! while (*dupname == ' ') ! dupname++; } else { num = 1; *mname = ' '; *************** *** 622,636 **** matchnum = 0; DOLIST(item, item) { if ((Typeof(item) & type) ! && (!strcasecmp(Name(item), name) ! || string_match(Name(item), name))) { matchnum++; if (matchnum == num) { return item; } } } } return NOTHING; } --- 627,643 ---- matchnum = 0; DOLIST(item, item) { if ((Typeof(item) & type) ! && (!strcasecmp(Name(item), dupname) ! || string_match(Name(item), dupname))) { matchnum++; if (matchnum == num) { + mush_free(p, "string"); return item; } } } } + mush_free(p, "string"); return NOTHING; } *** 1_7_4.101/src/malias.c Fri, 25 May 2001 11:53:48 -0500 dunemush (pennmush/c/3_malias.c 1.31 660) --- 1_7_4.129(w)/src/malias.c Tue, 10 Jul 2001 14:23:20 -0500 dunemush (pennmush/c/3_malias.c 1.32 660) *************** *** 134,142 **** return; } if (*alias != MALIAS_TOKEN) { ! notify(player, ! tprintf(T("MAIL: All Mail aliases must begin with '%c'."), ! MALIAS_TOKEN)); return; } good = "`$_-.'"; --- 134,142 ---- return; } if (*alias != MALIAS_TOKEN) { ! notify_format(player, ! T("MAIL: All Mail aliases must begin with '%c'."), ! MALIAS_TOKEN); return; } good = "`$_-.'"; *************** *** 151,157 **** } m = get_malias(GOD, alias); /* GOD can see all aliases */ if (m) { /* Ensures no duplicates! */ ! notify(player, tprintf(T("MAIL: Mail Alias '%s' already exists."), alias)); return; } if (!ma_size) { --- 151,157 ---- } m = get_malias(GOD, alias); /* GOD can see all aliases */ if (m) { /* Ensures no duplicates! */ ! notify_format(player, T("MAIL: Mail Alias '%s' already exists."), alias); return; } if (!ma_size) { *************** *** 203,212 **** } else target = lookup_player(head); if (!(GoodObject(target)) || (!IsPlayer(target))) { ! notify(player, tprintf(T("MAIL: No such player '%s'."), head)); } else { buff = unparse_object(player, target); ! notify(player, tprintf(T("MAIL: %s added to alias %s"), buff, alias)); alist[i] = target; i++; } --- 203,212 ---- } else target = lookup_player(head); if (!(GoodObject(target)) || (!IsPlayer(target))) { ! notify_format(player, T("MAIL: No such player '%s'."), head); } else { buff = unparse_object(player, target); ! notify_format(player, T("MAIL: %s added to alias %s"), buff, alias); alist[i] = target; i++; } *************** *** 245,251 **** ma_top++; ! notify(player, tprintf(T("MAIL: Alias set '%s' defined."), alias)); } --- 245,251 ---- ma_top++; ! notify_format(player, T("MAIL: Alias set '%s' defined."), alias); } *************** *** 264,278 **** ((m->nflags & ALIAS_ADMIN) && Hasprivs(player)) || ((m->nflags & ALIAS_MEMBERS) && ismember(m, player))) { if (!notified) { ! notify(player, tprintf("%-13s %-35s %s %-15s", ! T("Name"), T("Alias Description"), T("Use See"), ! T("Owner"))); notified++; } ! notify(player, ! tprintf("%c%-12.12s %-35.35s %s %-15.15s", MALIAS_TOKEN, m->name, ! uncompress((unsigned char *) (m->desc)), get_shortprivs(m), ! Name(m->owner))); } } --- 264,278 ---- ((m->nflags & ALIAS_ADMIN) && Hasprivs(player)) || ((m->nflags & ALIAS_MEMBERS) && ismember(m, player))) { if (!notified) { ! notify_format(player, "%-13s %-35s %s %-15s", ! T("Name"), T("Alias Description"), T("Use See"), ! T("Owner")); notified++; } ! notify_format(player, ! "%c%-12.12s %-35.35s %s %-15.15s", MALIAS_TOKEN, m->name, ! uncompress((unsigned char *) (m->desc)), get_shortprivs(m), ! Name(m->owner)); } } *************** *** 292,298 **** m = get_malias(player, alias); if (!m) { ! notify(player, tprintf(T("MAIL: Alias '%s' not found."), alias)); return; } if ((m->owner == player) || (m->mflags == 0) || --- 292,298 ---- m = get_malias(player, alias); if (!m) { ! notify_format(player, T("MAIL: Alias '%s' not found."), alias); return; } if ((m->owner == player) || (m->mflags == 0) || *************** *** 325,331 **** struct mail_alias *m; if (!(m = get_malias(player, alias))) { ! notify(player, tprintf(T("MAIL: Alias %s not found."), alias)); return; } else if (Wizard(player) || (player == m->owner)) { if (m->desc) --- 325,331 ---- struct mail_alias *m; if (!(m = get_malias(player, alias))) { ! notify_format(player, T("MAIL: Alias %s not found."), alias); return; } else if (Wizard(player) || (player == m->owner)) { if (m->desc) *************** *** 348,354 **** dbref no = NOTHING; if (!(m = get_malias(player, alias))) { ! notify(player, tprintf(T("MAIL: Alias %s not found."), alias)); return; } else { if (!Wizard(player)) { --- 348,354 ---- dbref no = NOTHING; if (!(m = get_malias(player, alias))) { ! notify_format(player, T("MAIL: Alias %s not found."), alias); return; } else { if (!Wizard(player)) { *************** *** 380,388 **** return; } if (*newname != MALIAS_TOKEN) { ! notify(player, ! tprintf(T("MAIL: Bad alias. Aliases must start with '%c'."), ! MALIAS_TOKEN)); return; } if (get_malias(GOD, newname) != NULL) { --- 380,388 ---- return; } if (*newname != MALIAS_TOKEN) { ! notify_format(player, ! T("MAIL: Bad alias. Aliases must start with '%c'."), ! MALIAS_TOKEN); return; } if (get_malias(GOD, newname) != NULL) { *************** *** 493,502 **** } else target = lookup_player(head); if (!(GoodObject(target)) || (!IsPlayer(target))) { ! notify(player, tprintf(T("MAIL: No such player '%s'."), head)); } else { buff = unparse_object(player, target); ! notify(player, tprintf(T("MAIL: %s added to alias %s"), buff, alias)); alist[i] = target; i++; } --- 493,502 ---- } else target = lookup_player(head); if (!(GoodObject(target)) || (!IsPlayer(target))) { ! notify_format(player, T("MAIL: No such player '%s'."), head); } else { buff = unparse_object(player, target); ! notify_format(player, T("MAIL: %s added to alias %s"), buff, alias); alist[i] = target; i++; } *************** *** 563,571 **** if (!Hasprivs(player)) notify(player, T("MAIL: Permission denied.")); else { ! notify(player, ! tprintf(T("MAIL: Number of mail aliases defined: %d"), ma_top)); ! notify(player, tprintf(T("MAIL: Allocated slots %d"), ma_size)); } } --- 563,571 ---- if (!Hasprivs(player)) notify(player, T("MAIL: Permission denied.")); else { ! notify_format(player, ! T("MAIL: Number of mail aliases defined: %d"), ma_top); ! notify_format(player, T("MAIL: Allocated slots %d"), ma_size); } } *************** *** 618,626 **** } p = type ? &m->mflags : &m->nflags; *p = string_to_privs(malias_priv_table, privs, 0); ! notify(player, ! tprintf(T("MAIL: Permission to see/use alias '%s' changed to %s"), ! alias, privs_to_string(malias_priv_table, *p))); } --- 618,626 ---- } p = type ? &m->mflags : &m->nflags; *p = string_to_privs(malias_priv_table, privs, 0); ! notify_format(player, ! T("MAIL: Permission to see/use alias '%s' changed to %s"), ! alias, privs_to_string(malias_priv_table, *p)); } *************** *** 651,658 **** } ch = strstr(TYPES, tprintf(" %s", privs + 1)); if (!ch) { ! notify(player, ! tprintf(T("MAIL: Unknown permission type '%s'."), privs + 1)); notify(player, T ("Must be one of 'everyone', 'members', 'admin', 'owner' (can be abbreviated).")); --- 651,657 ---- } ch = strstr(TYPES, tprintf(" %s", privs + 1)); if (!ch) { ! notify_format(player, T("MAIL: Unknown permission type '%s'."), privs + 1); notify(player, T ("Must be one of 'everyone', 'members', 'admin', 'owner' (can be abbreviated).")); *************** *** 688,696 **** if (!m->mflags) m->mflags = ALIAS_OWNER; } ! notify(player, ! tprintf(T("MAIL: Permission to list alias '%s' changed to %s"), ! alias, get_privs(m->mflags))); } --- 687,695 ---- if (!m->mflags) m->mflags = ALIAS_OWNER; } ! notify_format(player, ! T("MAIL: Permission to list alias '%s' changed to %s"), ! alias, get_privs(m->mflags)); } *************** *** 712,718 **** m = get_malias(player, alias); if (!m) { ! notify(player, tprintf(T("MAIL: Mail Alias '%s' not found."), alias)); return; } if (!Wizard(player) && (m->owner != player)) { --- 711,717 ---- m = get_malias(player, alias); if (!m) { ! notify_format(player, T("MAIL: Mail Alias '%s' not found."), alias); return; } if (!Wizard(player) && (m->owner != player)) { *************** *** 754,768 **** } else target = lookup_player(head); if (!(GoodObject(target)) || (!IsPlayer(target))) { ! notify(player, tprintf(T("MAIL: No such player '%s'."), head)); } else { if (ismember(m, target)) { ! notify(player, ! tprintf(T("MAIL: player '%s' exists already in alias %s."), ! head, alias)); } else { buff = unparse_object(player, target); ! notify(player, tprintf(T("MAIL: %s added to alias %s"), buff, alias)); alist[i] = target; i++; } --- 753,767 ---- } else target = lookup_player(head); if (!(GoodObject(target)) || (!IsPlayer(target))) { ! notify_format(player, T("MAIL: No such player '%s'."), head); } else { if (ismember(m, target)) { ! notify_format(player, ! T("MAIL: player '%s' exists already in alias %s."), ! head, alias); } else { buff = unparse_object(player, target); ! notify_format(player, T("MAIL: %s added to alias %s"), buff, alias); alist[i] = target; i++; } *************** *** 795,801 **** m->size += i; ! notify(player, tprintf(T("MAIL: Alias set '%s' redefined."), alias)); } --- 794,800 ---- m->size += i; ! notify_format(player, T("MAIL: Alias set '%s' redefined."), alias); } *************** *** 816,822 **** m = get_malias(player, alias); if (!m) { ! notify(player, tprintf(T("MAIL: Mail Alias '%s' not found."), alias)); return; } if (!Wizard(player) && (m->owner != player)) { --- 815,821 ---- m = get_malias(player, alias); if (!m) { ! notify_format(player, T("MAIL: Mail Alias '%s' not found."), alias); return; } if (!Wizard(player) && (m->owner != player)) { *************** *** 858,873 **** } else target = lookup_player(head); if (!(GoodObject(target)) || (!IsPlayer(target))) { ! notify(player, tprintf(T("MAIL: No such player '%s'."), head)); } else { if (!(i = ismember(m, target))) { ! notify(player, tprintf(T("MAIL: player '%s' is not in alias %s."), ! head, alias)); } else { buff = unparse_object(player, target); m->members[i - 1] = m->members[--m->size]; ! notify(player, ! tprintf(T("MAIL: %s removed from alias %s"), buff, alias)); } } /* --- 857,871 ---- } else target = lookup_player(head); if (!(GoodObject(target)) || (!IsPlayer(target))) { ! notify_format(player, T("MAIL: No such player '%s'."), head); } else { if (!(i = ismember(m, target))) { ! notify_format(player, T("MAIL: player '%s' is not in alias %s."), ! head, alias); } else { buff = unparse_object(player, target); m->members[i - 1] = m->members[--m->size]; ! notify_format(player, T("MAIL: %s removed from alias %s"), buff, alias); } } /* *************** *** 879,885 **** head++; } ! notify(player, tprintf(T("MAIL: Alias set '%s' redefined."), alias)); } --- 877,883 ---- head++; } ! notify_format(player, T("MAIL: Alias set '%s' redefined."), alias); } *** 1_7_4.101/src/look.c Tue, 15 May 2001 15:59:50 -0500 dunemush (pennmush/c/4_look.c 1.21.1.1 660) --- 1_7_4.129(w)/src/look.c Tue, 10 Jul 2001 14:23:20 -0500 dunemush (pennmush/c/4_look.c 1.21.1.2 660) *************** *** 190,206 **** safe_tag("LI", tbuf1, &s1); safe_chr(' ', tbuf1, &s1); if (Location(thing) == NOTHING) ! safe_str(tprintf(T("%s leads nowhere."), nbuf), tbuf1, &s1); else if (Location(thing) == HOME) ! safe_str(tprintf(T("%s leads home."), nbuf), tbuf1, &s1); else if (Location(thing) == AMBIGUOUS) ! safe_str(tprintf(T("%s leads to a variable location."), nbuf), tbuf1, ! &s1); else if (!GoodObject(thing)) ! safe_str(tprintf(T("%s is corrupt!"), nbuf), tbuf1, &s1); else { ! safe_str(tprintf(T("%s leads to %s."), nbuf, Name(Location(thing))), ! tbuf1, &s1); } *s1 = '\0'; notify_nopenter_by(loc, player, tbuf1); --- 190,205 ---- safe_tag("LI", tbuf1, &s1); safe_chr(' ', tbuf1, &s1); if (Location(thing) == NOTHING) ! safe_format(tbuf1, &s1, T("%s leads nowhere."), nbuf); else if (Location(thing) == HOME) ! safe_format(tbuf1, &s1, T("%s leads home."), nbuf); else if (Location(thing) == AMBIGUOUS) ! safe_format(tbuf1, &s1, T("%s leads to a variable location."), nbuf); else if (!GoodObject(thing)) ! safe_format(tbuf1, &s1, T("%s is corrupt!"), nbuf); else { ! safe_format(tbuf1, &s1, T("%s leads to %s."), nbuf, ! Name(Location(thing))); } *s1 = '\0'; notify_nopenter_by(loc, player, tbuf1); *************** *** 346,377 **** if (TINY_ATTRS) { if (ShowAnsi(player)) { if (Owner(AL_CREATOR(atr)) != Owner(thing)) ! notify(player, ! tprintf("%s%s(#%d%s):%s%s", ANSI_HILITE, AL_NAME(atr), ! Owner(AL_CREATOR(atr)), fbuf, ANSI_NORMAL, r)); else if (*fbuf != '\0') ! notify(player, tprintf("%s%s(%s):%s%s", ANSI_HILITE, AL_NAME(atr), ! fbuf, ANSI_NORMAL, r)); else ! notify(player, tprintf("%s%s:%s%s", ANSI_HILITE, AL_NAME(atr), ! ANSI_NORMAL, r)); } else { if (Owner(AL_CREATOR(atr)) != Owner(thing)) ! notify(player, tprintf("%s(#%d%s):%s", AL_NAME(atr), ! Owner(AL_CREATOR(atr)), fbuf, r)); else if (*fbuf != '\0') ! notify(player, tprintf("%s(%s):%s", AL_NAME(atr), fbuf, r)); else ! notify(player, tprintf("%s:%s", AL_NAME(atr), r)); } } else { if (ShowAnsi(player)) { ! notify(player, ! tprintf("%s%s [#%d%s]:%s %s", ANSI_HILITE, AL_NAME(atr), ! Owner(AL_CREATOR(atr)), fbuf, ANSI_NORMAL, r)); } else { ! notify(player, tprintf("%s [#%d%s]: %s", AL_NAME(atr), ! Owner(AL_CREATOR(atr)), fbuf, r)); } } free((Malloc_t) r); --- 345,376 ---- if (TINY_ATTRS) { if (ShowAnsi(player)) { if (Owner(AL_CREATOR(atr)) != Owner(thing)) ! notify_format(player, ! "%s%s(#%d%s):%s%s", ANSI_HILITE, AL_NAME(atr), ! Owner(AL_CREATOR(atr)), fbuf, ANSI_NORMAL, r); else if (*fbuf != '\0') ! notify_format(player, "%s%s(%s):%s%s", ANSI_HILITE, AL_NAME(atr), ! fbuf, ANSI_NORMAL, r); else ! notify_format(player, "%s%s:%s%s", ANSI_HILITE, AL_NAME(atr), ! ANSI_NORMAL, r); } else { if (Owner(AL_CREATOR(atr)) != Owner(thing)) ! notify_format(player, "%s(#%d%s):%s", AL_NAME(atr), ! Owner(AL_CREATOR(atr)), fbuf, r); else if (*fbuf != '\0') ! notify_format(player, "%s(%s):%s", AL_NAME(atr), fbuf, r); else ! notify_format(player, "%s:%s", AL_NAME(atr), r); } } else { if (ShowAnsi(player)) { ! notify_format(player, ! "%s%s [#%d%s]:%s %s", ANSI_HILITE, AL_NAME(atr), ! Owner(AL_CREATOR(atr)), fbuf, ANSI_NORMAL, r); } else { ! notify_format(player, "%s [#%d%s]: %s", AL_NAME(atr), ! Owner(AL_CREATOR(atr)), fbuf, r); } } free((Malloc_t) r); *************** *** 701,721 **** } } if (ok) { ! notify(player, ! tprintf(T("Owner: %s Zone: %s %s: %d"), ! Name(Owner(thing)), ! object_header(player, Zone(thing)), MONIES, Pennies(thing))); ! notify(player, ! tprintf(T("Parent: %s"), object_header(player, Parent(thing)))); { struct lock_list *ll; for (ll = Locks(thing); ll; ll = ll->next) { ! notify(player, ! tprintf(T("%s Lock: %s"), ! ll->type, unparse_boolexp(player, ll->key, 0))); } } ! notify(player, tprintf(T("Powers: %s"), power_description(thing))); #ifdef CHAT_SYSTEM if (IsPlayer(thing) || Chanlist(thing)) --- 700,719 ---- } } if (ok) { ! notify_format(player, ! T("Owner: %s Zone: %s %s: %d"), ! Name(Owner(thing)), ! object_header(player, Zone(thing)), MONIES, Pennies(thing)); ! notify_format(player, ! T("Parent: %s"), object_header(player, Parent(thing))); { struct lock_list *ll; for (ll = Locks(thing); ll; ll = ll->next) { ! notify_format(player, T("%s Lock: %s"), ! ll->type, unparse_boolexp(player, ll->key, 0)); } } ! notify_format(player, T("Powers: %s"), power_description(thing)); #ifdef CHAT_SYSTEM if (IsPlayer(thing) || Chanlist(thing)) *************** *** 723,739 **** #endif /* CHAT_SYSTEM */ #ifdef USE_WARNINGS ! notify(player, tprintf(T("Warnings checked: %s"), unparse_warnings(thing))); #endif #ifdef CREATION_TIMES tp = (char *) ctime(&CreTime(thing)); tp[strlen(tp) - 1] = '\0'; ! notify(player, tprintf(T("Created: %s"), tp)); if (!IsPlayer(thing)) { tp = (char *) ctime(&ModTime(thing)); tp[strlen(tp) - 1] = '\0'; ! notify(player, tprintf(T("Last Modification: %s"), tp)); } #endif } --- 721,737 ---- #endif /* CHAT_SYSTEM */ #ifdef USE_WARNINGS ! notify_format(player, T("Warnings checked: %s"), unparse_warnings(thing)); #endif #ifdef CREATION_TIMES tp = (char *) ctime(&CreTime(thing)); tp[strlen(tp) - 1] = '\0'; ! notify_format(player, T("Created: %s"), tp); if (!IsPlayer(thing)) { tp = (char *) ctime(&ModTime(thing)); tp[strlen(tp) - 1] = '\0'; ! notify_format(player, T("Last Modification: %s"), tp); } #endif } *************** *** 778,797 **** notify(player, T("No exits.")); /* print dropto if present */ if (Location(thing) != NOTHING) { ! notify(player, ! tprintf(T("Dropped objects go to: %s"), ! object_header(player, Location(thing)))); } break; case TYPE_THING: case TYPE_PLAYER: /* print home */ ! notify(player, tprintf(T("Home: %s"), object_header(player, Home(thing)))); /* home */ /* print location if player can link to it */ if (Location(thing) != NOTHING) ! notify(player, ! tprintf(T("Location: %s"), ! object_header(player, Location(thing)))); break; case TYPE_EXIT: /* print source */ --- 776,794 ---- notify(player, T("No exits.")); /* print dropto if present */ if (Location(thing) != NOTHING) { ! notify_format(player, ! T("Dropped objects go to: %s"), ! object_header(player, Location(thing))); } break; case TYPE_THING: case TYPE_PLAYER: /* print home */ ! notify_format(player, T("Home: %s"), object_header(player, Home(thing))); /* home */ /* print location if player can link to it */ if (Location(thing) != NOTHING) ! notify_format(player, ! T("Location: %s"), object_header(player, Location(thing))); break; case TYPE_EXIT: /* print source */ *************** *** 813,820 **** Name(thing), thing, Destination(thing)); break; default: ! notify(player, ! tprintf(T("Source: %s"), object_header(player, Source(thing)))); break; } /* print destination */ --- 810,817 ---- Name(thing), thing, Destination(thing)); break; default: ! notify_format(player, ! T("Source: %s"), object_header(player, Source(thing))); break; } /* print destination */ *************** *** 826,834 **** notify(player, T("Destination: *HOME*")); break; default: ! notify(player, ! tprintf(T("Destination: %s"), ! object_header(player, Destination(thing)))); break; } break; --- 823,831 ---- notify(player, T("Destination: *HOME*")); break; default: ! notify_format(player, ! T("Destination: %s"), ! object_header(player, Destination(thing))); break; } break; *************** *** 844,852 **** dbref player; { ! notify(player, ! tprintf(T("You have %d %s."), ! Pennies(player), Pennies(player) == 1 ? MONEY : MONIES)); } void --- 841,849 ---- dbref player; { ! notify_format(player, ! T("You have %d %s."), ! Pennies(player), Pennies(player) == 1 ? MONEY : MONIES); } void *************** *** 878,885 **** int top = db_top; if (!payfor(player, FIND_COST)) { ! notify(player, tprintf(T("Finds cost %d %s."), FIND_COST, ! ((FIND_COST == 1) ? MONEY : MONIES))); return; } /* determinte range */ --- 875,882 ---- int top = db_top; if (!payfor(player, FIND_COST)) { ! notify_format(player, T("Finds cost %d %s."), FIND_COST, ! ((FIND_COST == 1) ? MONEY : MONIES)); return; } /* determinte range */ *************** *** 911,917 **** count++; } } ! notify(player, tprintf(T("*** %d objects found ***"), count)); } /* check the current location for bugs */ --- 908,914 ---- count++; } } ! notify_format(player, T("*** %d objects found ***"), count); } /* check the current location for bugs */ *************** *** 952,976 **** /* only worry about puppet and players who's owner's are connected */ if (Connected(here) || (Puppet(here) && Connected(Owner(here)))) { if (IsPlayer(here)) { ! notify(player, tprintf(T("%s is listening"), Name(here))); } else { ! notify(player, tprintf(T("%s [owner: %s] is listening."), ! Name(here), Name(Owner(here)))); } } } else { if (Hearer(here) || Listener(here)) { if (Connected(here)) ! notify(player, tprintf(T("%s (this room) [speech]. (connected)"), ! Name(here))); else ! notify(player, tprintf(T("%s (this room) [speech]."), Name(here))); } if (Commer(here)) ! notify(player, tprintf(T("%s (this room) [commands]."), Name(here))); if (Audible(here)) ! notify(player, ! tprintf(T("%s (this room) [broadcasting]."), Name(here))); } for (here = Contents(here); here != NOTHING; here = Next(here)) { --- 949,972 ---- /* only worry about puppet and players who's owner's are connected */ if (Connected(here) || (Puppet(here) && Connected(Owner(here)))) { if (IsPlayer(here)) { ! notify_format(player, T("%s is listening"), Name(here)); } else { ! notify_format(player, T("%s [owner: %s] is listening."), ! Name(here), Name(Owner(here))); } } } else { if (Hearer(here) || Listener(here)) { if (Connected(here)) ! notify_format(player, T("%s (this room) [speech]. (connected)"), ! Name(here)); else ! notify_format(player, T("%s (this room) [speech]."), Name(here)); } if (Commer(here)) ! notify_format(player, T("%s (this room) [commands]."), Name(here)); if (Audible(here)) ! notify_format(player, T("%s (this room) [broadcasting]."), Name(here)); } for (here = Contents(here); here != NOTHING; here = Next(here)) { *************** *** 978,998 **** /* only worry about puppet and players who's owner's are connected */ if (Connected(here) || (Puppet(here) && Connected(Owner(here)))) { if (IsPlayer(here)) { ! notify(player, tprintf(T("%s is listening"), Name(here))); } else { ! notify(player, tprintf(T("%s [owner: %s] is listening."), ! Name(here), Name(Owner(here)))); } } } else { if (Hearer(here) || Listener(here)) { if (Connected(here)) ! notify(player, tprintf("%s [speech]. (connected)", Name(here))); else ! notify(player, tprintf("%s [speech].", Name(here))); } if (Commer(here)) ! notify(player, tprintf("%s [commands].", Name(here))); } } } --- 974,994 ---- /* only worry about puppet and players who's owner's are connected */ if (Connected(here) || (Puppet(here) && Connected(Owner(here)))) { if (IsPlayer(here)) { ! notify_format(player, T("%s is listening"), Name(here)); } else { ! notify_format(player, T("%s [owner: %s] is listening."), ! Name(here), Name(Owner(here))); } } } else { if (Hearer(here) || Listener(here)) { if (Connected(here)) ! notify_format(player, "%s [speech]. (connected)", Name(here)); else ! notify_format(player, "%s [speech].", Name(here)); } if (Commer(here)) ! notify_format(player, "%s [commands].", Name(here)); } } } *************** *** 1005,1011 **** strcpy(tbuf1, Name(here)); for (p = tbuf1; *p && (*p != ';'); p++) ; *p = '\0'; ! notify(player, tprintf("%s [broadcasting].", tbuf1)); } } } --- 1001,1007 ---- strcpy(tbuf1, Name(here)); for (p = tbuf1; *p && (*p != ';'); p++) ; *p = '\0'; ! notify_format(player, "%s [broadcasting].", tbuf1); } } } *************** *** 1018,1038 **** /* only worry about puppet and players who's owner's are connected */ if (Connected(here) || (Puppet(here) && Connected(Owner(here)))) { if (IsPlayer(here)) { ! notify(player, tprintf(T("%s is listening"), Name(here))); } else { ! notify(player, tprintf(T("%s [owner: %s] is listening."), ! Name(here), Name(Owner(here)))); } } } else { if (Hearer(here) || Listener(here)) { if (Connected(here)) ! notify(player, tprintf("%s [speech]. (connected)", Name(here))); else ! notify(player, tprintf("%s [speech].", Name(here))); } if (Commer(here)) ! notify(player, tprintf("%s [commands].", Name(here))); } } } --- 1014,1034 ---- /* only worry about puppet and players who's owner's are connected */ if (Connected(here) || (Puppet(here) && Connected(Owner(here)))) { if (IsPlayer(here)) { ! notify_format(player, T("%s is listening"), Name(here)); } else { ! notify_format(player, T("%s [owner: %s] is listening."), ! Name(here), Name(Owner(here))); } } } else { if (Hearer(here) || Listener(here)) { if (Connected(here)) ! notify_format(player, "%s [speech]. (connected)", Name(here)); else ! notify_format(player, "%s [speech].", Name(here)); } if (Commer(here)) ! notify_format(player, "%s [commands].", Name(here)); } } } *************** *** 1054,1069 **** } if (!Can_Locate(player, thing)) { notify(player, T("That player wishes to have some privacy.")); ! notify(thing, ! tprintf(T("%s tried to locate you and failed."), Name(player))); return; } ! notify(player, ! tprintf(T("%s is at: %s."), Name(thing), ! unparse_object(player, Location(thing)))); if (!See_All(player)) ! notify(thing, ! tprintf(T("%s has just located your position."), Name(player))); return; } --- 1050,1063 ---- } if (!Can_Locate(player, thing)) { notify(player, T("That player wishes to have some privacy.")); ! notify_format(thing, T("%s tried to locate you and failed."), Name(player)); return; } ! notify_format(player, ! T("%s is at: %s."), Name(thing), ! unparse_object(player, Location(thing))); if (!See_All(player)) ! notify_format(thing, T("%s has just located your position."), Name(player)); return; } *************** *** 1096,1103 **** return; } if (!payfor(player, FIND_COST)) { ! notify(player, tprintf(T("You don't have enough %d %s to do that."), ! FIND_COST, ((FIND_COST == 1) ? MONEY : MONIES))); return; } /* figure out what we're looking for */ --- 1090,1097 ---- return; } if (!payfor(player, FIND_COST)) { ! notify_format(player, T("You don't have enough %d %s to do that."), ! FIND_COST, ((FIND_COST == 1) ? MONEY : MONIES)); return; } /* figure out what we're looking for */ *************** *** 1140,1148 **** case TYPE_EXIT: if (exd) { if (Location(counter) == place) { ! notify(player, ! tprintf("%s(#%d) [from: %s(#%d)]", Name(counter), ! counter, Name(Source(counter)), Source(counter))); exc++; } } --- 1134,1142 ---- case TYPE_EXIT: if (exd) { if (Location(counter) == place) { ! notify_format(player, ! "%s(#%d) [from: %s(#%d)]", Name(counter), ! counter, Name(Source(counter)), Source(counter)); exc++; } } *************** *** 1150,1156 **** case TYPE_ROOM: if (rd) { if (Location(counter) == place) { ! notify(player, tprintf("%s(#%d) [dropto]", Name(counter), counter)); rc++; } } --- 1144,1150 ---- case TYPE_ROOM: if (rd) { if (Location(counter) == place) { ! notify_format(player, "%s(#%d) [dropto]", Name(counter), counter); rc++; } } *************** *** 1158,1164 **** case TYPE_THING: if (td) { if (Home(counter) == place) { ! notify(player, tprintf("%s(#%d) [home]", Name(counter), counter)); tc++; } } --- 1152,1158 ---- case TYPE_THING: if (td) { if (Home(counter) == place) { ! notify_format(player, "%s(#%d) [home]", Name(counter), counter); tc++; } } *************** *** 1166,1172 **** case TYPE_PLAYER: if (pd) { if (Home(counter) == place) { ! notify(player, tprintf("%s(#%d) [home]", Name(counter), counter)); pc++; } } --- 1160,1166 ---- case TYPE_PLAYER: if (pd) { if (Home(counter) == place) { ! notify_format(player, "%s(#%d) [home]", Name(counter), counter); pc++; } } *************** *** 1180,1189 **** return; } else { notify(player, T("---------- Entrances Done ----------")); ! notify(player, ! tprintf ! ("Totals: Rooms...%d Exits...%d Objects...%d Players...%d", ! rc, exc, tc, pc)); return; } } --- 1174,1182 ---- return; } else { notify(player, T("---------- Entrances Done ----------")); ! notify_format(player, ! "Totals: Rooms...%d Exits...%d Objects...%d Players...%d", ! rc, exc, tc, pc); return; } } *************** *** 1235,1241 **** privs = (char *) privs_to_string(attr_privs, AL_FLAGS(atr)); } if (privs && *privs) ! notify(player, tprintf("@set %s/%s=%s", dh->name, AL_NAME(atr), privs)); } return 1; } --- 1228,1234 ---- privs = (char *) privs_to_string(attr_privs, AL_FLAGS(atr)); } if (privs && *privs) ! notify_format(player, "@set %s/%s=%s", dh->name, AL_NAME(atr), privs); } return 1; } *************** *** 1353,1359 **** } else object = Name(thing); if (dbflag != 4) ! notify(player, tprintf("@create %s", object)); break; case TYPE_ROOM: if (dbflag == 1) { --- 1346,1352 ---- } else object = Name(thing); if (dbflag != 4) ! notify_format(player, "@create %s", object); break; case TYPE_ROOM: if (dbflag == 1) { *************** *** 1362,1368 **** } else object = "here"; if (dbflag != 4) ! notify(player, tprintf("@dig/teleport %s", Name(thing))); break; case TYPE_EXIT: if (dbflag == 1) { --- 1355,1361 ---- } else object = "here"; if (dbflag != 4) ! notify_format(player, "@dig/teleport %s", Name(thing)); break; case TYPE_EXIT: if (dbflag == 1) { *************** *** 1370,1376 **** } else { object = shortname(thing); if (dbflag != 4) ! notify(player, tprintf("@open %s", Name(thing))); } break; } --- 1363,1369 ---- } else { object = shortname(thing); if (dbflag != 4) ! notify_format(player, "@open %s", Name(thing)); } break; } *************** *** 1378,1399 **** if (dbflag != 4) { if (Mobile(thing)) { if (GoodObject(Home(thing))) ! notify(player, tprintf("@link %s = #%d", object, Home(thing))); else if (Home(thing) == HOME) ! notify(player, tprintf("@link %s = HOME", object)); } else { if (GoodObject(Destination(thing))) ! notify(player, tprintf("@link %s = #%d", object, Destination(thing))); else if (Destination(thing) == AMBIGUOUS) ! notify(player, tprintf("@link %s = VARIABLE", object)); else if (Destination(thing) == HOME) ! notify(player, tprintf("@link %s = HOME", object)); } if (GoodObject(Zone(thing))) ! notify(player, tprintf("@chzone %s = #%d", object, Zone(thing))); if (GoodObject(Parent(thing))) ! notify(player, tprintf("@parent %s=#%d", object, Parent(thing))); decompile_locks(player, thing, object); decompile_flags(player, thing, object); --- 1371,1392 ---- if (dbflag != 4) { if (Mobile(thing)) { if (GoodObject(Home(thing))) ! notify_format(player, "@link %s = #%d", object, Home(thing)); else if (Home(thing) == HOME) ! notify_format(player, "@link %s = HOME", object); } else { if (GoodObject(Destination(thing))) ! notify_format(player, "@link %s = #%d", object, Destination(thing)); else if (Destination(thing) == AMBIGUOUS) ! notify_format(player, "@link %s = VARIABLE", object); else if (Destination(thing) == HOME) ! notify_format(player, "@link %s = HOME", object); } if (GoodObject(Zone(thing))) ! notify_format(player, "@chzone %s = #%d", object, Zone(thing)); if (GoodObject(Parent(thing))) ! notify_format(player, "@parent %s=#%d", object, Parent(thing)); decompile_locks(player, thing, object); decompile_flags(player, thing, object); *** 1_7_4.101/src/game.c Thu, 31 May 2001 11:19:20 -0500 dunemush (pennmush/c/10_game.c 1.50.1.8.1.1.1.1.2.1.1.1.2.1 660) --- 1_7_4.129(w)/src/game.c Tue, 10 Jul 2001 14:23:19 -0500 dunemush (pennmush/c/10_game.c 1.50.1.8.1.1.1.1.2.1.1.1.2.1.1.3 660) *************** *** 39,44 **** --- 39,48 ---- #include #endif + #ifdef macintosh + extern void PMSMushSetup(void); + #endif + #include "conf.h" #include "mushdb.h" #include "game.h" *************** *** 176,189 **** paranoid_checkpt = 1; } if (flag == 1) { ! notify(player, tprintf(T("Paranoid dumping, checkpoint interval %d."), ! paranoid_checkpt)); do_rawlog(LT_CHECK, "*** PARANOID DUMP *** done by %s(#%d),\n", Name(player), player); } else { ! notify(player, tprintf(T("Debug dumping, checkpoint interval %d."), ! paranoid_checkpt)); do_rawlog(LT_CHECK, "*** DEBUG DUMP *** done by %s(#%d),\n", Name(player), player); --- 180,193 ---- paranoid_checkpt = 1; } if (flag == 1) { ! notify_format(player, T("Paranoid dumping, checkpoint interval %d."), ! paranoid_checkpt); do_rawlog(LT_CHECK, "*** PARANOID DUMP *** done by %s(#%d),\n", Name(player), player); } else { ! notify_format(player, T("Debug dumping, checkpoint interval %d."), ! paranoid_checkpt); do_rawlog(LT_CHECK, "*** DEBUG DUMP *** done by %s(#%d),\n", Name(player), player); *************** *** 670,675 **** --- 674,682 ---- #ifdef WIN32 Win32MUSH_setup(); /* create index files, copy databases etc. */ #endif + #ifdef macintosh + PMSMushSetup(); + #endif infile = restarting ? options.output_db : options.input_db; outfile = options.output_db; *************** *** 890,898 **** /* Halted objects can't execute commands */ /* And neither can halted players if the command isn't from_port */ if (Halted(player) && (!IsPlayer(player) || !from_port)) { ! notify(Owner(player), ! tprintf(T("Attempt to execute command by halted object #%d"), ! player)); return; } /* Players and things should not have invalid locations. This check --- 897,904 ---- /* Halted objects can't execute commands */ /* And neither can halted players if the command isn't from_port */ if (Halted(player) && (!IsPlayer(player) || !from_port)) { ! notify_format(Owner(player), ! T("Attempt to execute command by halted object #%d"), player); return; } /* Players and things should not have invalid locations. This check *************** *** 900,908 **** */ if ((!GoodObject(Location(player)) || (IsGarbage(Location(player)))) && Mobile(player)) { ! notify(Owner(player), ! tprintf(T("Invalid location on command execution: %s(#%d)"), ! Name(player), player)); do_log(LT_ERR, NOTHING, NOTHING, T("Command attempted by %s(#%d) in invalid location #%d."), Name(player), player, Location(player)); --- 906,914 ---- */ if ((!GoodObject(Location(player)) || (IsGarbage(Location(player)))) && Mobile(player)) { ! notify_format(Owner(player), ! T("Invalid location on command execution: %s(#%d)"), ! Name(player), player); do_log(LT_ERR, NOTHING, NOTHING, T("Command attempted by %s(#%d) in invalid location #%d."), Name(player), player, Location(player)); *************** *** 1209,1218 **** for (a = 0; a < db_top; a++) if (IsPlayer(a)) s_Pennies(a, amt); ! notify(player, ! tprintf ! (T("The money supply of all players has been reset to %d %s."), amt, ! MONIES)); do_log(LT_WIZ, player, NOTHING, T("** POOR done ** Money supply reset to %d %s."), amt, MONIES); } --- 1215,1223 ---- for (a = 0; a < db_top; a++) if (IsPlayer(a)) s_Pennies(a, amt); ! notify_format(player, ! T("The money supply of all players has been reset to %d %s."), ! amt, MONIES); do_log(LT_WIZ, player, NOTHING, T("** POOR done ** Money supply reset to %d %s."), amt, MONIES); } *************** *** 1295,1303 **** DOLIST(thing, Contents(Location(player))) { if (ScanFind(player, thing)) { *ptr = '\0'; ! notify(player, ! tprintf("%s [%d:%s]", unparse_object(player, thing), num, ! atrname)); ptr = atrname; } } --- 1300,1308 ---- DOLIST(thing, Contents(Location(player))) { if (ScanFind(player, thing)) { *ptr = '\0'; ! notify_format(player, ! "%s [%d:%s]", unparse_object(player, thing), num, ! atrname); ptr = atrname; } } *************** *** 1306,1314 **** if (flag & CHECK_HERE) { if (ScanFind(player, Location(player))) { *ptr = '\0'; ! notify(player, tprintf(T("Matched here: %s [%d:%s]"), ! unparse_object(player, Location(player)), num, ! atrname)); } } ptr = atrname; --- 1311,1318 ---- if (flag & CHECK_HERE) { if (ScanFind(player, Location(player))) { *ptr = '\0'; ! notify_format(player, T("Matched here: %s [%d:%s]"), ! unparse_object(player, Location(player)), num, atrname); } } ptr = atrname; *************** *** 1317,1324 **** DOLIST(thing, Contents(player)) { if (ScanFind(player, thing)) { *ptr = '\0'; ! notify(player, tprintf("%s [%d:%s]", ! unparse_object(player, thing), num, atrname)); ptr = atrname; } } --- 1321,1328 ---- DOLIST(thing, Contents(player)) { if (ScanFind(player, thing)) { *ptr = '\0'; ! notify_format(player, "%s [%d:%s]", ! unparse_object(player, thing), num, atrname); ptr = atrname; } } *************** *** 1327,1334 **** if (flag & CHECK_SELF) { if (ScanFind(player, player)) { *ptr = '\0'; ! notify(player, tprintf(T("Matched self: %s [%d:%s]"), ! unparse_object(player, player), num, atrname)); } } ptr = atrname; --- 1331,1338 ---- if (flag & CHECK_SELF) { if (ScanFind(player, player)) { *ptr = '\0'; ! notify_format(player, T("Matched self: %s [%d:%s]"), ! unparse_object(player, player), num, atrname); } } ptr = atrname; *************** *** 1342,1350 **** DOLIST(thing, Contents(Zone(Location(player)))) { if (ScanFind(player, thing)) { *ptr = '\0'; ! notify(player, tprintf("%s [%d:%s]", ! unparse_object(player, thing), num, ! atrname)); ptr = atrname; } } --- 1346,1353 ---- DOLIST(thing, Contents(Zone(Location(player)))) { if (ScanFind(player, thing)) { *ptr = '\0'; ! notify_format(player, "%s [%d:%s]", ! unparse_object(player, thing), num, atrname); ptr = atrname; } } *************** *** 1353,1362 **** /* regular zone object */ if (ScanFind(player, Zone(Location(player)))) { *ptr = '\0'; ! notify(player, ! tprintf(T("Matched zone of location: %s [%d:%s]"), ! unparse_object(player, Zone(Location(player))), ! num, atrname)); } } ptr = atrname; --- 1356,1365 ---- /* regular zone object */ if (ScanFind(player, Zone(Location(player)))) { *ptr = '\0'; ! notify_format(player, ! T("Matched zone of location: %s [%d:%s]"), ! unparse_object(player, Zone(Location(player))), ! num, atrname); } } ptr = atrname; *************** *** 1364,1372 **** /* check the player's personal zone */ if (ScanFind(player, Zone(player))) { *ptr = '\0'; ! notify(player, tprintf(T("Matched personal zone: %s [%d:%s]"), ! unparse_object(player, Zone(player)), num, ! atrname)); } } } --- 1367,1374 ---- /* check the player's personal zone */ if (ScanFind(player, Zone(player))) { *ptr = '\0'; ! notify_format(player, T("Matched personal zone: %s [%d:%s]"), ! unparse_object(player, Zone(player)), num, atrname); } } } *************** *** 1381,1388 **** DOLIST(thing, Contents(MASTER_ROOM)) { if (ScanFind(player, thing)) { *ptr = '\0'; ! notify(player, tprintf("%s [%d:%s]", ! unparse_object(player, thing), num, atrname)); ptr = atrname; } } --- 1383,1390 ---- DOLIST(thing, Contents(MASTER_ROOM)) { if (ScanFind(player, thing)) { *ptr = '\0'; ! notify_format(player, "%s [%d:%s]", ! unparse_object(player, thing), num, atrname); ptr = atrname; } } *************** *** 1538,1561 **** notify(player, tbuf1); /* calculate times until various events */ ! notify(player, ! tprintf(T("Time until next database save: %ld minutes %ld seconds."), ! (options.dump_counter - mudtime) / 60, ! (options.dump_counter - mudtime) % 60)); ! notify(player, ! tprintf(T(" Time until next dbck check: %ld minutes %ld seconds."), ! (options.dbck_counter - mudtime) / 60, ! (options.dbck_counter - mudtime) % 60)); ! notify(player, ! tprintf(T(" Time until next purge: %ld minutes %ld seconds."), ! (options.purge_counter - mudtime) / 60, ! (options.purge_counter - mudtime) % 60)); #ifdef USE_WARNINGS if (options.warn_interval) ! notify(player, ! tprintf(T(" Time until next @warnings: %ld minutes %ld seconds."), ! (options.warn_counter - mudtime) / 60, ! (options.warn_counter - mudtime) % 60)); #endif /* Mortals, go no further! */ --- 1540,1563 ---- notify(player, tbuf1); /* calculate times until various events */ ! notify_format(player, ! T("Time until next database save: %ld minutes %ld seconds."), ! (options.dump_counter - mudtime) / 60, ! (options.dump_counter - mudtime) % 60); ! notify_format(player, ! T(" Time until next dbck check: %ld minutes %ld seconds."), ! (options.dbck_counter - mudtime) / 60, ! (options.dbck_counter - mudtime) % 60); ! notify_format(player, ! T(" Time until next purge: %ld minutes %ld seconds."), ! (options.purge_counter - mudtime) / 60, ! (options.purge_counter - mudtime) % 60); #ifdef USE_WARNINGS if (options.warn_interval) ! notify_format(player, ! T(" Time until next @warnings: %ld minutes %ld seconds."), ! (options.warn_counter - mudtime) / 60, ! (options.warn_counter - mudtime) % 60); #endif /* Mortals, go no further! */ *************** *** 1647,1654 **** pid = getpid(); psize = getpagesize(); ! notify(player, tprintf(T("\nProcess ID: %10u %10d bytes per page"), ! pid, psize)); #ifdef linux /* Linux's getrusage() is mostly unimplemented. Just has times, page faults --- 1649,1656 ---- pid = getpid(); psize = getpagesize(); ! notify_format(player, T("\nProcess ID: %10u %10d bytes per page"), ! pid, psize); #ifdef linux /* Linux's getrusage() is mostly unimplemented. Just has times, page faults *************** *** 1656,1666 **** #ifdef HAS_GETRUSAGE getrusage(RUSAGE_SELF, &usage); ! notify(player, tprintf(T("Time used: %10ld user %10ld sys"), ! usage.ru_utime.tv_sec, usage.ru_stime.tv_sec)); ! notify(player, ! tprintf(T("Page faults: %10ld hard %10ld soft %10ld swapouts"), ! usage.ru_majflt, usage.ru_minflt, usage.ru_nswap)); #endif fp = fopen("/proc/self/status", "r"); --- 1658,1668 ---- #ifdef HAS_GETRUSAGE getrusage(RUSAGE_SELF, &usage); ! notify_format(player, T("Time used: %10ld user %10ld sys"), ! usage.ru_utime.tv_sec, usage.ru_stime.tv_sec); ! notify_format(player, ! T("Page faults: %10ld hard %10ld soft %10ld swapouts"), ! usage.ru_majflt, usage.ru_minflt, usage.ru_nswap); #endif fp = fopen("/proc/self/status", "r"); *************** *** 1754,1779 **** #else /* LINUX */ #ifdef HAS_GETRUSAGE getrusage(RUSAGE_SELF, &usage); ! notify(player, tprintf(T("Time used: %10ld user %10ld sys"), ! usage.ru_utime.tv_sec, usage.ru_stime.tv_sec)); ! notify(player, tprintf("Max res mem: %10ld pages %10ld bytes", ! usage.ru_maxrss, (usage.ru_maxrss * psize))); ! notify(player, ! tprintf("Integral mem:%10ld shared %10ld private %10ld stack", ! usage.ru_ixrss, usage.ru_idrss, usage.ru_isrss)); ! notify(player, ! tprintf(T("Page faults: %10ld hard %10ld soft %10ld swapouts"), ! usage.ru_majflt, usage.ru_minflt, usage.ru_nswap)); ! notify(player, ! tprintf(T("Disk I/O: %10ld reads %10ld writes"), ! usage.ru_inblock, usage.ru_oublock)); ! notify(player, ! tprintf(T("Network I/O: %10ld in %10ld out"), usage.ru_msgrcv, ! usage.ru_msgsnd)); ! notify(player, ! tprintf(T("Context swi: %10ld vol %10ld forced"), usage.ru_nvcsw, ! usage.ru_nivcsw)); ! notify(player, tprintf("Signals: %10ld", usage.ru_nsignals)); #endif /* HAS_GETRUSAGE */ #endif /* LINUX */ } --- 1756,1781 ---- #else /* LINUX */ #ifdef HAS_GETRUSAGE getrusage(RUSAGE_SELF, &usage); ! notify_format(player, T("Time used: %10ld user %10ld sys"), ! usage.ru_utime.tv_sec, usage.ru_stime.tv_sec); ! notify_format(player, "Max res mem: %10ld pages %10ld bytes", ! usage.ru_maxrss, (usage.ru_maxrss * psize)); ! notify_format(player, ! "Integral mem:%10ld shared %10ld private %10ld stack", ! usage.ru_ixrss, usage.ru_idrss, usage.ru_isrss); ! notify_format(player, ! T("Page faults: %10ld hard %10ld soft %10ld swapouts"), ! usage.ru_majflt, usage.ru_minflt, usage.ru_nswap); ! notify_format(player, ! T("Disk I/O: %10ld reads %10ld writes"), ! usage.ru_inblock, usage.ru_oublock); ! notify_format(player, ! T("Network I/O: %10ld in %10ld out"), usage.ru_msgrcv, ! usage.ru_msgsnd); ! notify_format(player, ! T("Context swi: %10ld vol %10ld forced"), usage.ru_nvcsw, ! usage.ru_nivcsw); ! notify_format(player, "Signals: %10ld", usage.ru_nsignals); #endif /* HAS_GETRUSAGE */ #endif /* LINUX */ } *** 1_7_4.101/src/funtime.c Fri, 11 May 2001 15:40:56 -0500 dunemush (pennmush/c/12_funtime.c 1.11.1.3 660) --- 1_7_4.129(w)/src/funtime.c Tue, 10 Jul 2001 14:23:19 -0500 dunemush (pennmush/c/12_funtime.c 1.11.1.4 660) *************** *** 34,44 **** return; /* No field? Bad user. */ if (nargs == 2) { ! if (!is_integer(args[1])) { ! safe_str(T(e_int), buff, bp); return; } ! tt = parse_integer(args[1]); } else tt = mudtime; --- 34,44 ---- return; /* No field? Bad user. */ if (nargs == 2) { ! if (!is_uinteger(args[1])) { ! safe_str(T(e_uint), buff, bp); return; } ! tt = parse_uinteger(args[1]); } else tt = mudtime; *************** *** 62,84 **** FUNCTION(fun_time) { char *s; - - s = (char *) ctime(&mudtime); - s[strlen(s) - 1] = '\0'; - if (s[8] == ' ') - s[8] = '0'; - safe_str(s, buff, bp); - } - - /* ARGSUSED */ - FUNCTION(fun_utctime) - { - /* Returns a time() string for UTC, not local time */ struct tm *t; - char *s; ! t = gmtime(&mudtime); ! s = asctime(t); s[strlen(s) - 1] = '\0'; if (s[8] == ' ') s[8] = '0'; --- 62,75 ---- FUNCTION(fun_time) { char *s; struct tm *t; ! if ((nargs == 1 && strcasecmp("UTC", args[0]) == 0) || ! strcmp("UTCTIME", called_as) == 0) ! t = gmtime(&mudtime); ! else ! t = localtime(&mudtime); ! s = (char *) asctime(t); s[strlen(s) - 1] = '\0'; if (s[8] == ' ') s[8] = '0'; *************** *** 86,92 **** } /* ARGSUSED */ - FUNCTION(fun_secs) { safe_integer(mudtime, buff, bp); --- 77,82 ---- *************** *** 102,119 **** char *s; int utc = 0; ! if (strcmp(called_as, "CONVUTCSECS") == 0) utc = 1; ! if (!is_integer(args[0])) { ! safe_str(T(e_int), buff, bp); ! return; ! } ! tt = parse_integer(args[0]); ! if (tt < 0) { ! safe_str(T("#-1 ARGUMENT MUST BE POSITIVE"), buff, bp); return; } if (utc) ttm = gmtime(&tt); --- 92,106 ---- char *s; int utc = 0; ! if (strcmp(called_as, "CONVUTCSECS") == 0 || ! (nargs == 2 && strcasecmp("UTC", args[1]) == 0)) utc = 1; ! if (!is_uinteger(args[0])) { ! safe_str(T(e_uint), buff, bp); return; } + tt = parse_uinteger(args[0]); if (utc) ttm = gmtime(&tt); *************** *** 153,177 **** int secs, pad; int days, hours, mins; ! if (!is_integer(args[0])) { ! safe_str(T(e_ints), buff, bp); return; } if (nargs == 1) pad = 0; else { ! if (!is_integer(args[1])) { ! safe_str(T(e_ints), buff, bp); return; } ! pad = parse_integer(args[1]); } ! secs = parse_integer(args[0]); ! if (secs < 0) { ! safe_str(T(e_range), buff, bp); ! return; ! } days = secs / 86400; secs %= 86400; hours = secs / 3600; --- 140,161 ---- int secs, pad; int days, hours, mins; ! if (!is_uinteger(args[0])) { ! safe_str(T(e_uints), buff, bp); return; } if (nargs == 1) pad = 0; else { ! if (!is_uinteger(args[1])) { ! safe_str(T(e_uints), buff, bp); return; } ! pad = parse_uinteger(args[1]); } ! secs = parse_uinteger(args[0]); ! days = secs / 86400; secs %= 86400; hours = secs / 3600; *** 1_7_4.101/src/funstr.c Fri, 08 Jun 2001 14:14:28 -0500 dunemush (pennmush/c/13_funstr.c 1.28.1.1.1.2.1.4.1.4 660) --- 1_7_4.129(w)/src/funstr.c Tue, 10 Jul 2001 14:23:19 -0500 dunemush (pennmush/c/13_funstr.c 1.28.1.1.1.2.1.4.1.5 660) *************** *** 1251,1257 **** FUNCTION(fun_brackets) { ! char *str, *rbuff; int rbrack, lbrack, rbrace, lbrace, lcurl, rcurl; lcurl = rcurl = rbrack = lbrack = rbrace = lbrace = 0; --- 1251,1257 ---- FUNCTION(fun_brackets) { ! char *str; int rbrack, lbrack, rbrace, lbrace, lcurl, rcurl; lcurl = rcurl = rbrack = lbrack = rbrace = lbrace = 0; *************** *** 1281,1289 **** } str++; } ! rbuff = ! tprintf("%d %d %d %d %d %d", lbrack, rbrack, lbrace, rbrace, lcurl, rcurl); ! safe_str(rbuff, buff, bp); } --- 1281,1288 ---- } str++; } ! safe_format(buff, bp, "%d %d %d %d %d %d", lbrack, rbrack, ! lbrace, rbrace, lcurl, rcurl); } *** 1_7_4.101/src/funmisc.c Sat, 07 Apr 2001 13:33:48 -0500 dunemush (pennmush/c/14_funmisc.c 1.27 660) --- 1_7_4.129(w)/src/funmisc.c Tue, 10 Jul 2001 14:23:19 -0500 dunemush (pennmush/c/14_funmisc.c 1.28 660) *************** *** 147,162 **** #endif /* ARGSUSED */ FUNCTION(fun_setq) { /* sets a variable into a local register */ ! static char qindex[NUMQ] = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ"; ! char *qp; if (*args[0] && (*(args[0] + 1) == '\0') && ! (qp = strchr(qindex, UPCASE(*args[0]))) && renv[qp - qindex]) { ! strcpy(renv[qp - qindex], args[1]); if (!strcmp(called_as, "SETR")) safe_str(args[1], buff, bp); } else --- 147,163 ---- #endif + extern signed char qreg_indexes[UCHAR_MAX + 1]; /* ARGSUSED */ FUNCTION(fun_setq) { /* sets a variable into a local register */ ! int qindex; if (*args[0] && (*(args[0] + 1) == '\0') && ! ((qindex = qreg_indexes[(unsigned char) args[0][0]]) != -1) ! && renv[qindex]) { ! strcpy(renv[qindex], args[1]); if (!strcmp(called_as, "SETR")) safe_str(args[1], buff, bp); } else *************** *** 167,178 **** FUNCTION(fun_r) { /* returns a local register */ ! static char qindex[NUMQ] = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ"; ! char *qp; if (*args[0] && (*(args[0] + 1) == '\0') && ! (qp = strchr(qindex, UPCASE(*args[0]))) && renv[qp - qindex]) ! safe_str(renv[qp - qindex], buff, bp); else safe_str(T("#-1 REGISTER OUT OF RANGE"), buff, bp); } --- 168,179 ---- FUNCTION(fun_r) { /* returns a local register */ ! int qindex; if (*args[0] && (*(args[0] + 1) == '\0') && ! ((qindex = qreg_indexes[(unsigned char) args[0][0]]) != -1) ! && renv[qindex]) ! safe_str(renv[qindex], buff, bp); else safe_str(T("#-1 REGISTER OUT OF RANGE"), buff, bp); } *** 1_7_4.101/src/funlist.c Thu, 31 May 2001 11:19:20 -0500 dunemush (pennmush/c/16_funlist.c 1.3.1.1.1.5.1.2.1.1.1.1.1.4.1.2.1.2.1.19.1.2.1.1.1.2.1.1 660) --- 1_7_4.129(w)/src/funlist.c Tue, 10 Jul 2001 14:23:19 -0500 dunemush (pennmush/c/16_funlist.c 1.3.1.1.1.5.1.2.1.1.1.1.1.4.1.2.1.2.1.19.1.2.1.1.1.2.1.2 660) *************** *** 2492,2498 **** } ! FUNCTION(fun_regmatch) { /* --------------------------------------------------------------------------- --- 2492,2498 ---- } ! extern signed char qreg_indexes[UCHAR_MAX + 1]; FUNCTION(fun_regmatch) { /* --------------------------------------------------------------------------- *************** *** 2516,2523 **** int offsets[99]; int subpatterns; int flags = 0; ! static char qindex[NUMQ] = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ"; ! char *qp; if (strcmp(called_as, "REGMATCHI") == 0) flags = PCRE_CASELESS; --- 2516,2522 ---- int offsets[99]; int subpatterns; int flags = 0; ! int qindex; if (strcmp(called_as, "REGMATCHI") == 0) flags = PCRE_CASELESS; *************** *** 2554,2561 **** subpatterns = 33; nqregs = list2arr(qregs, NUMQ, args[2], ' '); for (i = 0; i < nqregs; i++) { ! if (qregs[i] && *qregs[i] && (qp = strchr(qindex, UPCASE(*qregs[i])))) ! curq = qp - qindex; else curq = -1; if (curq < 0 || curq >= NUMQ) --- 2553,2561 ---- subpatterns = 33; nqregs = list2arr(qregs, NUMQ, args[2], ' '); for (i = 0; i < nqregs; i++) { ! if (qregs[i] && qregs[i][0] && !qregs[i][1] && ! ((qindex = qreg_indexes[(unsigned char) qregs[i][0]]) != -1)) ! curq = qindex; else curq = -1; if (curq < 0 || curq >= NUMQ) *** 1_7_4.101/src/fundb.c Fri, 08 Jun 2001 14:14:28 -0500 dunemush (pennmush/c/17_fundb.c 1.1.1.1.1.1.1.1.1.1.1.1.1.3.1.1.1.1.1.7.1.3.1.3.1.3.1.2.1.2.1.3.2.1.2.1.2.1.1.1 660) --- 1_7_4.129(w)/src/fundb.c Tue, 10 Jul 2001 14:23:19 -0500 dunemush (pennmush/c/17_fundb.c 1.1.1.1.1.1.1.1.1.1.1.1.1.3.1.1.1.1.1.7.1.3.1.3.1.3.1.2.1.2.1.3.2.1.2.1.2.1.1.1.1.2 660) *************** *** 724,731 **** return; } if (!payfor(executor, FIND_COST)) { ! notify(executor, tprintf(T("You don't have %d %s to do that."), ! FIND_COST, ((FIND_COST == 1) ? MONEY : MONIES))); safe_str("#-1", buff, bp); return; } --- 724,731 ---- return; } if (!payfor(executor, FIND_COST)) { ! notify_format(executor, T("You don't have %d %s to do that."), ! FIND_COST, ((FIND_COST == 1) ? MONEY : MONIES)); safe_str("#-1", buff, bp); return; } *************** *** 1295,1305 **** target = lookup_player(args[0]); if (target == NOTHING) { if (*args[0] == '*') ! target = short_page(args[0] + 1); else ! target = short_page(args[0]); ! if (hidden(target) && !Priv_Who(executor)) ! target = NOTHING; } switch (target) { case NOTHING: --- 1295,1303 ---- target = lookup_player(args[0]); if (target == NOTHING) { if (*args[0] == '*') ! target = visible_short_page(executor, args[0] + 1); else ! target = visible_short_page(executor, args[0]); } switch (target) { case NOTHING: *************** *** 1402,1408 **** ambig_ok = 1; /* okay to pick last match */ break; default: ! notify(executor, tprintf(T("I don't understand switch '%c'."), *p)); break; } } --- 1400,1406 ---- ambig_ok = 1; /* okay to pick last match */ break; default: ! notify_format(executor, T("I don't understand switch '%c'."), *p); break; } } *** 1_7_4.101/src/function.c Fri, 25 May 2001 11:53:48 -0500 dunemush (pennmush/c/18_function.c 1.29.1.14.1.3.1.2 660) --- 1_7_4.129(w)/src/function.c Tue, 10 Jul 2001 14:23:19 -0500 dunemush (pennmush/c/18_function.c 1.29.1.14.1.3.1.4 660) *************** *** 194,200 **** {"CONFIG", fun_config, 1, 1, FN_REG}, {"CONN", fun_conn, 1, 1, FN_REG}, {"CONTROLS", fun_controls, 2, 2, FN_REG}, ! {"CONVSECS", fun_convsecs, 1, 1, FN_REG}, {"CONVUTCSECS", fun_convsecs, 1, 1, FN_REG}, {"CONVTIME", fun_convtime, 1, 1, FN_REG}, {"COR", fun_cor, 2, INT_MAX, FN_NOPARSE}, --- 194,200 ---- {"CONFIG", fun_config, 1, 1, FN_REG}, {"CONN", fun_conn, 1, 1, FN_REG}, {"CONTROLS", fun_controls, 2, 2, FN_REG}, ! {"CONVSECS", fun_convsecs, 1, 2, FN_REG}, {"CONVUTCSECS", fun_convsecs, 1, 1, FN_REG}, {"CONVTIME", fun_convtime, 1, 1, FN_REG}, {"COR", fun_cor, 2, INT_MAX, FN_NOPARSE}, *************** *** 436,442 **** {"T", fun_t, 1, 1, FN_REG}, {"TABLE", fun_table, 1, 5, FN_REG}, {"TEL", fun_tel, 2, 2, FN_REG}, ! {"TIME", fun_time, 0, 0, FN_REG}, {"TIMEFMT", fun_timefmt, 1, 2, FN_REG}, {"TIMESTRING", fun_timestring, 1, 2, FN_REG}, {"TRIM", fun_trim, 1, 3, FN_REG}, --- 436,442 ---- {"T", fun_t, 1, 1, FN_REG}, {"TABLE", fun_table, 1, 5, FN_REG}, {"TEL", fun_tel, 2, 2, FN_REG}, ! {"TIME", fun_time, 0, 1, FN_REG}, {"TIMEFMT", fun_timefmt, 1, 2, FN_REG}, {"TIMESTRING", fun_timestring, 1, 2, FN_REG}, {"TRIM", fun_trim, 1, 3, FN_REG}, *************** *** 447,453 **** {"UFUN", fun_ufun, 1, 11, FN_REG}, {"ULDEFAULT", fun_uldefault, 1, 12, FN_NOPARSE}, {"ULOCAL", fun_ulocal, 1, 11, FN_REG}, ! {"UTCTIME", fun_utctime, 0, 0, FN_REG}, {"U", fun_ufun, 1, 11, FN_REG}, {"V", fun_v, 1, 1, FN_REG}, {"VALID", fun_valid, 2, 2, FN_REG}, --- 447,453 ---- {"UFUN", fun_ufun, 1, 11, FN_REG}, {"ULDEFAULT", fun_uldefault, 1, 12, FN_NOPARSE}, {"ULOCAL", fun_ulocal, 1, 11, FN_REG}, ! {"UTCTIME", fun_time, 0, 0, FN_REG}, {"U", fun_ufun, 1, 11, FN_REG}, {"V", fun_v, 1, 1, FN_REG}, {"VALID", fun_valid, 2, 2, FN_REG}, *************** *** 797,806 **** notify(player, T("Function Name Dbref # Attrib")); for (fp = (FUN *) hash_firstentry(&htab_user_function); fp; fp = (FUN *) hash_nextentry(&htab_user_function)) { ! notify(player, ! tprintf("%-32s %6d %s", fp->name, ! userfn_tab[fp->where.offset].thing, ! userfn_tab[fp->where.offset].name)); } } else { /* just print out the list of available functions */ --- 797,806 ---- notify(player, T("Function Name Dbref # Attrib")); for (fp = (FUN *) hash_firstentry(&htab_user_function); fp; fp = (FUN *) hash_nextentry(&htab_user_function)) { ! notify_format(player, ! "%-32s %6d %s", fp->name, ! userfn_tab[fp->where.offset].thing, ! userfn_tab[fp->where.offset].name); } } else { /* just print out the list of available functions */ *************** *** 1083,1090 **** else state = "Enabled"; ! notify(player, ! tprintf(T("Name : %s() (%s%s)"), fp->name, state, state2)); tp = tbuf; tbuf[0] = '\0'; --- 1083,1089 ---- else state = "Enabled"; ! notify_format(player, T("Name : %s() (%s%s)"), fp->name, state, state2); tp = tbuf; tbuf[0] = '\0'; *************** *** 1104,1110 **** first = 0; } *tp = '\0'; ! notify(player, tprintf(T("Flags : %s"), tbuf)); if (fp->flags & FN_BUILTIN) { maxargs = fp->maxargs; --- 1103,1109 ---- first = 0; } *tp = '\0'; ! notify_format(player, T("Flags : %s"), tbuf); if (fp->flags & FN_BUILTIN) { maxargs = fp->maxargs; *************** *** 1119,1136 **** tbuf[0] = '\0'; if (fp->minargs == maxargs) ! notify(player, tprintf(T("Arguments : %d %s"), fp->minargs, tbuf)); else if (fp->maxargs == INT_MAX) ! notify(player, ! tprintf(T("Arguments : At least %d %s"), fp->minargs, tbuf)); else ! notify(player, ! tprintf(T("Arguments : %d to %d %s"), fp->minargs, maxargs, tbuf)); } else { if (Global_Funcs(player)) ! notify(player, tprintf(T("Location : #%d/%s"), ! userfn_tab[fp->where.offset].thing, ! userfn_tab[fp->where.offset].name)); ! notify(player, tprintf(T("Arguments : 0 to 10"))); } } --- 1118,1134 ---- tbuf[0] = '\0'; if (fp->minargs == maxargs) ! notify_format(player, T("Arguments : %d %s"), fp->minargs, tbuf); else if (fp->maxargs == INT_MAX) ! notify_format(player, T("Arguments : At least %d %s"), fp->minargs, tbuf); else ! notify_format(player, ! T("Arguments : %d to %d %s"), fp->minargs, maxargs, tbuf); } else { if (Global_Funcs(player)) ! notify_format(player, T("Location : #%d/%s"), ! userfn_tab[fp->where.offset].thing, ! userfn_tab[fp->where.offset].name); ! notify(player, T("Arguments : 0 to 10")); } } *** 1_7_4.101/src/flags.c Tue, 15 May 2001 15:59:50 -0500 dunemush (pennmush/c/20_flags.c 1.1.1.1.1.1.1.1.1.1.1.1.1.6.1.2.1.1.1.1.1.2.2.2.2.1.2.1 660) --- 1_7_4.129(w)/src/flags.c Tue, 10 Jul 2001 14:23:19 -0500 dunemush (pennmush/c/20_flags.c 1.1.1.1.1.1.1.1.1.1.1.1.1.6.1.2.1.1.1.1.1.2.2.2.2.1.2.1.1.1 660) *************** *** 865,878 **** for (f = flag_table; f->type == NOTYPE; f++) if ((Flags(thing) & f->flag) && !(f->perms & F_INTERNAL) && Can_See_Flag(player, thing, f)) ! notify(player, tprintf("@set %s = %s", name, f->name)); /* do normal flags */ while ((f->type != t) && (f->type != NOTYPE)) f++; for (; f->type == t; f++) if ((Toggles(thing) & f->flag) && Can_See_Flag(player, thing, f)) ! notify(player, tprintf("@set %s = %s", name, f->name)); } --- 865,878 ---- for (f = flag_table; f->type == NOTYPE; f++) if ((Flags(thing) & f->flag) && !(f->perms & F_INTERNAL) && Can_See_Flag(player, thing, f)) ! notify_format(player, "@set %s = %s", name, f->name); /* do normal flags */ while ((f->type != t) && (f->type != NOTYPE)) f++; for (; f->type == t; f++) if ((Toggles(thing) & f->flag) && Can_See_Flag(player, thing, f)) ! notify_format(player, "@set %s = %s", name, f->name); } *************** *** 891,897 **** if (!strcasecmp(p->name, "immortal")) continue; if (Powers(thing) & p->flag) ! notify(player, tprintf("@power %s = %s", name, p->name)); } } --- 891,897 ---- if (!strcasecmp(p->name, "immortal")) continue; if (Powers(thing) & p->flag) ! notify_format(player, "@power %s = %s", name, p->name); } } *************** *** 952,958 **** toggle |= f->flag; done = 1; } else if (type != f->type) { ! notify(player, tprintf(T("Type conflict with flag '%c'."), *s)); return 0; } else { /* We've got a match */ --- 952,958 ---- toggle |= f->flag; done = 1; } else if (type != f->type) { ! notify_format(player, T("Type conflict with flag '%c'."), *s); return 0; } else { /* We've got a match */ *************** *** 964,970 **** /* if we get this far and still haven't found anything, error. */ if (!done) { ! notify(player, tprintf(T("%c: unknown flag."), *s)); return 0; } } --- 964,970 ---- /* if we get this far and still haven't found anything, error. */ if (!done) { ! notify_format(player, T("%c: unknown flag."), *s); return 0; } } *** 1_7_4.101/src/extmail.c Thu, 31 May 2001 11:19:20 -0500 dunemush (pennmush/c/2