[PENNMUSH-ANNOUNCE] 1.7.6-patch03
dunemush at tala.mede.uic.edu
dunemush at tala.mede.uic.edu
Wed Dec 25 00:27:28 CST 2002
This is patch03 to PennMUSH 1.7.6. After applying this patch, you will
have version 1.7.6p3
To apply this patch, save it to a file in your top-level MUSH directory,
and do the following:
patch -p1 < 1.7.6-patch03
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:
Minor changes:
* call_limit now controls the maximum recursion in process_expression,
instead of maximum calls to p_e per command cycle. This still
limits stack size, but doesn't get in the way of massive code
nearly as much. People using a very high call_limit value should
probably lower it significantly. Patch by Philip Mak.
* Improved error messages for many database information functions.
Notably, several functions that require at least one argument,
now complain if they don't get it rather than returning silently.
Suggested by Intrevis at MS*H. [SW]
Fixes:
* @warnings are no longer shown on GOING objects. Suggested by
Philip Mak.
* Help fixes by Intrevis, Time, and Ambrosia at MS*H
* Bug in @decomp/skipdefaults reported by Philip Mak. [SW]
* Tweaks to utils/mkcmds.sh [SW]
* home() on a room acts as described in the help. Reported by
Intrevis at MS*H. [SW]
* whisper/noisy double-notified the whisperer. Reported by Philip Mak.
* Crash bug in @mail fixed. Reported by Titan at OtherSpace.
Prereq: 1.7.6p2
*** 1_7_6.69/Patchlevel Tue, 17 Dec 2002 22:33:42 -0600 dunemush (pennmush/5_Patchlevel 1.17.1.11.1.1.1.2 600)
--- 1_7_6.81(w)/Patchlevel Sun, 22 Dec 2002 02:06:56 -0600 dunemush (pennmush/5_Patchlevel 1.17.1.11.1.1.1.3 600)
***************
*** 1,2 ****
Do not edit this file. It is maintained by the official PennMUSH patches.
! This is PennMUSH 1.7.6p2
--- 1,2 ----
Do not edit this file. It is maintained by the official PennMUSH patches.
! This is PennMUSH 1.7.6p3
*** 1_7_6.69/CHANGES Tue, 17 Dec 2002 22:33:42 -0600 dunemush (pennmush/g/17_CHANGES 1.10.1.6.1.2.1.2.1.1.1.1.1.2.1.1.1.1.1.1.1.1.1.1.1.3.1.1.1.1.1.9.1.1.1.1 600)
--- 1_7_6.81(w)/CHANGES Tue, 24 Dec 2002 15:13:47 -0600 dunemush (pennmush/g/17_CHANGES 1.10.1.6.1.2.1.2.1.1.1.1.1.2.1.1.1.1.1.1.1.1.1.1.1.3.1.1.1.1.1.9.1.1.1.1.1.2.1.1.1.1.1.1.1.1.1.1.1.1.1.1 600)
***************
*** 18,23 ****
--- 18,47 ----
==========================================================================
+ Version 1.7.6 patchlevel 3 December 22, 2002
+
+ Minor changes:
+ * call_limit now controls the maximum recursion in process_expression,
+ instead of maximum calls to p_e per command cycle. This still
+ limits stack size, but doesn't get in the way of massive code
+ nearly as much. People using a very high call_limit value should
+ probably lower it significantly. Patch by Philip Mak.
+ * Improved error messages for many database information functions.
+ Notably, several functions that require at least one argument,
+ now complain if they don't get it rather than returning silently.
+ Suggested by Intrevis at MS*H. [SW]
+ Fixes:
+ * @warnings are no longer shown on GOING objects. Suggested by
+ Philip Mak.
+ * Help fixes by Intrevis, Time, and Ambrosia at MS*H
+ * Bug in @decomp/skipdefaults reported by Philip Mak. [SW]
+ * Tweaks to utils/mkcmds.sh [SW]
+ * home() on a room acts as described in the help. Reported by
+ Intrevis at MS*H. [SW]
+ * whisper/noisy double-notified the whisperer. Reported by Philip Mak.
+ * Crash bug in @mail fixed. Reported by Titan at OtherSpace.+
+
Version 1.7.6 patchlevel 2 December 17, 2002
Minor changes:
*** 1_7_6.69/game/txt/hlp/pennvers.hlp Tue, 17 Dec 2002 22:33:42 -0600 dunemush (pennmush/12_pennvers.h 1.169.1.42.1.3.1.2.2.2.1.1.1.3.1.1.1.5.1.4.1.1.1.1.1.1.1.1.1.5.1.1.1.3.1.1.1.3.1.1.1.54.1.10.1.2.1.1.1.1.1.1.1.2.1.1.1.1.1.1.1.1.1.1.1.2.1.1.1.1.1.7.1.1.1.1 600)
--- 1_7_6.81(w)/game/txt/hlp/pennvers.hlp Tue, 24 Dec 2002 15:13:50 -0600 dunemush (pennmush/12_pennvers.h 1.169.1.42.1.3.1.2.2.2.1.1.1.3.1.1.1.5.1.4.1.1.1.1.1.1.1.1.1.5.1.1.1.3.1.1.1.3.1.1.1.54.1.10.1.2.1.1.1.1.1.1.1.2.1.1.1.1.1.1.1.1.1.1.1.2.1.1.1.1.1.7.1.1.1.1.1.2.1.1.1.4.1.1 600)
***************
*** 1,5 ****
& changes
! & 1.7.6p2
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 <name of whatever>'. 'help credits'
--- 1,5 ----
& changes
! & 1.7.6p3
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 <name of whatever>'. 'help credits'
***************
*** 11,16 ****
--- 11,41 ----
A list of the patchlevels associated with each release can
be read in 'help patchlevels'.
+ Version 1.7.6 patchlevel 3 December 22, 2002
+
+ Minor changes:
+ * call_limit now controls the maximum recursion in process_expression,
+ instead of maximum calls to p_e per command cycle. This still
+ limits stack size, but doesn't get in the way of massive code
+ nearly as much. People using a very high call_limit value should
+ probably lower it significantly. Patch by Philip Mak.
+ * Improved error messages for many database information functions.
+ Notably, several functions that require at least one argument,
+ now complain if they don't get it rather than returning silently.
+ Suggested by Intrevis at MS*H. [SW]
+ Fixes:
+ * @warnings are no longer shown on GOING objects. Suggested by
+ Philip Mak.
+ * Help fixes by Intrevis, Time, and Ambrosia at MS*H
+ * Bug in @decomp/skipdefaults reported by Philip Mak. [SW]
+ * Tweaks to utils/mkcmds.sh [SW]
+ * home() on a room acts as described in the help. Reported by
+ Intrevis at MS*H. [SW]
+ * whisper/noisy double-notified the whisperer. Reported by Philip Mak.
+ * Crash bug in @mail fixed. Reported by Titan at OtherSpace.+
+
+ & 1.7.6p2
Version 1.7.6 patchlevel 2 December 17, 2002
Minor changes:
***************
*** 5771,5777 ****
For information on a specific patchlevel of one of the versions listed,
type 'help <version>p<patchlevel>'. For example, 'help 1.7.2p3'
! 1.7.6: 0, 1, 2
1.7.5: 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12
1.7.4: 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18,
19, 20
--- 5796,5802 ----
For information on a specific patchlevel of one of the versions listed,
type 'help <version>p<patchlevel>'. For example, 'help 1.7.2p3'
! 1.7.6: 0, 1, 2, 3
1.7.5: 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12
1.7.4: 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18,
19, 20
*** 1_7_6.69/game/txt/hlp/pennfunc.hlp Wed, 11 Dec 2002 15:32:44 -0600 dunemush (pennmush/16_pennfunc.h 1.2.1.50.1.1.1.1.1.2.1.7.1.8.1.1.1.1.1.1.1.1.1.1.1.1.1.3.1.1.1.1.1.1.1.1.1.1.1.1.1.9.1.1.1.1.1.3 600)
--- 1_7_6.81(w)/game/txt/hlp/pennfunc.hlp Tue, 24 Dec 2002 15:13:25 -0600 dunemush (pennmush/16_pennfunc.h 1.2.1.50.1.1.1.1.1.2.1.7.1.8.1.1.1.1.1.1.1.1.1.1.1.1.1.3.1.1.1.1.1.1.1.1.1.1.1.1.1.9.1.1.1.1.1.3.1.1.1.1.1.1 600)
***************
*** 45,52 ****
Channel functions: Get information about channels (CTITLE, CWHO)
Communication functions: Send messages to objects (PEMIT, OEMIT)
Dbref functions: return dbref info related to objects (LOC, LEXITS)
- Floating point functions: floating point math (SIN, ROUND)
Global functions: local MUSH-specific functions defined with @function
Information functions: find out something about objects (FLAGS, MONEY)
List functions: manipulate lists (REVWORDS, FIRST)
Mail functions: manipulate @mail (MAIL, FOLDERSTATS)
--- 45,52 ----
Channel functions: Get information about channels (CTITLE, CWHO)
Communication functions: Send messages to objects (PEMIT, OEMIT)
Dbref functions: return dbref info related to objects (LOC, LEXITS)
Global functions: local MUSH-specific functions defined with @function
+ Html functions: output html tags for Pueblo-compatible clients
Information functions: find out something about objects (FLAGS, MONEY)
List functions: manipulate lists (REVWORDS, FIRST)
Mail functions: manipulate @mail (MAIL, FOLDERSTATS)
***************
*** 108,116 ****
Dbref functions return a dbref or list of dbrefs related to some value
on an object.
! con() entrances() followers() following() home()
! lcon() lexits() loc() locate() lparent()
! lsearch() next() num() owner() parent()
pmatch() rloc() rnum() room() where()
zone()
--- 108,117 ----
Dbref functions return a dbref or list of dbrefs related to some value
on an object.
! con() entrances() exit() followers() following()
! home() lcon() lexits() loc() locate()
! lparent() lplayers() lsearch() lvcon() lvexits()
! lvplayers() next() num() owner() parent()
pmatch() rloc() rnum() room() where()
zone()
***************
*** 133,151 ****
folderstats() mail() maildstats() mailfrom() mailfstats()
mailstats() mailstatus() mailsubject() mailtime()
- & Floating point functions
- Floating point functions operate on floating point numbers. Most of
- them return a floating-point number as a result. Floating point
- results can have at most 6 decimal places of precision.
-
- These functions only exist if floating point computation is enabled.
- Check "@config" to see if they are.
-
- acos() asin() atan() ceil() cos()
- e() exp() fdiv() floor() log()
- ln() pi() power() round() sin()
- sqrt() tan()
-
& List functions
List functions take at least one list of elements and return transformed
lists or one or more members of those lists. Most of these functions
--- 134,139 ----
***************
*** 158,164 ****
matchall() member() mix() munge() remove()
replace() rest() revwords() setdiff() setinter()
setunion() shuffle() sort() sortby() splice()
! wordpos() words()
See also: LISTS
& Math functions
--- 146,152 ----
matchall() member() mix() munge() remove()
replace() rest() revwords() setdiff() setinter()
setunion() shuffle() sort() sortby() splice()
! step() table() wordpos() words()
See also: LISTS
& Math functions
***************
*** 176,184 ****
These functions operate only with floating point numbers:
acos() asin() atan() atan2() ceil()
! cos() e() exp() fdiv() floor()
! fmod() ln() log() pi() power()
! round() sin() sqrt() tan()
These functions operate on n-dimensional vectors. A vector
is a delimiter-separated list of numbers (space-separated, by default):
--- 164,172 ----
These functions operate only with floating point numbers:
acos() asin() atan() atan2() ceil()
! cos() ctu() e() exp() fdiv()
! floor() fmod() ln() log() pi()
! power() round() sin() sqrt() tan()
These functions operate on n-dimensional vectors. A vector
is a delimiter-separated list of numbers (space-separated, by default):
***************
*** 205,213 ****
merge() mid() ord() pos() regedit()
regmatch() repeat() reverse() right() rjust()
scramble() secure() sha1() space() spellnum()
! squish() strcat() strinsert() stripaccent() stripansi()
! strlen() strmatch() switch() trim() ucstr()
! wrap()
See also: STRINGS
& Time functions
--- 193,201 ----
merge() mid() ord() pos() regedit()
regmatch() repeat() reverse() right() rjust()
scramble() secure() sha1() space() spellnum()
! squish() strcat() strinsert() stripaccents()
! stripansi() strlen() strmatch() switch() trim()
! ucstr() wrap()
See also: STRINGS
& Time functions
***************
*** 1669,1675 ****
or the enactor (%#). You CANNOT get the contents of anything else,
regardless of whether or not you have objects in it.
! See also: lexits(), con(), next()
& LCSTR()
lcstr(<string>)
--- 1657,1663 ----
or the enactor (%#). You CANNOT get the contents of anything else,
regardless of whether or not you have objects in it.
! See also: lexits(), lplayers(), con(), next(), lvcon()
& LCSTR()
lcstr(<string>)
***************
*** 2295,2300 ****
--- 2283,2292 ----
acts just like @name <object>=<new name>. Consequently, if renaming
a player, you must use the player's password or be God.
+ name() with no arguments currently returns nothing. This should be an
+ error, but enough old code has been written that expects this behavior
+ that it will continue to do this for the time being. Don't rely on it.
+
Related functions: FULLNAME(), INAME()
& NAND()
nand(<boolean>, <boolean>,...)
***************
*** 3236,3241 ****
--- 3228,3234 ----
See also: @tel
& TEXTFILE()
+ & dynhelp()
textfile(<type>,<entry>)
textfile() returns the text of entries from cached text files (such as
*** 1_7_6.69/game/txt/hlp/pennflag.hlp Tue, 03 Dec 2002 21:42:38 -0600 dunemush (pennmush/17_pennflag.h 1.1.1.1.1.2.1.1.1.2.1.1.1.2.1.1.2.1.2.1.1.1.1.2.1.4.1.1 600)
--- 1_7_6.81(w)/game/txt/hlp/pennflag.hlp Sun, 22 Dec 2002 00:44:05 -0600 dunemush (pennmush/17_pennflag.h 1.1.1.1.1.2.1.1.1.2.1.1.1.2.1.1.2.1.2.1.1.1.1.2.1.4.1.2 600)
***************
*** 418,424 ****
and players. The server runs faster when fewer objects are checked for
$-commands; thus, any object which does not have $-commands on it should
be set NO_COMMAND. Many MUSHes choose to have all objects initially set
! NO_COMMAND at creation.
See also: USER-DEFINED COMMANDS
& NO_LEAVE
--- 418,424 ----
and players. The server runs faster when fewer objects are checked for
$-commands; thus, any object which does not have $-commands on it should
be set NO_COMMAND. Many MUSHes choose to have all objects initially set
! NO_COMMAND at creation. The flag has no effect on exits.
See also: USER-DEFINED COMMANDS
& NO_LEAVE
*** 1_7_6.69/game/mushcnf.dst Wed, 11 Dec 2002 23:07:22 -0600 dunemush (pennmush/41_mushcnf.ds 1.1.1.19.1.1.1.2.1.1.1.8.1.1.1.1 600)
--- 1_7_6.81(w)/game/mushcnf.dst Sun, 22 Dec 2002 18:01:06 -0600 dunemush (pennmush/41_mushcnf.ds 1.1.1.19.1.1.1.2.1.1.1.8.1.1.1.1.1.1 600)
***************
*** 162,172 ****
# for a single expression. This limits how much the stack size can increase,
# which could be useful if your host limits your stack (it will prevent
# a crash). The higher your allowed stack size limit, the larger the
! # mush process can grow, and the higher this can be set.
! # But remember that you need to recurse for every [ or { or function call
! # in your code, and those add up quickly. So this must often be set quite
! # high (e.g. 18000), alas. Setting it to '0' means unlimited.
! call_limit 10000
# The maximum number of milliseconds of CPU time that a single queue entry
# is allowed to use before aborting. Setting this to a low number will
--- 162,172 ----
# for a single expression. This limits how much the stack size can increase,
# which could be useful if your host limits your stack (it will prevent
# a crash). The higher your allowed stack size limit, the larger the
! # mush process can grow, and the higher this can be set. Generally
! # speaking, you won't ever see more than 8192 recursions, so that's
! # probably an upper limit, but most sane code shouldn't need more
! # than a couple thousand. Setting it to '0' means unlimited.
! call_limit 5000
# The maximum number of milliseconds of CPU time that a single queue entry
# is allowed to use before aborting. Setting this to a low number will
*** 1_7_6.69/utils/mkcmds.sh.SH Sat, 30 Nov 2002 22:32:58 -0600 dunemush (pennmush/g/16_mkcmds.sh. 1.2 750)
--- 1_7_6.81(w)/utils/mkcmds.sh.SH Sun, 22 Dec 2002 00:58:41 -0600 dunemush (pennmush/g/16_mkcmds.sh. 1.3 750)
***************
*** 67,77 ****
fi
rm -f ../hdrs/temp.h
! rm -f ../hdrs/temp.c
touch ../hdrs/timestamp
#rm ../hdrs/patches.h
! $echo "/* AUTOGENERATED FILE. DO NOT EDIT */" >> ../hdrs/temp.h
$echo "#ifndef _PATCH_H" >> ../hdrs/temp.h
$echo "#define _PATCH_H" >> ../hdrs/temp.h
if [ "X$pat" = "X" ]; then
--- 67,77 ----
fi
rm -f ../hdrs/temp.h
! rm -f ../src/temp.c
touch ../hdrs/timestamp
#rm ../hdrs/patches.h
! $echo "/* AUTOGENERATED FILE. DO NOT EDIT */" > ../hdrs/temp.h
$echo "#ifndef _PATCH_H" >> ../hdrs/temp.h
$echo "#define _PATCH_H" >> ../hdrs/temp.h
if [ "X$pat" = "X" ]; then
***************
*** 90,97 ****
$echo "Rebuilding command switch file"
snum=1
! $echo "/* AUTOGENERATED FILE. DO NOT EDIT */" >> ../src/temp.c
! $echo "/* AUTOGENERATED FILE. DO NOT EDIT */" >> ../hdrs/temp.h
$echo "SWITCH_VALUE switch_list[] = {" >> ../src/temp.c
for s in `cat ../src/SWITCHES | sort`; do
$echo "#define SWITCH_$s $snum" >> ../hdrs/temp.h
--- 90,97 ----
$echo "Rebuilding command switch file"
snum=1
! $echo "/* AUTOGENERATED FILE. DO NOT EDIT */" > ../src/temp.c
! $echo "/* AUTOGENERATED FILE. DO NOT EDIT */" > ../hdrs/temp.h
$echo "SWITCH_VALUE switch_list[] = {" >> ../src/temp.c
for s in `cat ../src/SWITCHES | sort`; do
$echo "#define SWITCH_$s $snum" >> ../hdrs/temp.h
***************
*** 113,126 ****
mv -f ../src/temp.c ../src/switchinc.c
$echo "Rebuilding command prototype file"
! $echo "/* AUTOGENERATED FILE. DO NOT EDIT */" >> ../hdrs/temp.h
for c in `grep "^COMMAND *(" ../src/*.c | cut -f2 -d\( | cut -f1 -d\) | sort | uniq`; do
$echo >>../hdrs/temp.h "COMMAND_PROTO($c);"
done
mv -f ../hdrs/temp.h ../hdrs/cmds.h
$echo "Rebuilding function prototype file"
! $echo "/* AUTOGENERATED FILE. DO NOT EDIT */" >> ../hdrs/temp.h
for c in `grep "^FUNCTION *(" ../src/*.c | cut -f2 -d\( | cut -f1 -d\) | sort | uniq`; do
$echo >>../hdrs/temp.h "FUNCTION_PROTO($c);"
done
--- 113,126 ----
mv -f ../src/temp.c ../src/switchinc.c
$echo "Rebuilding command prototype file"
! $echo "/* AUTOGENERATED FILE. DO NOT EDIT */" > ../hdrs/temp.h
for c in `grep "^COMMAND *(" ../src/*.c | cut -f2 -d\( | cut -f1 -d\) | sort | uniq`; do
$echo >>../hdrs/temp.h "COMMAND_PROTO($c);"
done
mv -f ../hdrs/temp.h ../hdrs/cmds.h
$echo "Rebuilding function prototype file"
! $echo "/* AUTOGENERATED FILE. DO NOT EDIT */" > ../hdrs/temp.h
for c in `grep "^FUNCTION *(" ../src/*.c | cut -f2 -d\( | cut -f1 -d\) | sort | uniq`; do
$echo >>../hdrs/temp.h "FUNCTION_PROTO($c);"
done
*** 1_7_6.69/src/wiz.c Wed, 11 Dec 2002 15:13:21 -0600 dunemush (pennmush/b/23_wiz.c 1.44.1.1.1.1.1.2.1.7.1.1.1.1.1.1.1.1.1.1.1.8.1.2.2.2.1.2.1.1.1.1.1.1.1.2 660)
--- 1_7_6.81(w)/src/wiz.c Wed, 25 Dec 2002 00:13:24 -0600 dunemush (pennmush/b/23_wiz.c 1.44.1.1.1.1.1.2.1.7.1.1.1.1.1.1.1.1.1.1.1.8.1.2.2.2.1.2.1.1.1.1.1.1.1.2.1.1 660)
***************
*** 967,1025 ****
* Powers stuff
*/
-
- #ifdef WIN32
- #pragma warning( disable : 4761) /* Disable bogus conversion warning */
- #endif
- /* ARGSUSED */
- FUNCTION(fun_haspower)
- {
- dbref it;
- object_flag_type pwr;
-
- it = match_thing(executor, args[0]);
- if (it == NOTHING) {
- safe_str("#-1", buff, bp);
- return;
- }
- if (HASPOWER_RESTRICTED)
- if (!Can_Examine(executor, it)) {
- notify(executor,
- T("We could let you see that, but then we'd have to kill you."));
- safe_str("#-1", buff, bp);
- return;
- }
- pwr = find_power(args[1]);
- if (pwr == -1)
- safe_str(T("#-1 NO SUCH POWER"), buff, bp);
- else
- safe_boolean(Powers(it) & pwr, buff, bp);
- }
-
- /* ARGSUSED */
- FUNCTION(fun_powers)
- {
- dbref it;
-
- it = match_thing(executor, args[0]);
- if (it == NOTHING) {
- safe_str("#-1", buff, bp);
- return;
- }
- if (HASPOWER_RESTRICTED)
- if (!Can_Examine(executor, it)) {
- notify(executor,
- T("We could let you see that, but then we'd have to kill you."));
- safe_str("#-1", buff, bp);
- return;
- }
- safe_str(power_description(it), buff, bp);
- }
-
- #ifdef WIN32
- #pragma warning( default : 4761) /* Re-enable conversion warning */
- #endif
-
void
do_power(dbref player, const char *name, const char *power)
{
--- 967,972 ----
*** 1_7_6.69/src/warnings.c Fri, 05 Jul 2002 09:26:45 -0500 dunemush (pennmush/b/25_warnings.c 1.21 660)
--- 1_7_6.81(w)/src/warnings.c Wed, 25 Dec 2002 00:13:24 -0600 dunemush (pennmush/b/25_warnings.c 1.21.1.1 660)
***************
*** 429,437 ****
warn_type flags;
/* Skip it if it's NOWARN or the player checking is the owner and
! * is NOWARN
*/
! if (Flags(i) & NOWARN)
return;
/* If the owner is checking, use the flags on the object, and fall back
--- 429,437 ----
warn_type flags;
/* Skip it if it's NOWARN or the player checking is the owner and
! * is NOWARN. Also skip GOING objects.
*/
! if (Going(i) || NoWarn(i))
return;
/* If the owner is checking, use the flags on the object, and fall back
*** 1_7_6.69/src/speech.c Wed, 20 Nov 2002 14:36:48 -0600 dunemush (pennmush/b/35_speech.c 1.21.1.2.1.3.1.5.1.1.1.7.1.3.1.1.1.8.1.1.1.1.1.1.1.10.1.2.1.13.2.4 660)
--- 1_7_6.81(w)/src/speech.c Wed, 25 Dec 2002 00:13:23 -0600 dunemush (pennmush/b/35_speech.c 1.21.1.2.1.3.1.5.1.1.1.7.1.3.1.1.1.8.1.1.1.1.1.1.1.10.1.2.1.13.2.4.1.1 660)
***************
*** 397,403 ****
DOLIST(first, first) {
overheard = 1;
for (who = 0; who < gcount; who++) {
! if (first == good[who]) {
overheard = 0;
break;
}
--- 397,403 ----
DOLIST(first, first) {
overheard = 1;
for (who = 0; who < gcount; who++) {
! if ((first == player) || (first == good[who])) {
overheard = 0;
break;
}
*** 1_7_6.69/src/parse.c Sat, 30 Nov 2002 15:49:22 -0600 dunemush (pennmush/b/48_parse.c 1.23.1.10.1.2.1.1.1.1.1.2.1.2.1.7 660)
--- 1_7_6.81(w)/src/parse.c Wed, 25 Dec 2002 00:13:20 -0600 dunemush (pennmush/b/48_parse.c 1.23.1.10.1.2.1.1.1.1.1.2.1.2.1.9 660)
***************
*** 1046,1051 ****
--- 1046,1054 ----
mush_free((Malloc_t) buff, "process_expression.buffer_extension");
}
}
+ /* Once we cross call limit, we stay in error */
+ if (pe_info && CALL_LIMIT && pe_info->call_depth <= CALL_LIMIT)
+ pe_info->call_depth--;
if (made_info)
mush_free((Malloc_t) pe_info, "process_expression.pe_info");
if (old_iter_limit != -1) {
*** 1_7_6.69/src/look.c Mon, 07 Oct 2002 20:48:39 -0500 dunemush (pennmush/c/4_look.c 1.21.1.2.1.9 660)
--- 1_7_6.81(w)/src/look.c Wed, 25 Dec 2002 00:13:20 -0600 dunemush (pennmush/c/4_look.c 1.21.1.2.1.9.1.1 660)
***************
*** 1221,1227 ****
if (dh->skipdef && ptr) {
/* Standard attribute. Get the default perms, if any. */
/* Are we different? If so, do as usual */
! if (AL_FLAGS(atr) != AL_FLAGS(ptr))
privs = privs_to_string(attr_privs, AL_FLAGS(atr));
} else {
privs = privs_to_string(attr_privs, AL_FLAGS(atr));
--- 1221,1228 ----
if (dh->skipdef && ptr) {
/* Standard attribute. Get the default perms, if any. */
/* Are we different? If so, do as usual */
! int npmflags = AL_FLAGS(ptr) & (~AF_PREFIXMATCH);
! if (AL_FLAGS(atr) != AL_FLAGS(ptr) && AL_FLAGS(atr) != npmflags)
privs = privs_to_string(attr_privs, AL_FLAGS(atr));
} else {
privs = privs_to_string(attr_privs, AL_FLAGS(atr));
*** 1_7_6.69/src/fundb.c Thu, 21 Nov 2002 16:24:18 -0600 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.4.1.1.1.1.1.1.1.1.1.1.1.3.1.1.2.2 660)
--- 1_7_6.81(w)/src/fundb.c Wed, 25 Dec 2002 00:13:19 -0600 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.4.1.1.1.1.1.1.1.1.1.1.1.3.1.1.2.2.2.1.1.1.1.1 660)
***************
*** 115,122 ****
pattern = (char *) "*"; /* match anything */
thing = match_thing(executor, args[0]);
! if (thing == NOTHING) {
! safe_str(T(e_match), buff, bp);
return;
}
if (!Can_Examine(executor, thing)) {
--- 115,122 ----
pattern = (char *) "*"; /* match anything */
thing = match_thing(executor, args[0]);
! if (!GoodObject(thing)) {
! safe_str(T(e_notvis), buff, bp);
return;
}
if (!Can_Examine(executor, thing)) {
***************
*** 134,141 ****
{
dbref thing;
thing = match_thing(executor, args[0]);
! if (thing == NOTHING) {
! safe_str(T(e_match), buff, bp);
return;
}
if (!Can_Examine(executor, thing)) {
--- 134,141 ----
{
dbref thing;
thing = match_thing(executor, args[0]);
! if (!GoodObject(thing)) {
! safe_str(T(e_notvis), buff, bp);
return;
}
if (!Can_Examine(executor, thing)) {
***************
*** 152,158 ****
ATTR *a;
thing = match_thing(executor, args[0]);
! if (thing == NOTHING) {
safe_str(T(e_notvis), buff, bp);
return;
}
--- 152,158 ----
ATTR *a;
thing = match_thing(executor, args[0]);
! if (!GoodObject(thing)) {
safe_str(T(e_notvis), buff, bp);
return;
}
***************
*** 186,192 ****
}
*s++ = '\0';
thing = match_thing(executor, args[0]);
! if (thing == NOTHING) {
safe_str(T(e_notvis), buff, bp);
return;
}
--- 186,192 ----
}
*s++ = '\0';
thing = match_thing(executor, args[0]);
! if (!GoodObject(thing)) {
safe_str(T(e_notvis), buff, bp);
return;
}
***************
*** 202,208 ****
dbref thing;
thing = match_thing(executor, args[0]);
! if (thing == NOTHING) {
safe_str(T(e_notvis), buff, bp);
return;
}
--- 202,208 ----
dbref thing;
thing = match_thing(executor, args[0]);
! if (!GoodObject(thing)) {
safe_str(T(e_notvis), buff, bp);
return;
}
***************
*** 252,258 ****
ATTR *a;
thing = match_thing(executor, args[0]);
! if (thing == NOTHING) {
safe_str(T(e_notvis), buff, bp);
return;
}
--- 252,258 ----
ATTR *a;
thing = match_thing(executor, args[0]);
! if (!GoodObject(thing)) {
safe_str(T(e_notvis), buff, bp);
return;
}
***************
*** 294,300 ****
}
*s++ = '\0';
thing = match_thing(executor, args[0]);
! if (thing == NOTHING) {
safe_str(T(e_notvis), buff, bp);
return;
}
--- 294,300 ----
}
*s++ = '\0';
thing = match_thing(executor, args[0]);
! if (!GoodObject(thing)) {
safe_str(T(e_notvis), buff, bp);
return;
}
***************
*** 423,430 ****
if ((p = strchr(args[0], '/')))
*p++ = '\0';
thing = match_thing(executor, args[0]);
! if (thing == NOTHING) {
! safe_str("#-1", buff, bp);
return;
}
if (p) {
--- 423,430 ----
if ((p = strchr(args[0], '/')))
*p++ = '\0';
thing = match_thing(executor, args[0]);
! if (!GoodObject(thing)) {
! safe_str(T(e_notvis), buff, bp);
return;
}
if (p) {
***************
*** 441,446 ****
--- 441,498 ----
}
}
+ #ifdef WIN32
+ #pragma warning( disable : 4761) /* Disable bogus conversion warning */
+ #endif
+ /* ARGSUSED */
+ FUNCTION(fun_haspower)
+ {
+ dbref it;
+ object_flag_type pwr;
+
+ it = match_thing(executor, args[0]);
+ if (!GoodObject(it)) {
+ safe_str(T(e_notvis), buff, bp);
+ return;
+ }
+ if (HASPOWER_RESTRICTED)
+ if (!Can_Examine(executor, it)) {
+ notify(executor,
+ T("We could let you see that, but then we'd have to kill you."));
+ safe_str("#-1", buff, bp);
+ return;
+ }
+ pwr = find_power(args[1]);
+ if (pwr == -1)
+ safe_str(T("#-1 NO SUCH POWER"), buff, bp);
+ else
+ safe_boolean(Powers(it) & pwr, buff, bp);
+ }
+
+ /* ARGSUSED */
+ FUNCTION(fun_powers)
+ {
+ dbref it;
+
+ it = match_thing(executor, args[0]);
+ if (!GoodObject(it)) {
+ safe_str(T(e_notvis), buff, bp);
+ return;
+ }
+ if (HASPOWER_RESTRICTED)
+ if (!Can_Examine(executor, it)) {
+ notify(executor,
+ T("We could let you see that, but then we'd have to kill you."));
+ safe_str("#-1", buff, bp);
+ return;
+ }
+ safe_str(power_description(it), buff, bp);
+ }
+
+ #ifdef WIN32
+ #pragma warning( default : 4761) /* Re-enable conversion warning */
+ #endif
+
/* ARGSUSED */
FUNCTION(fun_num)
{
***************
*** 792,800 ****
dbref it = match_thing(executor, args[0]);
dbref thing = match_thing(executor, args[1]);
! if (it == NOTHING)
safe_str(T("#-1 ARG1 NOT FOUND"), buff, bp);
! else if (thing == NOTHING)
safe_str(T("#-1 ARG2 NOT FOUND"), buff, bp);
else if (!(controls(executor, it) || controls(executor, thing)
|| See_All(executor)))
--- 844,852 ----
dbref it = match_thing(executor, args[0]);
dbref thing = match_thing(executor, args[1]);
! if (!GoodObject(it))
safe_str(T("#-1 ARG1 NOT FOUND"), buff, bp);
! else if (!GoodObject(thing))
safe_str(T("#-1 ARG2 NOT FOUND"), buff, bp);
else if (!(controls(executor, it) || controls(executor, thing)
|| See_All(executor)))
***************
*** 814,830 ****
* anything or be seen.
*/
! dbref it, thing;
char *name;
ATTR *a;
! if ((it = match_thing(executor, args[0])) == NOTHING) {
! safe_chr('0', buff, bp);
return;
}
if ((name = strchr(args[1], '/')))
*name++ = '\0';
! if ((thing = match_thing(executor, args[1])) == NOTHING) {
safe_chr('0', buff, bp);
return;
}
--- 866,884 ----
* anything or be seen.
*/
! dbref it = match_thing(executor, args[0]);
! dbref thing;
char *name;
ATTR *a;
! if (!GoodObject(it)) {
! safe_str(T(e_notvis), buff, bp);
return;
}
if ((name = strchr(args[1], '/')))
*name++ = '\0';
! thing = match_thing(executor, args[1]);
! if (!GoodObject(thing)) {
safe_chr('0', buff, bp);
return;
}
***************
*** 840,847 ****
FUNCTION(fun_type)
{
dbref it = match_thing(executor, args[0]);
! if (it == NOTHING) {
! safe_str("#-1", buff, bp);
return;
}
switch (Typeof(it)) {
--- 894,901 ----
FUNCTION(fun_type)
{
dbref it = match_thing(executor, args[0]);
! if (!GoodObject(it)) {
! safe_str(T(e_notvis), buff, bp);
return;
}
switch (Typeof(it)) {
***************
*** 884,891 ****
safe_boolean(AL_FLAGS(attrib) & f, buff, bp);
} else {
thing = match_thing(executor, args[0]);
! if (thing == NOTHING)
! safe_str("#-1", buff, bp);
else
safe_boolean(sees_flag(executor, thing, args[1]), buff, bp);
}
--- 938,945 ----
safe_boolean(AL_FLAGS(attrib) & f, buff, bp);
} else {
thing = match_thing(executor, args[0]);
! if (!GoodObject(thing))
! safe_str(T(e_notvis), buff, bp);
else
safe_boolean(sees_flag(executor, thing, args[1]), buff, bp);
}
***************
*** 895,902 ****
FUNCTION(fun_hastype)
{
dbref it = match_thing(executor, args[0]);
! if (it == NOTHING) {
! safe_str("#-1", buff, bp);
return;
}
switch (*args[1]) {
--- 949,956 ----
FUNCTION(fun_hastype)
{
dbref it = match_thing(executor, args[0]);
! if (!GoodObject(it)) {
! safe_str(T(e_notvis), buff, bp);
return;
}
switch (*args[1]) {
***************
*** 972,978 ****
#endif
return;
}
! if ((it != NOTHING) && (ltype != NULL)
&& Can_Read_Lock(executor, it, ltype)) {
safe_str(unparse_boolexp(executor, getlock(it, ltype), UB_DBREF), buff, bp);
return;
--- 1026,1032 ----
#endif
return;
}
! if (GoodObject(it) && (ltype != NULL)
&& Can_Read_Lock(executor, it, ltype)) {
safe_str(unparse_boolexp(executor, getlock(it, ltype), UB_DBREF), buff, bp);
return;
***************
*** 995,1001 ****
it = match_thing(executor, args[0]);
ltype = get_locktype(p);
! if ((it == NOTHING) || (ltype == NULL) || !Can_Read_Lock(executor, it, ltype)) {
safe_str("#-1", buff, bp);
return;
}
--- 1049,1055 ----
it = match_thing(executor, args[0]);
ltype = get_locktype(p);
! if (!GoodObject(it) || (ltype == NULL) || !Can_Read_Lock(executor, it, ltype)) {
safe_str("#-1", buff, bp);
return;
}
***************
*** 1009,1017 ****
dbref obj = match_thing(executor, args[0]);
dbref victim = match_thing(executor, args[1]);
! if (obj == NOTHING)
safe_str(T("#-1 ARG1 NOT FOUND"), buff, bp);
! else if (victim == NOTHING)
safe_str(T("#-1 ARG2 NOT FOUND"), buff, bp);
else
safe_boolean(Can_Locate(obj, victim), buff, bp);
--- 1063,1071 ----
dbref obj = match_thing(executor, args[0]);
dbref victim = match_thing(executor, args[1]);
! if (!GoodObject(obj))
safe_str(T("#-1 ARG1 NOT FOUND"), buff, bp);
! else if (!GoodObject(victim))
safe_str(T("#-1 ARG2 NOT FOUND"), buff, bp);
else
safe_boolean(Can_Locate(obj, victim), buff, bp);
***************
*** 1021,1027 ****
FUNCTION(fun_loc)
{
dbref it = match_thing(executor, args[0]);
! if ((it != NOTHING) && Can_Locate(executor, it))
safe_dbref(Location(it), buff, bp);
else
safe_str("#-1", buff, bp);
--- 1075,1081 ----
FUNCTION(fun_loc)
{
dbref it = match_thing(executor, args[0]);
! if (GoodObject(it) && Can_Locate(executor, it))
safe_dbref(Location(it), buff, bp);
else
safe_str("#-1", buff, bp);
***************
*** 1034,1040 ****
dbref it = match_thing(executor, args[0]);
char *s;
! if (it != NOTHING) {
s = (char *) ctime(&CreTime(it));
s[strlen(s) - 1] = '\0';
if (s[8] == ' ')
--- 1088,1094 ----
dbref it = match_thing(executor, args[0]);
char *s;
! if (GoodObject(it)) {
s = (char *) ctime(&CreTime(it));
s[strlen(s) - 1] = '\0';
if (s[8] == ' ')
***************
*** 1042,1064 ****
safe_str(s, buff, bp);
return;
}
! safe_str("#-1", buff, bp);
}
/* ARGSUSED */
FUNCTION(fun_mtime)
{
dbref it = match_thing(executor, args[0]);
! char *s;
! if ((it != NOTHING) && Can_Examine(executor, it) && !IsPlayer(it)) {
! s = (char *) ctime(&ModTime(it));
s[strlen(s) - 1] = '\0';
if (s[8] == ' ')
s[8] = '0';
safe_str(s, buff, bp);
- return;
}
- safe_str("#-1", buff, bp);
}
#endif
--- 1096,1119 ----
safe_str(s, buff, bp);
return;
}
! safe_str(T(e_notvis), buff, bp);
}
/* ARGSUSED */
FUNCTION(fun_mtime)
{
dbref it = match_thing(executor, args[0]);
! if (!GoodObject(it))
! safe_str(T(e_notvis), buff, bp);
! else if (!Can_Examine(executor, it) || IsPlayer(it))
! safe_str(T(e_perm), buff, bp);
! else {
! char *s = (char *) ctime(&ModTime(it));
s[strlen(s) - 1] = '\0';
if (s[8] == ' ')
s[8] = '0';
safe_str(s, buff, bp);
}
}
#endif
***************
*** 1068,1074 ****
/* finds the "real" location of an object */
dbref it = match_thing(executor, args[0]);
! if ((it != NOTHING) && Can_Locate(executor, it))
safe_dbref(where_is(it), buff, bp);
else
safe_str("#-1", buff, bp);
--- 1123,1129 ----
/* finds the "real" location of an object */
dbref it = match_thing(executor, args[0]);
! if (GoodObject(it) && Can_Locate(executor, it))
safe_dbref(where_is(it), buff, bp);
else
safe_str("#-1", buff, bp);
***************
*** 1077,1094 ****
/* ARGSUSED */
FUNCTION(fun_room)
{
- dbref room;
dbref it = match_thing(executor, args[0]);
! if ((it != NOTHING) && Can_Locate(executor, it)) {
! room = absolute_room(it);
if (!GoodObject(room)) {
! safe_str("#-1", buff, bp);
return;
}
safe_dbref(room, buff, bp);
- } else {
- safe_str(T(e_perm), buff, bp);
}
}
--- 1132,1150 ----
/* ARGSUSED */
FUNCTION(fun_room)
{
dbref it = match_thing(executor, args[0]);
! if (!GoodObject(it))
! safe_str(T(e_notvis), buff, bp);
! else if (!Can_Locate(executor, it))
! safe_str(T(e_perm), buff, bp);
! else {
! dbref room = absolute_room(it);
if (!GoodObject(room)) {
! safe_strl("#-1", 3, buff, bp);
return;
}
safe_dbref(room, buff, bp);
}
}
***************
*** 1101,1108 ****
if (deep > 20)
deep = 20;
! if ((it != NOTHING) && Can_Locate(executor, it)) {
for (i = 0; i < deep; i++) {
if (!GoodObject(it) || IsRoom(it))
break;
--- 1157,1170 ----
if (deep > 20)
deep = 20;
+ if (deep < 0)
+ deep = 0;
! if (!GoodObject(it))
! safe_str(T(e_notvis), buff, bp);
! else if (!Can_Locate(executor, it))
! safe_str(T(e_perm), buff, bp);
! else {
for (i = 0; i < deep; i++) {
if (!GoodObject(it) || IsRoom(it))
break;
***************
*** 1111,1117 ****
safe_dbref(it, buff, bp);
return;
}
- safe_str("#-1", buff, bp);
}
/* ARGSUSED */
--- 1173,1178 ----
***************
*** 1132,1142 ****
#endif
}
it = match_thing(executor, args[0]);
! if (!GoodObject(it) || !Can_Examine(executor, it)) {
! safe_str("#-1", buff, bp);
! return;
! }
! safe_dbref(Zone(it), buff, bp);
}
/* ARGSUSED */
--- 1193,1204 ----
#endif
}
it = match_thing(executor, args[0]);
! if (!GoodObject(it))
! safe_str(T(e_notvis), buff, bp);
! else if (!Can_Examine(executor, it))
! safe_str(T(e_perm), buff, bp);
! else
! safe_dbref(Zone(it), buff, bp);
}
/* ARGSUSED */
***************
*** 1157,1167 ****
#endif
}
it = match_thing(executor, args[0]);
! if (!GoodObject(it) || !Can_Examine(executor, it)) {
! safe_str("#-1", buff, bp);
! return;
! }
! safe_dbref(Parent(it), buff, bp);
}
/* ARGSUSED */
--- 1219,1230 ----
#endif
}
it = match_thing(executor, args[0]);
! if (!GoodObject(it))
! safe_str(T(e_notvis), buff, bp);
! else if (!Can_Examine(executor, it))
! safe_str(T(e_perm), buff, bp);
! else
! safe_dbref(Parent(it), buff, bp);
}
/* ARGSUSED */
***************
*** 1172,1178 ****
it = match_thing(executor, args[0]);
if (!GoodObject(it)) {
! safe_str("#-1", buff, bp);
return;
}
safe_dbref(it, buff, bp);
--- 1235,1241 ----
it = match_thing(executor, args[0]);
if (!GoodObject(it)) {
! safe_str(T(e_notvis), buff, bp);
return;
}
safe_dbref(it, buff, bp);
***************
*** 1190,1204 ****
FUNCTION(fun_home)
{
dbref it = match_thing(executor, args[0]);
! if ((it == NOTHING) || !Can_Examine(executor, it) || IsRoom(it)) {
! safe_str("#-1", buff, bp);
! return;
! }
! if (IsExit(it)) {
safe_dbref(Source(it), buff, bp);
! } else {
safe_dbref(Home(it), buff, bp);
- }
}
/* ARGSUSED */
--- 1253,1268 ----
FUNCTION(fun_home)
{
dbref it = match_thing(executor, args[0]);
! if (!GoodObject(it))
! safe_str(T(e_notvis), buff, bp);
! else if (!Can_Examine(executor, it))
! safe_str(T(e_perm), buff, bp);
! else if (IsExit(it))
safe_dbref(Source(it), buff, bp);
! else if (IsRoom(it))
! safe_dbref(Location(it), buff, bp);
! else
safe_dbref(Home(it), buff, bp);
}
/* ARGSUSED */
***************
*** 1207,1213 ****
/* Are we asking about something's money? */
dbref it = match_result(executor, args[0], NOTYPE, MAT_EVERYTHING);
! if (it == NOTHING) {
/* Well, are we asking for the plural/singular for some amount? */
if (is_integer(args[0])) {
int a = parse_integer(args[0]);
--- 1271,1277 ----
/* Are we asking about something's money? */
dbref it = match_result(executor, args[0], NOTYPE, MAT_EVERYTHING);
! if (!GoodObject(it)) {
/* Well, are we asking for the plural/singular for some amount? */
if (is_integer(args[0])) {
int a = parse_integer(args[0]);
***************
*** 1252,1259 ****
safe_dbref(attrib->creator, buff, bp);
} else {
thing = match_thing(executor, args[0]);
! if (thing == NOTHING)
! safe_str("#-1", buff, bp);
else
safe_dbref(Owner(thing), buff, bp);
}
--- 1316,1323 ----
safe_dbref(attrib->creator, buff, bp);
} else {
thing = match_thing(executor, args[0]);
! if (!GoodObject(thing))
! safe_str(T(e_notvis), buff, bp);
else
safe_dbref(Owner(thing), buff, bp);
}
***************
*** 1264,1269 ****
--- 1328,1336 ----
{
dbref it;
+ /* Special case for backward compatibility */
+ if (nargs == 0)
+ return;
if (nargs == 2) {
if (!command_check_byname(executor, "@name") || fun->flags & FN_NOSIDEFX) {
safe_str(T(e_perm), buff, bp);
***************
*** 1276,1301 ****
return;
#endif
}
! if ((it = match_thing(executor, args[0])) != NOTHING)
safe_str(shortname(it), buff, bp);
}
/* ARGSUSED */
FUNCTION(fun_fullname)
{
! dbref it;
!
! if ((it = match_thing(executor, args[0])) != NOTHING)
safe_str(Name(it), buff, bp);
}
/* ARGSUSED */
FUNCTION(fun_iname)
{
! dbref it;
char tbuf1[BUFFER_LEN];
! if ((it = match_thing(executor, args[0])) != NOTHING) {
/* You must either be see_all, control it, or be inside it */
if (!(controls(executor, it) || See_All(executor) ||
(Location(executor) == it))) {
--- 1343,1372 ----
return;
#endif
}
! it = match_thing(executor, args[0]);
! if (GoodObject(it))
safe_str(shortname(it), buff, bp);
+ else
+ safe_str(T(e_notvis), buff, bp);
}
/* ARGSUSED */
FUNCTION(fun_fullname)
{
! dbref it = match_thing(executor, args[0]);
! if (GoodObject(it))
safe_str(Name(it), buff, bp);
+ else
+ safe_str(T(e_notvis), buff, bp);
}
/* ARGSUSED */
FUNCTION(fun_iname)
{
! dbref it = match_thing(executor, args[0]);
char tbuf1[BUFFER_LEN];
! if (GoodObject(it)) {
/* You must either be see_all, control it, or be inside it */
if (!(controls(executor, it) || See_All(executor) ||
(Location(executor) == it))) {
***************
*** 1309,1315 ****
else
safe_str(accented_name(it), buff, bp);
} else
! safe_str(T(e_match), buff, bp);
}
/* ARGSUSED */
--- 1380,1386 ----
else
safe_str(accented_name(it), buff, bp);
} else
! safe_str(T(e_notvis), buff, bp);
}
/* ARGSUSED */
***************
*** 1365,1371 ****
/* find out what we're matching in relation to */
looker = match_thing(executor, args[0]);
! if (looker == NOTHING) {
notify(executor, T("I don't see that here."));
safe_str("#-1", buff, bp);
return;
--- 1436,1442 ----
/* find out what we're matching in relation to */
looker = match_thing(executor, args[0]);
! if (!GoodObject(looker)) {
notify(executor, T("I don't see that here."));
safe_str("#-1", buff, bp);
return;
***************
*** 1646,1652 ****
char *tp;
dbref it = match_thing(executor, args[0]);
! if (it == NOTHING) {
safe_str(T(e_notvis), buff, bp);
return;
}
--- 1717,1723 ----
char *tp;
dbref it = match_thing(executor, args[0]);
! if (!GoodObject(it)) {
safe_str(T(e_notvis), buff, bp);
return;
}
***************
*** 1682,1688 ****
} else {
who = lookup_player(args[0]);
if (who == NOTHING) {
! safe_str(T("#-1 NOT FOUND"), buff, bp);
return;
}
}
--- 1753,1759 ----
} else {
who = lookup_player(args[0]);
if (who == NOTHING) {
! safe_str(T(e_notvis), buff, bp);
return;
}
}
***************
*** 1890,1896 ****
char *res;
thing = match_controlled(executor, args[0]);
! if (thing == NOTHING) {
safe_str(T("#-1 INVALID OBJECT"), buff, bp);
return;
}
--- 1961,1967 ----
char *res;
thing = match_controlled(executor, args[0]);
! if (!GoodObject(thing)) {
safe_str(T("#-1 INVALID OBJECT"), buff, bp);
return;
}
***************
*** 1912,1918 ****
char *res;
thing = match_controlled(executor, args[0]);
! if (thing == NOTHING) {
safe_str(T("#-1 INVALID OBJECT"), buff, bp);
return;
}
--- 1983,1989 ----
char *res;
thing = match_controlled(executor, args[0]);
! if (!GoodObject(thing)) {
safe_str(T("#-1 INVALID OBJECT"), buff, bp);
return;
}
*** 1_7_6.69/src/function.c Wed, 11 Dec 2002 15:17:18 -0600 dunemush (pennmush/c/18_function.c 1.29.1.14.1.3.1.6.1.1.1.1.1.14.1.2.1.1 660)
--- 1_7_6.81(w)/src/function.c Wed, 25 Dec 2002 00:13:19 -0600 dunemush (pennmush/c/18_function.c 1.29.1.14.1.3.1.6.1.1.1.1.1.14.1.2.1.1.1.1 660)
***************
*** 341,347 ****
{"MUL", fun_mul, 2, INT_MAX, FN_REG},
{"MUNGE", fun_munge, 3, 5, FN_REG},
{"MWHO", fun_lwho, 0, 0, FN_REG},
! {"NAME", fun_name, 1, 2, FN_REG},
{"NAND", fun_nand, 1, INT_MAX, FN_REG},
{"NATTR", fun_nattr, 1, 1, FN_REG},
{"NEARBY", fun_nearby, 2, 2, FN_REG},
--- 341,347 ----
{"MUL", fun_mul, 2, INT_MAX, FN_REG},
{"MUNGE", fun_munge, 3, 5, FN_REG},
{"MWHO", fun_lwho, 0, 0, FN_REG},
! {"NAME", fun_name, 0, 2, FN_REG},
{"NAND", fun_nand, 1, INT_MAX, FN_REG},
{"NATTR", fun_nattr, 1, 1, FN_REG},
{"NEARBY", fun_nearby, 2, 2, FN_REG},
*** 1_7_6.69/src/extmail.c Sat, 30 Nov 2002 15:49:22 -0600 dunemush (pennmush/c/22_extmail.c 1.44.1.7.1.5.1.9 660)
--- 1_7_6.81(w)/src/extmail.c Wed, 25 Dec 2002 00:13:18 -0600 dunemush (pennmush/c/22_extmail.c 1.44.1.7.1.5.1.9.1.1 660)
***************
*** 2544,2550 ****
{
struct mail_alias *m;
int i;
- char keepsub[BUFFER_LEN];
/* send a mail message to each player on an alias */
/* We return 0 if this wasn't an alias */
--- 2544,2549 ----
***************
*** 2557,2564 ****
((m->nflags & ALIAS_MEMBERS) && ismember(m, player))))
return 0;
- strcpy(keepsub, uncompress(subject));
-
/* If they are not allowed to see the people on the alias, then
* we must treat this as a case of silent mailing.
*/
--- 2556,2561 ----
***************
*** 2571,2577 ****
}
for (i = 0; i < m->size; i++) {
! send_mail(player, m->members[i], keepsub, message, flags, silent, nosig);
}
return 1; /* Success */
}
--- 2568,2574 ----
}
for (i = 0; i < m->size; i++) {
! send_mail(player, m->members[i], subject, message, flags, silent, nosig);
}
return 1; /* Success */
}
*** 1_7_6.69/hdrs/version.h Tue, 17 Dec 2002 22:33:42 -0600 dunemush (pennmush/c/47_version.h 1.32.1.2.1.7.1.9.1.1.1.17.1.2.1.1 660)
--- 1_7_6.81(w)/hdrs/version.h Wed, 25 Dec 2002 00:13:25 -0600 dunemush (pennmush/c/47_version.h 1.32.1.2.1.7.1.9.1.1.1.17.1.2.1.2 660)
***************
*** 1,2 ****
! #define VERSION "PennMUSH version 1.7.6 patchlevel 2 [12/17/2002]"
! #define SHORTVN "PennMUSH 1.7.6p2"
--- 1,2 ----
! #define VERSION "PennMUSH version 1.7.6 patchlevel 3 [12/22/2002]"
! #define SHORTVN "PennMUSH 1.7.6p3"
*** 1_7_6.69/INSTALL Sun, 08 Dec 2002 22:42:35 -0600 dunemush (pennmush/g/20_INSTALL 1.2 600)
--- 1_7_6.81(w)/INSTALL Sun, 22 Dec 2002 01:18:25 -0600 dunemush (pennmush/g/20_INSTALL 1.3 600)
***************
*** 120,126 ****
2. cd pennmush. On Unix systems:
./Configure -d
! On cygwin systems:
. Configure
(That's a single period, a space, and Configure)
When you get to the question about hints files, choose 'cygwin'.
--- 120,126 ----
2. cd pennmush. On Unix systems:
./Configure -d
! On cygwin systems, try ./Configure -d, but if it fails, try:
. Configure
(That's a single period, a space, and Configure)
When you get to the question about hints files, choose 'cygwin'.
More information about the Pennmush-announce
mailing list