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