[PENNMUSH-ANNOUNCE] 1.7.4-patch20
dunemush@pennmush.org
dunemush at pennmush.org
Thu, 19 Sep 2002 21:51:11 -0500
This is patch20 to PennMUSH 1.7.4. After applying this patch, you will
have version 1.7.4p20
To apply this patch, save it to a file in your top-level MUSH directory,
and do the following:
patch -p1 < 1.7.4-patch20
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:
Fixes:
* Help semaphores4 typo fixed by Mike Griffiths.
* Help cleanup. [TAP]
* See_All players now see hidden connected mail senders. Suggested
by Philip Mak.
* spellnum could introduce spurious spaces. Reported by Intrevis@M*U*S*H.
* table() sometimes produced spurious blank rows. Reported by
Nymeria@M*U*S*H. This is the first attempt at a fix.
* switch() help improved. [SW]
* enter <exit> no longer returns Permission denied, but
"I can't see that here", as you can only enter things.
Suggested by Philip Mak.
* A one-time, one-pointer memory leak in plyrlist.c fixed
by Vadiv@M*U*S*H.
* Unbalanced or empty double-quotes gave weird results in page
and whisper. Reported by Vadiv@M*U*S*H. [SW]
* @chan/decomp no longer shows names of channels that the enactor
can't see. Reported by Nat@SW:ANT.
* The lock() and elock() functions now operate properly with
user:whatever locks. Reported by Mike Griffiths.
* pmatch() will locate hidden players if they're visible to you
because they're nearby. Suggested by Julian@M*U*S*H.
* regedit and other functions that used $-substitutions for subpatterns
could produce weird results in some cases. Reported by Bellemore@M*U*S*H
Prereq: 1.7.4p19
*** 1_7_4.302/Patchlevel Fri, 14 Jun 2002 18:26:41 -0500 dunemush (pennmush/5_Patchlevel 1.37 600)
--- 1_7_4.315(w)/Patchlevel Thu, 19 Sep 2002 12:24:38 -0500 dunemush (pennmush/5_Patchlevel 1.37 600)
***************
*** 1,2 ****
Do not edit this file. It is maintained by the official PennMUSH patches.
! This is PennMUSH 1.7.4p19
--- 1,2 ----
Do not edit this file. It is maintained by the official PennMUSH patches.
! This is PennMUSH 1.7.4p20
*** 1_7_4.302/CHANGES Wed, 19 Jun 2002 21:47:23 -0500 dunemush (pennmush/8_CHANGES 1.219.1.72.1.65 600)
--- 1_7_4.315(w)/CHANGES Thu, 19 Sep 2002 12:24:35 -0500 dunemush (pennmush/8_CHANGES 1.219.1.72.1.77 600)
***************
*** 18,23 ****
--- 18,51 ----
==========================================================================
+ Version 1.7.4 patchlevel 20 September 19, 2002
+
+ Fixes:
+ * Help semaphores4 typo fixed by Mike Griffiths.
+ * Help cleanup. [TAP]
+ * See_All players now see hidden connected mail senders. Suggested
+ by Philip Mak.
+ * spellnum could introduce spurious spaces. Reported by Intrevis@M*U*S*H.
+ * table() sometimes produced spurious blank rows. Reported by
+ Nymeria@M*U*S*H. This is the first attempt at a fix.
+ * switch() help improved. [SW]
+ * enter <exit> no longer returns Permission denied, but
+ "I can't see that here", as you can only enter things.
+ Suggested by Philip Mak.
+ * A one-time, one-pointer memory leak in plyrlist.c fixed
+ by Vadiv@M*U*S*H.
+ * Unbalanced or empty double-quotes gave weird results in page
+ and whisper. Reported by Vadiv@M*U*S*H. [SW]
+ * @chan/decomp no longer shows names of channels that the enactor
+ can't see. Reported by Nat@SW:ANT.
+ * The lock() and elock() functions now operate properly with
+ user:whatever locks. Reported by Mike Griffiths.
+ * pmatch() will locate hidden players if they're visible to you
+ because they're nearby. Suggested by Julian@M*U*S*H.
+ * regedit and other functions that used $-substitutions for subpatterns
+ could produce weird results in some cases. Reported by Bellemore@M*U*S*H
+
+
Version 1.7.4 patchlevel 19 June 14, 2002
Minor changes:
*** 1_7_4.302/game/txt/hlp/pennvers.hlp Wed, 19 Jun 2002 21:47:23 -0500 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.1 600)
--- 1_7_4.315(w)/game/txt/hlp/pennvers.hlp Thu, 19 Sep 2002 12:24:53 -0500 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.1 600)
***************
*** 1,5 ****
& changes
! & 1.7.4p19
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.4p20
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,45 ----
A list of the patchlevels associated with each release can
be read in 'help patchlevels'.
+ Version 1.7.4 patchlevel 20 September 19, 2002
+
+ Fixes:
+ * Help semaphores4 typo fixed by Mike Griffiths.
+ * Help cleanup. [TAP]
+ * See_All players now see hidden connected mail senders. Suggested
+ by Philip Mak.
+ * spellnum could introduce spurious spaces. Reported by Intrevis@M*U*S*H.
+ * table() sometimes produced spurious blank rows. Reported by
+ Nymeria@M*U*S*H. This is the first attempt at a fix.
+ * switch() help improved. [SW]
+ * enter <exit> no longer returns Permission denied, but
+ "I can't see that here", as you can only enter things.
+ Suggested by Philip Mak.
+ * A one-time, one-pointer memory leak in plyrlist.c fixed
+ by Vadiv@M*U*S*H.
+ * Unbalanced or empty double-quotes gave weird results in page
+ and whisper. Reported by Vadiv@M*U*S*H. [SW]
+ * @chan/decomp no longer shows names of channels that the enactor
+ can't see. Reported by Nat@SW:ANT.
+ * The lock() and elock() functions now operate properly with
+ user:whatever locks. Reported by Mike Griffiths.
+ * pmatch() will locate hidden players if they're visible to you
+ because they're nearby. Suggested by Julian@M*U*S*H.
+ * regedit and other functions that used $-substitutions for subpatterns
+ could produce weird results in some cases. Reported by Bellemore@M*U*S*H
+
+
+ & 1.7.4p19
Version 1.7.4 patchlevel 19 June 14, 2002
Minor changes:
***************
*** 5130,5136 ****
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.4: 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19
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
--- 5159,5166 ----
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.4: 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18,
! 19, 20
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.302/game/txt/hlp/penntop.hlp Sat, 06 Apr 2002 22:58:32 -0600 dunemush (pennmush/13_penntop.hl 1.2.1.27.1.3.1.2.1.2.1.1.1.1.1.1.1.1 600)
--- 1_7_4.315(w)/game/txt/hlp/penntop.hlp Mon, 08 Jul 2002 21:09:32 -0500 dunemush (pennmush/13_penntop.hl 1.2.1.27.1.3.1.2.1.2.1.1.1.1.1.1.1.1.1.1 600)
***************
*** 1344,1350 ****
SEMAPHORE of -1, to enclose commands in an @wait, and to
conclude the set of commands with an @notify me:
! > &doit obj = $doit: @wait me={&doer = %N; @tr me/report}
> &report obj = "[v(doer)] did it!; @notify me
> @startup obj = @drain me; @notify me
> @notify obj
--- 1344,1350 ----
SEMAPHORE of -1, to enclose commands in an @wait, and to
conclude the set of commands with an @notify me:
! > &doit obj = $doit: @wait me={&doer me = %N; @tr me/report}
> &report obj = "[v(doer)] did it!; @notify me
> @startup obj = @drain me; @notify me
> @notify obj
*** 1_7_4.302/game/txt/hlp/pennfunc.hlp Fri, 14 Jun 2002 18:26:41 -0500 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 600)
--- 1_7_4.315(w)/game/txt/hlp/pennfunc.hlp Thu, 19 Sep 2002 12:24:08 -0500 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 600)
***************
*** 32,38 ****
the built-in game functions. For details on global user functions,
see "help @function".
! See also: MUSHCODE
& FUNCTION LIST
Several major variants of functions are available. The help topics
--- 32,38 ----
the built-in game functions. For details on global user functions,
see "help @function".
! See also: MUSHCODE
& FUNCTION LIST
Several major variants of functions are available. The help topics
***************
*** 66,72 ****
regrepi() subj() udefault() ufun() uldefault()
ulocal() v-function xget() zfun()
! See also: ATTRIBUTES, NON-STANDARD ATTRIBUTES
& Bitwise functions
These functions treat integers as a sequence of binary bits (Either 0
or 1) and manipulate them.
--- 66,72 ----
regrepi() subj() udefault() ufun() uldefault()
ulocal() v-function xget() zfun()
! See also: ATTRIBUTES, NON-STANDARD ATTRIBUTES
& Bitwise functions
These functions treat integers as a sequence of binary bits (Either 0
or 1) and manipulate them.
***************
*** 91,97 ****
gte() lt() lte() nand() neq()
nor() not() or() t() xor()
! See also: BOOLEAN VALUES, @config
& Dbref functions
Dbref functions return a dbref or list of dbrefs related to some value
on an object.
--- 91,97 ----
gte() lt() lte() nand() neq()
nor() not() or() t() xor()
! See also: BOOLEAN VALUES, @config
& Dbref functions
Dbref functions return a dbref or list of dbrefs related to some value
on an object.
***************
*** 102,108 ****
pmatch() rloc() rnum() room() where()
zone()
! See also: DBREF
& Information functions
Information functions return values related to objects or channels.
--- 102,108 ----
pmatch() rloc() rnum() room() where()
zone()
! See also: DBREF
& Information functions
Information functions return values related to objects or channels.
***************
*** 148,154 ****
setunion() shuffle() sort() sortby() splice()
wordpos() words()
! See also: LISTS
& Math functions
Math functions take one or more numbers and return a numeric value.
What is allowed as a 'number' depends on @config settings (see help).
--- 148,154 ----
setunion() shuffle() sort() sortby() splice()
wordpos() words()
! See also: LISTS
& Math functions
Math functions take one or more numbers and return a numeric value.
What is allowed as a 'number' depends on @config settings (see help).
***************
*** 195,201 ****
spellnum() squish() strcat() strinsert() stripansi()
strlen() switch() trim() ucstr() wrap()
! See also: STRINGS
& Time functions
These functions return times or format times.
--- 195,201 ----
spellnum() squish() strcat() strinsert() stripansi()
strlen() switch() trim() ucstr() wrap()
! See also: STRINGS
& Time functions
These functions return times or format times.
***************
*** 280,286 ****
effects), while cand() stops evaluation after the first argument
that evaluates to false.
! See also: BOOLEAN VALUES, or(), xor(), not()
& ANDFLAGS()
andflags(<object>,<list of flags>)
--- 280,286 ----
effects), while cand() stops evaluation after the first argument
that evaluates to false.
! See also: BOOLEAN VALUES, or(), xor(), not()
& ANDFLAGS()
andflags(<object>,<list of flags>)
***************
*** 319,325 ****
For example, "ansi(fc, Test)" would hilight "Test" in flashing cyan.
! See also: ANSI, COLOR, FORCE_WHITE
& APOSS()
aposs(<object>)
--- 319,325 ----
For example, "ansi(fc, Test)" would hilight "Test" in flashing cyan.
! See also: ANSI, COLOR, FORCE_WHITE
& APOSS()
aposs(<object>)
***************
*** 493,499 ****
If no locktype is given, "JOIN" is assumed.
With two arguments, sets the lock.
! See also @clock
& CLONE()
clone(<object>)
--- 493,499 ----
If no locktype is given, "JOIN" is assumed.
With two arguments, sets the lock.
! See also: @clock
& CLONE()
clone(<object>)
***************
*** 517,523 ****
or the enactor (%#). You CANNOT get the contents of anything else,
regardless of whether or not you have objects in it.
! See also: lcon(), next()
& CONFIG()
config()
config(<option>)
--- 517,523 ----
or the enactor (%#). You CANNOT get the contents of anything else,
regardless of whether or not you have objects in it.
! See also: lcon(), next()
& CONFIG()
config()
config(<option>)
***************
*** 536,542 ****
Players who are not connected have a conn value of "-1", as do dark
wizards, when conn() is used on them by a non-priv'ed player.
! See also: CONNECTED
& CONTROLS()
controls(<object>,<victim>)
--- 536,542 ----
Players who are not connected have a conn value of "-1", as do dark
wizards, when conn() is used on them by a non-priv'ed player.
! See also: CONNECTED
& CONTROLS()
controls(<object>,<victim>)
***************
*** 546,552 ****
object). You must control <object> or <victim>, or have the See_All
power, to use this function.
! See also: CONTROL
& CONVSECS()
& CONVUTCSECS()
--- 546,552 ----
object). You must control <object> or <victim>, or have the See_All
power, to use this function.
! See also: CONTROL
& CONVSECS()
& CONVUTCSECS()
***************
*** 568,574 ****
You say, "Wed Jun 24 10:22:54 1992"
> say [convutcsecs(709395750)]
You say, "Wed Jun 24 14:22:30 1992"
! See also: convtime(), time()
& CONVTIME()
convtime(<time string>)
--- 568,574 ----
You say, "Wed Jun 24 10:22:54 1992"
> say [convutcsecs(709395750)]
You say, "Wed Jun 24 14:22:30 1992"
! See also: convtime(), time()
& CONVTIME()
convtime(<time string>)
***************
*** 590,596 ****
> say [convtime(Wed Jun 24 10:22:54 1992)]
You say, "709395774"
! See also: convsecs(), time()
& COS()
cos(<angle>)
--- 590,596 ----
> say [convtime(Wed Jun 24 10:22:54 1992)]
You say, "709395774"
! See also: convsecs(), time()
& COS()
cos(<angle>)
***************
*** 677,683 ****
> say default(me/Test, No fruits!)
You say "No fruits!"
! See also: get(), eval(), ufun(), edefault(), udefault(), uldefault().
& DELETE()
delete(<string>, <first>, <len>)
--- 677,683 ----
> say default(me/Test, No fruits!)
You say "No fruits!"
! See also: get(), eval(), ufun(), edefault(), udefault(), uldefault()
& DELETE()
delete(<string>, <first>, <len>)
***************
*** 747,760 ****
Note that add(mul(div(%0,%1),%1),remainder(%0,%1)) always yields %0,
and add(mul(floordiv(%0,%1),%1),modulo(%0,%1)) also always yields %0.
! See also MODULO.
& DOING()
doing(<player>)
Given the name of a connected player, returns that player's @doing
string if they can be seen on the WHO list.
! See also: @poll, @doing, poll()
& E()
e()
--- 747,760 ----
Note that add(mul(div(%0,%1),%1),remainder(%0,%1)) always yields %0,
and add(mul(floordiv(%0,%1),%1),modulo(%0,%1)) also always yields %0.
! See also: MODULO
& DOING()
doing(<player>)
Given the name of a connected player, returns that player's @doing
string if they can be seen on the WHO list.
! See also: @poll, @doing, poll()
& E()
e()
***************
*** 776,782 ****
> say edefault(me/Test,You have no marbles.)
You say "You have no marbles."
! See also: get(), eval(), ufun(), default(), udefault().
& EDIT()
edit(<string>, <search>, <replace>[, <search2>, <replace2> ...])
--- 776,782 ----
> say edefault(me/Test,You have no marbles.)
You say "You have no marbles."
! See also: get(), eval(), ufun(), default(), udefault()
& EDIT()
edit(<string>, <search>, <replace>[, <search2>, <replace2> ...])
***************
*** 799,805 ****
edit() can not replace a literal single ^ or $. Use regedit() for that.
! See also @edit, regedit().
& ELEMENT()
element(<list>,<item>,<single-character separator>)
--- 799,805 ----
edit() can not replace a literal single ^ or $. Use regedit() for that.
! See also: @edit, regedit()
& ELEMENT()
element(<list>,<item>,<single-character separator>)
***************
*** 811,816 ****
--- 811,818 ----
Example:
> say [element(this|is|a|test|string,is,|)]
You say, "2"
+
+ See also: match(), grab()
& ELEMENTS()
elements(<list of words>,<list of numbers>[,<delim>])
***************
*** 824,829 ****
--- 826,832 ----
> say elements(Foof|Ack|Beep|Moo,3 1,|)
You say "Beep|Foof"
+ See also: extract(), index(), grab()
& ELOCK()
elock(<object>[/<locktype>], <victim>)
***************
*** 839,845 ****
think elock(Dancing Slippers/drop, Princess)
> 0
! See also: @lock, locktypes
& EMIT()
emit(<message>)
--- 842,848 ----
think elock(Dancing Slippers/drop, Princess)
> 0
! See also: @lock, locktypes
& EMIT()
emit(<message>)
***************
*** 876,882 ****
Takes two integers, and returns 1 if they are equal, 0 otherwise.
Will not work with characters.
! See also: neq(), match()
& ESCAPE()
escape(<string>)
--- 879,885 ----
Takes two integers, and returns 1 if they are equal, 0 otherwise.
Will not work with characters.
! See also: neq(), match()
& ESCAPE()
escape(<string>)
***************
*** 915,921 ****
of xget() -- using a slash rather than a comma to separate the object from
the attribute. It is included for TinyMUSH 2.x compatibility.
! See also: get(), u(), xget()
& EXIT()
exit(<object>)
--- 918,924 ----
of xget() -- using a slash rather than a comma to separate the object from
the attribute. It is included for TinyMUSH 2.x compatibility.
! See also: get(), u(), xget()
& EXIT()
exit(<object>)
***************
*** 927,933 ****
enactor (%#). You CANNOT get the exit list of anything else,
regardless of whether or not you have objects in it.
! See also: lexits(), next()
& EXP()
exp(<number>)
--- 930,936 ----
enactor (%#). You CANNOT get the exit list of anything else,
regardless of whether or not you have objects in it.
! See also: lexits(), next()
& EXP()
exp(<number>)
***************
*** 946,952 ****
think extract(This is a test string,3,2)
> a test
! See also: index()
& FDIV()
fdiv(<numerator>,<denominator>)
--- 949,955 ----
think extract(This is a test string,3,2)
> a test
! See also: index(), elements(), grab()
& FDIV()
fdiv(<numerator>,<denominator>)
***************
*** 1136,1142 ****
Basically, this is a much more efficient way to do:
extract(list, match(list, pattern, delimiter), 1) or
extract(list, regmatch(list, regexp, delimiter), 1)
!
& GRABALL()
& REGRABALL()
& REGRABALLI()
--- 1139,1146 ----
Basically, this is a much more efficient way to do:
extract(list, match(list, pattern, delimiter), 1) or
extract(list, regmatch(list, regexp, delimiter), 1)
!
! See also: match(), extract(), element(), elements(), index(), regmatch()
& GRABALL()
& REGRABALL()
& REGRABALLI()
***************
*** 1158,1164 ****
> say regraball(This is testing a test,s$)
You say "This is"
! See also: match(), matchall(), grab(), regmatch().
& GREP()
& REGREP()
grep(<object>,<attrs>,<pattern>)
--- 1162,1168 ----
> say regraball(This is testing a test,s$)
You say "This is"
! See also: match(), matchall(), grab(), regmatch()
& GREP()
& REGREP()
grep(<object>,<attrs>,<pattern>)
***************
*** 1277,1283 ****
if the <condition> is true, or <false expression> (if provided) if the
<condition> is false.
! See also: BOOLEAN VALUES, switch()
& INC()
inc(<integer>)
inc(<string-ending-in-integer>)
--- 1281,1287 ----
if the <condition> is true, or <false expression> (if provided) if the
<condition> is false.
! See also: BOOLEAN VALUES, switch()
& INC()
inc(<integer>)
inc(<string-ending-in-integer>)
***************
*** 1315,1321 ****
You say, "
blue tribble^
cute doll"
!
& INSERT()
insert(<list>,<position>,<new item>[,<single-character separator>])
--- 1319,1326 ----
You say, "
blue tribble^
cute doll"
!
! See also: extract(), elements(), grab()
& INSERT()
insert(<list>,<position>,<new item>[,<single-character separator>])
***************
*** 1340,1353 ****
This function returns 1 if the string is a valid object dbref, and
0 if the string is not a valid object dbref.
! See also: DBREFS
& ISINT()
isint(<string>)
Returns 1 if its argument is an integer, and 0 otherwise. Integers can
begin with a '+' or '-' sign, but the rest of the string must be digits.
! See also: isnum()
& ISNUM()
isnum(<string>)
--- 1345,1358 ----
This function returns 1 if the string is a valid object dbref, and
0 if the string is not a valid object dbref.
! See also: DBREFS
& ISINT()
isint(<string>)
Returns 1 if its argument is an integer, and 0 otherwise. Integers can
begin with a '+' or '-' sign, but the rest of the string must be digits.
! See also: isnum()
& ISNUM()
isnum(<string>)
***************
*** 1356,1362 ****
the characters in the string must be digits, and an optional decimal
point.
! See also: isint()
& ISWORD()
isword(<string>)
--- 1361,1367 ----
the characters in the string must be digits, and an optional decimal
point.
! See also: isint()
& ISWORD()
isword(<string>)
***************
*** 1515,1521 ****
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>)
--- 1520,1526 ----
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>)
***************
*** 1553,1559 ****
enactor (%#). You CANNOT get the exit list of anything else,
regardless of whether or not you have objects in it.
! See also: lcon(), exit(), next()
& LJUST()
ljust(<string>,<length>[,<fill>])
--- 1558,1564 ----
enactor (%#). You CANNOT get the exit list of anything else,
regardless of whether or not you have objects in it.
! See also: lcon(), exit(), next()
& LJUST()
ljust(<string>,<length>[,<fill>])
***************
*** 1662,1668 ****
> say [setr(0, Outside)]-[localize(setr(0, Inside))]-%q0
You say, "Outside-Inside-Outside"
! See also: setq(), setr(), r(), ulocal(), uldefault(), s()
& LOCATE()
locate(<looker>, <name>, <parameters>)
--- 1667,1673 ----
> say [setr(0, Outside)]-[localize(setr(0, Inside))]-%q0
You say, "Outside-Inside-Outside"
! See also: setq(), setr(), r(), ulocal(), uldefault(), s()
& LOCATE()
locate(<looker>, <name>, <parameters>)
***************
*** 1800,1806 ****
players. When mortals use this function, the dbref numbers of DARK
wizards or royalty do NOT appear on the dbref list.
! See also: mwho()
& MAIL()
mail()
mail(<player name>)
--- 1805,1811 ----
players. When mortals use this function, the dbref numbers of DARK
wizards or royalty do NOT appear on the dbref list.
! See also: mwho()
& MAIL()
mail()
mail(<player name>)
***************
*** 1889,1894 ****
--- 1894,1901 ----
This attempts to match to a list element, not to an entire string.
To match an entire string (for example, to match "red blue green"
to "*bl*"), use the strmatch() function.
+
+ See also: element(), grab()
& MATCHALL()
Function: matchall(<list>,<pattern>[,<delim>])
***************
*** 1904,1910 ****
> say matchall(This is testing a test,tes*)
You say "3 5"
! See also: match(), strmatch().
& MAX()
max(<num1>, <num2>, ..., ...)
--- 1911,1917 ----
> say matchall(This is testing a test,tes*)
You say "3 5"
! See also: match(), strmatch(), graball()
& MAX()
max(<num1>, <num2>, ..., ...)
***************
*** 2001,2007 ****
Mod and modulus are just aliases for modulo.
! See also DIV.
& MONEY()
money(<object>)
money(<integer>)
--- 2008,2014 ----
Mod and modulus are just aliases for modulo.
! See also: DIV
& MONEY()
money(<object>)
money(<integer>)
***************
*** 2058,2064 ****
original <list 1>, a corresponding element from <list 2> does not appear
in the final result.
! See HELP MUNGE2 for examples.
& MUNGE2
For example: Consider attribute PLACES, which contains "Fort Benden Ista",
and another attribute DBREFS contains the dbrefs of the main JUMP_OK
--- 2065,2071 ----
original <list 1>, a corresponding element from <list 2> does not appear
in the final result.
! See HELP MUNGE2 for examples.
& MUNGE2
For example: Consider attribute PLACES, which contains "Fort Benden Ista",
and another attribute DBREFS contains the dbrefs of the main JUMP_OK
***************
*** 2071,2077 ****
> say [munge(sort,v(places),v(dbrefs))]
You say, "#9000 #20 #5000"
! See HELP MUNGE3 for another example
& MUNGE3
Another common task that munge() is well suited for is sorting a list
of dbrefs of players by order of connection. This example reuses the
--- 2078,2084 ----
> say [munge(sort,v(places),v(dbrefs))]
You say, "#9000 #20 #5000"
! See HELP MUNGE3 for another example
& MUNGE3
Another common task that munge() is well suited for is sorting a list
of dbrefs of players by order of connection. This example reuses the
***************
*** 2117,2123 ****
[neq(<integer1>,<integer2>)]
Basically the same as [not(eq(<integer1>,<integer2>))].
! (see eq(), not())
& NEXT()
next(<object>)
--- 2124,2131 ----
[neq(<integer1>,<integer2>)]
Basically the same as [not(eq(<integer1>,<integer2>))].
!
! See also: eq(), not()
& NEXT()
next(<object>)
***************
*** 2135,2141 ****
regardless of whether or not you have objects in it. These rules
apply to exits, as well.
! See also: lcon(), lexits(), con(), exit()
& NOR()
nor(<boolean>, <boolean>,...)
--- 2143,2149 ----
regardless of whether or not you have objects in it. These rules
apply to exits, as well.
! See also: lcon(), lexits(), con(), exit()
& NOR()
nor(<boolean>, <boolean>,...)
***************
*** 2181,2187 ****
This function returns the amount of memory, in bytes, being used
by the object. It can only be used by players with Search powers.
! See also 'playermem()'
& OEMIT()
oemit([<room>/]<object> [<object> ...],<message>)
--- 2189,2195 ----
This function returns the amount of memory, in bytes, being used
by the object. It can only be used by players with Search powers.
! See also: playermem()
& OEMIT()
oemit([<room>/]<object> [<object> ...],<message>)
***************
*** 2206,2212 ****
(including side effects), while cor() stops evaluation after the
first argument that evaluates to true.
! See also: BOOLEAN VALUES, and().
& ORFLAGS()
orflags(<object>,<list of flags>)
--- 2214,2220 ----
(including side effects), while cor() stops evaluation after the
first argument that evaluates to true.
! See also: BOOLEAN VALUES, and()
& ORFLAGS()
orflags(<object>,<list of flags>)
***************
*** 2250,2268 ****
by everything owned by the player. It can only be used by players
with Search powers.
! See also 'objmem()'
& PMATCH()
pmatch(<string>)
Given the partial name of a player, it returns that player's dbref
! number. This partial name completion works identically to the partial
name completion of the "page" command - i.e. it first attempts to match
the normal names of all players (connected or not), and if that fails,
! it tries to match the partial names of connected players. If no player
! is matched, it returns "#-1". If more than one match is possible for
! a partial name, it returns "#-2".
!
Pmatch() will also accept *<player> or #<db#>. If given a non-player
dbref #, pmatch() will return #-1.
& POLL()
--- 2258,2276 ----
by everything owned by the player. It can only be used by players
with Search powers.
! See also: objmem()
& PMATCH()
pmatch(<string>)
Given the partial name of a player, it returns that player's dbref
! number. This partial name completion works similarly to the partial
name completion of the "page" command - i.e. it first attempts to match
the normal names of all players (connected or not), and if that fails,
! it tries to match the partial names of connected players visible to
! the enactor. If no player is matched, it returns "#-1". If more than
! one match is possible for a partial name, it returns "#-2".
!
Pmatch() will also accept *<player> or #<db#>. If given a non-player
dbref #, pmatch() will return #-1.
& POLL()
***************
*** 2349,2355 ****
> say regeditall(this test is the best string, (.)est, [capstr($1)]rash)
You say "this Trash is the Brash string"
! See also: edit(), regmatch()
& REGMATCH()
(Help text from TinyMUSH 2.2.4, with permission)
regmatch(<string>,<regexp>[,<register list>])
--- 2357,2363 ----
> say regeditall(this test is the best string, (.)est, [capstr($1)]rash)
You say "this Trash is the Brash string"
! See also: edit(), regmatch()
& REGMATCH()
(Help text from TinyMUSH 2.2.4, with permission)
regmatch(<string>,<regexp>[,<register list>])
***************
*** 2375,2380 ****
--- 2383,2390 ----
simply be discarded.
See 'help regexp syntax' for an explanation of regular expressions.
+
+ See also: regrab()
& REMIT()
remit(<object>, <message>)
***************
*** 2538,2544 ****
This can make output slightly ugly, but it's a good way of preventing
other people from doing nasty things with your objects.
! See also: ESCAPE()
& SET()
set(<object>, <flag>)
--- 2548,2554 ----
This can make output slightly ugly, but it's a good way of preventing
other people from doing nasty things with your objects.
! See also: ESCAPE()
& SET()
set(<object>, <flag>)
***************
*** 2735,2741 ****
F160
For details of how the algorithm works, see help soundex2
! See also: help soundslike()
& SOUNDEX2
Here's how the soundex algorithm works:
1. The first letter of the soundex code is the first letter of
--- 2745,2752 ----
F160
For details of how the algorithm works, see help soundex2
!
! See also: soundslike()
& SOUNDEX2
Here's how the soundex algorithm works:
1. The first letter of the soundex code is the first letter of
***************
*** 2821,2827 ****
Example:
> say starttime()
You say "Sat Dec 7 00:09:13 1991
! See also: convtime(), restarttime(), restarts().
& RESTARTTIME()
restarttime()
--- 2832,2839 ----
Example:
> say starttime()
You say "Sat Dec 7 00:09:13 1991
!
! See also: convtime(), restarttime(), restarts()
& RESTARTTIME()
restarttime()
***************
*** 2853,2859 ****
1 - 2 - 3
4 - 5 -
! See also: map(), iter()
& STDDEV()
stddev(<number>,...)
--- 2865,2871 ----
1 - 2 - 3
4 - 5 -
! See also: map(), iter()
& STDDEV()
stddev(<number>,...)
***************
*** 2929,2935 ****
<expr>ssions, without spaces between them, so they match similarly to
@switch, while switch() and case() match more like @switch/first.
! See HELP SWITCH2 for examples.
& SWITCH2
Examples of switch() and related functions:
> say switch(test, *a*, foo, *b*, bar, *t*, neat, baz)
--- 2941,2947 ----
<expr>ssions, without spaces between them, so they match similarly to
@switch, while switch() and case() match more like @switch/first.
! See HELP SWITCH WILDCARDS for more, and HELP SWITCH2 for examples
& SWITCH2
Examples of switch() and related functions:
> say switch(test, *a*, foo, *b*, bar, *t*, neat, baz)
***************
*** 2942,2948 ****
You say, "moof"
> say case(moof, *f, foo, moof, bar, baz)
You say, "bar"
!
& T()
t(<expression>)
--- 2954,2984 ----
You say, "moof"
> say case(moof, *f, foo, moof, bar, baz)
You say, "bar"
! & SWITCH WILDCARDS
! @switch, @select, switch() and switchall() normally do wildcard
! matching between their first argument and the <expr>ession
! arguments, with the normal * and ? special characters. However, if
! one of the <expr>essions starts with < or >, a less than or greater
! than check is done instead of wildcard matching for that pair.
!
! switch(X, >Y, A, B) returns A if X is greater than Y,
! and B if X is less than or equal to Y.
!
! switch(X, <Y, A, B) returns A if X is less than Y,
! and B if X is greater than or equal to Y.
!
! If X and Y are numbers, the test is like using gt() or lt(). gte()
! and lte() can be simulated by using Y'=Y-1 and Y'=Y+1.
!
! If X and Y are non-numeric strings, the result of comp(X,Y) is used
! to determine which string is alphabetically before (Less than) the other.
!
! If you need to have a leading < or > that's treated like a normal
! character in a wildcard match, use \\< or \\> (The \\ will turn into
! \ when the argument is evaluated, and then that single \ will stop
! the greater/less than check).
!
! See also: HELP WILDCARDS
& T()
t(<expression>)
***************
*** 2995,3001 ****
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()
etimefmt(<format>[, <secs>])
--- 3031,3037 ----
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()
etimefmt(<format>[, <secs>])
***************
*** 3183,3189 ****
> say udefault(me/Test,-- BOOM --,ACK)
You say "-- BOOM --"
! See also: get(), eval(), ufun(), uldefault(), default(), edefault().
& ULDEFAULT()
uldefault([<obj>/]<attr>,<default case>[,<arg>]...)
--- 3219,3225 ----
> say udefault(me/Test,-- BOOM --,ACK)
You say "-- BOOM --"
! See also: get(), eval(), ufun(), uldefault(), default(), edefault()
& ULDEFAULT()
uldefault([<obj>/]<attr>,<default case>[,<arg>]...)
***************
*** 3230,3236 ****
%q0, this is what was printed. In the first example, ulocal() reset the
value of %q0 to its original "are delicious!"
! See also: u(), setq(), r()
& V()
& V-FUNCTION
--- 3266,3272 ----
%q0, this is what was printed. In the first example, ulocal() reset the
value of %q0 to its original "are delicious!"
! See also: u(), setq(), r()
& V()
& V-FUNCTION
***************
*** 3249,3255 ****
v(!) is equivalent to %!
v(3) is equivalent to %3
! See also: SUBSTITUTIONS, get(), ATTRIBUTES
& VADD()
vadd(<vector>,<vector>[,<delimiter>])
--- 3285,3291 ----
v(!) is equivalent to %!
v(3) is equivalent to %3
! See also: SUBSTITUTIONS, get(), ATTRIBUTES
& VADD()
vadd(<vector>,<vector>[,<delimiter>])
***************
*** 3462,3465 ****
which defines the zone. If the second argument is specified, the
function tries to change the zone on the object.
! See also: ZONES
--- 3498,3501 ----
which defines the zone. If the second argument is specified, the
function tries to change the zone on the object.
! See also: ZONES
*** 1_7_4.302/game/txt/hlp/penncmd.hlp Mon, 22 Apr 2002 11:31:46 -0500 dunemush (pennmush/18_penncmd.hl 1.2.1.1.1.47.1.1.1.1.1.3.1.4.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.2 600)
--- 1_7_4.315(w)/game/txt/hlp/penncmd.hlp Sat, 20 Jul 2002 11:48:10 -0500 dunemush (pennmush/18_penncmd.hl 1.2.1.1.1.47.1.1.1.1.1.3.1.4.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.2.1.1 600)
***************
*** 2685,2691 ****
&SWITCH_EX thing = $test:@switch hasflag(%#,PUPPET)=1,"Puppet!,"Not Puppet!
test
> thing says, "Not Puppet!"
! See also: @select, switch()
& @teleport
@teleport[/silent] [<object>=] <room>.
--- 2685,2691 ----
&SWITCH_EX thing = $test:@switch hasflag(%#,PUPPET)=1,"Puppet!,"Not Puppet!
test
> thing says, "Not Puppet!"
! See also: switch wildcards, @select, switch()
& @teleport
@teleport[/silent] [<object>=] <room>.
*** 1_7_4.302/src/strutil.c Mon, 15 Apr 2002 21:33:03 -0500 dunemush (pennmush/b/33_strutil.c 1.28.1.3.1.3.1.7.2.1.1.2.1.1.1.1.1.1 660)
--- 1_7_4.315(w)/src/strutil.c Thu, 19 Sep 2002 12:25:35 -0500 dunemush (pennmush/b/33_strutil.c 1.28.1.3.1.3.1.7.2.1.1.2.1.1.1.1.1.1.1.1 660)
***************
*** 773,779 ****
while (**head == ' ')
(*head)++;
! while (**head == '"') {
(*head)++;
paren = 1;
}
--- 773,779 ----
while (**head == ' ')
(*head)++;
! if (**head == '"') {
(*head)++;
paren = 1;
}
***************
*** 786,795 ****
(*head)++;
}
! if (paren)
(*head)++;
! safe_chr(0, buf, &p);
return buf;
}
--- 786,795 ----
(*head)++;
}
! if (paren && **head)
(*head)++;
! safe_chr('\0', buf, &p);
return buf;
}
*** 1_7_4.302/src/plyrlist.c Fri, 17 May 2002 14:49:25 -0500 dunemush (pennmush/b/46_plyrlist.c 1.5.1.1.1.1 660)
--- 1_7_4.315(w)/src/plyrlist.c Thu, 19 Sep 2002 12:25:35 -0500 dunemush (pennmush/b/46_plyrlist.c 1.5.1.1.1.2 660)
***************
*** 37,43 ****
void
clear_players()
{
! hashflush(&htab_player_list, 256);
}
--- 37,46 ----
void
clear_players()
{
! if (hft_initialized)
! hashflush(&htab_player_list, 256);
! else
! init_hft();
}
*** 1_7_4.302/src/parse.c Tue, 19 Mar 2002 08:38:06 -0600 dunemush (pennmush/b/48_parse.c 1.23.1.10.1.2.1.1.1.1.1.2.1.2 660)
--- 1_7_4.315(w)/src/parse.c Thu, 19 Sep 2002 12:25:35 -0500 dunemush (pennmush/b/48_parse.c 1.23.1.10.1.2.1.1.1.1.1.2.1.2.1.1 660)
***************
*** 482,488 ****
} else
break;
! if (p > re_subpatterns || re_offsets == NULL || re_from == NULL)
break;
pcre_copy_substring(re_from, re_offsets, re_subpatterns, p, obuf,
--- 482,488 ----
} else
break;
! if (p >= re_subpatterns || re_offsets == NULL || re_from == NULL)
break;
pcre_copy_substring(re_from, re_offsets, re_subpatterns, p, obuf,
*** 1_7_4.302/src/move.c Sat, 18 May 2002 14:37:30 -0500 dunemush (pennmush/b/51_move.c 1.1.1.18.1.5.1.13.1.3.1.9.1.1.1.1.1.2.1.1.1.1 660)
--- 1_7_4.315(w)/src/move.c Thu, 19 Sep 2002 12:25:35 -0500 dunemush (pennmush/b/51_move.c 1.1.1.18.1.5.1.13.1.3.1.9.1.1.1.1.1.2.1.1.1.1.1.1 660)
***************
*** 659,666 ****
{
dbref thing;
dbref loc;
! long match_flags =
! MAT_CHECK_KEYS | MAT_NEIGHBOR | MAT_EXIT | MAT_ENGLISH | MAT_ABSOLUTE;
if ((thing = noisy_match_result(player, what, TYPE_THING, match_flags))
== NOTHING)
--- 659,665 ----
{
dbref thing;
dbref loc;
! long match_flags = MAT_CHECK_KEYS | MAT_NEIGHBOR | MAT_ENGLISH | MAT_ABSOLUTE;
if ((thing = noisy_match_result(player, what, TYPE_THING, match_flags))
== NOTHING)
*** 1_7_4.302/src/funmath.c Mon, 29 Apr 2002 12:53:14 -0500 dunemush (pennmush/c/15_funmath.c 1.39.1.1.1.1.1.1 660)
--- 1_7_4.315(w)/src/funmath.c Thu, 19 Sep 2002 12:25:34 -0500 dunemush (pennmush/c/15_funmath.c 1.39.1.1.1.1.1.1.1.1 660)
***************
*** 1119,1125 ****
safe_chr(' ', *buff, *bp);
safe_str(special[x2], *buff, *bp);
started = 1;
! } else {
if (started)
safe_chr(' ', *buff, *bp);
if (x1) {
--- 1119,1125 ----
safe_chr(' ', *buff, *bp);
safe_str(special[x2], *buff, *bp);
started = 1;
! } else if (x1 || x2) {
if (started)
safe_chr(' ', *buff, *bp);
if (x1) {
*** 1_7_4.302/src/funlist.c Mon, 29 Apr 2002 11:53:21 -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.5.1.1.1.1.1.1.1.1.1.1.2.1.1.3.1.2.1.1.1.1.1.1.1.1 660)
--- 1_7_4.315(w)/src/funlist.c Thu, 19 Sep 2002 12:25:34 -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.5.1.1.1.1.1.1.1.1.1.1.2.1.1.3.1.2.1.1.1.1.1.1.1.1.1.1.1.1 660)
***************
*** 2357,2363 ****
while (cp) {
col += field_width + !!osep;
if (col > line_length) {
! safe_str("\r\n", buff, bp);
col = field_width + !!osep;
} else {
if (osep)
--- 2357,2366 ----
while (cp) {
col += field_width + !!osep;
if (col > line_length) {
! if (NEWLINE_ONE_CHAR)
! safe_str("\n", buff, bp);
! else
! safe_str("\r\n", buff, bp);
col = field_width + !!osep;
} else {
if (osep)
*** 1_7_4.302/src/fundb.c Mon, 10 Jun 2002 23:17:29 -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.4.1.1.1.1.1.1.1.1 660)
--- 1_7_4.315(w)/src/fundb.c Thu, 19 Sep 2002 12:25:34 -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.4.1.1.1.1.1.1.1.1.1.1.1.1 660)
***************
*** 40,46 ****
char *do_get_attrib _((dbref executor, dbref thing, char *attrib));
dbref next_con _((dbref player, dbref this));
dbref next_exit _((dbref player, dbref this));
! static lock_type get_locktype _((const char *str));
extern struct db_stat_info *get_stats _((dbref owner));
static int lattr_helper _((dbref player, dbref thing, char const *pattern,
ATTR *atr, void *args));
--- 40,46 ----
char *do_get_attrib _((dbref executor, dbref thing, char *attrib));
dbref next_con _((dbref player, dbref this));
dbref next_exit _((dbref player, dbref this));
! static lock_type get_locktype _((char *str));
extern struct db_stat_info *get_stats _((dbref owner));
static int lattr_helper _((dbref player, dbref thing, char const *pattern,
ATTR *atr, void *args));
***************
*** 879,891 ****
static lock_type
get_locktype(str)
! char const *str;
{
/* figure out a lock type */
if (!str || !*str)
return Basic_Lock;
! return str;
}
/* ARGSUSED */
--- 879,891 ----
static lock_type
get_locktype(str)
! char *str;
{
/* figure out a lock type */
if (!str || !*str)
return Basic_Lock;
! return upcasestr(str);
}
/* ARGSUSED */
*** 1_7_4.302/src/extmail.c Mon, 11 Mar 2002 17:59:05 -0600 dunemush (pennmush/c/22_extmail.c 1.44.1.7.1.5 660)
--- 1_7_4.315(w)/src/extmail.c Thu, 19 Sep 2002 12:25:34 -0500 dunemush (pennmush/c/22_extmail.c 1.44.1.7.1.5.1.1 660)
***************
*** 485,491 ****
("From: %-55s %s\nDate: %-25s %s %2d Message: %d\nStatus: %s"),
tbuf1, (IsPlayer(mp->from) && Connected(mp->from)
&& (!hidden(mp->from)
! || Hasprivs(player))) ? " (Conn)" : " ",
uncompress(mp->time), folderheader, Folder(mp),
i[Folder(mp)], status_string(mp));
#ifdef MAIL_SUBJECTS
--- 485,491 ----
("From: %-55s %s\nDate: %-25s %s %2d Message: %d\nStatus: %s"),
tbuf1, (IsPlayer(mp->from) && Connected(mp->from)
&& (!hidden(mp->from)
! || Priv_Who(player))) ? " (Conn)" : " ",
uncompress(mp->time), folderheader, Folder(mp),
i[Folder(mp)], status_string(mp));
#ifdef MAIL_SUBJECTS
***************
*** 557,563 ****
notify_format(player, "[%s] %2d:%-3d %c%-12s %-*s %s",
status_chars(mp), Folder(mp), i[Folder(mp)],
((Connected(mp->from) &&
! (!hidden(mp->from) || Hasprivs(player)))
? '*' : ' '),
chopstr(Name(mp->from), 12),
30, subj, mail_list_time(uncompress(mp->time), 1));
--- 557,563 ----
notify_format(player, "[%s] %2d:%-3d %c%-12s %-*s %s",
status_chars(mp), Folder(mp), i[Folder(mp)],
((Connected(mp->from) &&
! (!hidden(mp->from) || Priv_Who(player)))
? '*' : ' '),
chopstr(Name(mp->from), 12),
30, subj, mail_list_time(uncompress(mp->time), 1));
***************
*** 569,575 ****
PLAYER_NAME_LIMIT + 1, Name(mp->from),
mail_list_time(uncompress(mp->time), 0),
((Connected(mp->from) && (!hidden(mp->from)
! || Hasprivs(player)))
? "Conn" : " "));
#endif
if (SUPPORT_PUEBLO)
--- 569,575 ----
PLAYER_NAME_LIMIT + 1, Name(mp->from),
mail_list_time(uncompress(mp->time), 0),
((Connected(mp->from) && (!hidden(mp->from)
! || Priv_Who(player)))
? "Conn" : " "));
#endif
if (SUPPORT_PUEBLO)
*** 1_7_4.302/src/extchat.c Mon, 06 May 2002 16:03:56 -0500 dunemush (pennmush/c/23_extchat.c 1.1.1.1.1.1.1.1.1.2.1.1.1.3.1.1.1.5.1.1.1.1.1.5.1.2.1.3.1.3.1.1.1.4.1.2.1.6.1.2.1.1.2.4.2.9.1.2.1.2.1.3.1.2.1.2.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1 660)
--- 1_7_4.315(w)/src/extchat.c Thu, 19 Sep 2002 12:25:34 -0500 dunemush (pennmush/c/23_extchat.c 1.1.1.1.1.1.1.1.1.2.1.1.1.3.1.1.1.5.1.1.1.1.1.5.1.2.1.3.1.3.1.1.1.4.1.2.1.6.1.2.1.1.2.4.2.9.1.2.1.2.1.3.1.2.1.2.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1 660)
***************
*** 2020,2027 ****
found++;
if (!(See_All(player) || Chan_Can_Modify(c, player)
|| (ChanCreator(c) == player))) {
! notify_format(player, T("CHAT: No permission to decompile <%s>"),
! ChanName(c));
continue;
}
notify_format(player, "@channel/add %s = %s", ChanName(c),
--- 2020,2028 ----
found++;
if (!(See_All(player) || Chan_Can_Modify(c, player)
|| (ChanCreator(c) == player))) {
! if (Chan_Can_See(c, player))
! notify_format(player, T("CHAT: No permission to decompile <%s>"),
! ChanName(c));
continue;
}
notify_format(player, "@channel/add %s = %s", ChanName(c),
*** 1_7_4.302/src/bsd.c Mon, 06 May 2002 16:03:56 -0500 dunemush (pennmush/c/38_bsd.c 1.58.1.11.1.2.1.5.1.7.1.14.1.13.1.9.1.4.1.2.1.12.1.1.1.1.1.2.1.1.1.13.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.1 660)
--- 1_7_4.315(w)/src/bsd.c Thu, 19 Sep 2002 12:25:33 -0500 dunemush (pennmush/c/38_bsd.c 1.58.1.11.1.2.1.5.1.7.1.14.1.13.1.9.1.4.1.2.1.12.1.1.1.1.1.2.1.1.1.13.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.1.1.1 660)
***************
*** 4654,4660 ****
target = short_page(match);
if (Priv_Who(player) || !GoodObject(target))
return target;
! if (hidden(target))
return NOTHING;
return target;
}
--- 4654,4660 ----
target = short_page(match);
if (Priv_Who(player) || !GoodObject(target))
return target;
! if (Dark(target) || (hidden(target) && !nearby(player, target)))
return NOTHING;
return target;
}
*** 1_7_4.302/hdrs/version.h Fri, 14 Jun 2002 18:26:41 -0500 dunemush (pennmush/c/47_version.h 1.32.1.2.1.7.1.9.1.1.1.1.1.8 660)
--- 1_7_4.315(w)/hdrs/version.h Thu, 19 Sep 2002 12:25:39 -0500 dunemush (pennmush/c/47_version.h 1.32.1.2.1.7.1.9.1.1.1.1.1.8 660)
***************
*** 1,2 ****
! #define VERSION "PennMUSH version 1.7.4 patchlevel 19 [06/14/2002]"
! #define SHORTVN "PennMUSH 1.7.4p19"
--- 1,2 ----
! #define VERSION "PennMUSH version 1.7.4 patchlevel 20 [09/19/2002]"
! #define SHORTVN "PennMUSH 1.7.4p20"