[PENNMUSH-ANNOUNCE] 1.7.7-patch06
dunemush at tala.mede.uic.edu
dunemush at tala.mede.uic.edu
Sat Jan 25 14:34:31 CST 2003
This is patch06 to PennMUSH 1.7.7. After applying this patch, you will
have version 1.7.7p6
** Because this patch is so substantial, you should consider getting
** a clean tarball instead, and patching any of your local changes
** into that. Really. Don't say I didn't warn you.
To apply this patch, save it to a file in your top-level MUSH directory,
and do the following:
** Back up your existing databases! This patchlevel will convert
** them to the new flag system, and there's no going back!
patch -p1 < 1.7.7-patch06
** READ the UPGRADING file, section B, if you've hacked in
** flags in the past
make update
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:
* Rewrite of the flag system. The new system allows for any number
of flags, which may apply to any set of object types (the flags/toggles
distinction has been eliminated). Flags without single-character
abbreviations are better supported. Flags are stored in the object
database, and are referenced in hardcode and the db by the name
of the flag rather than bit positions. Older databases will be
automatically converted to the new format on load, but can not be
converted back (so make backups!). New flaglocal.dst file for
hardcode patch hackers to add custom flags.
* Rewrite of the matcher code (src/match.c). Some semantics of the
matching have changed: matching adjectives are parsed earlier and
restrict the match for greater efficiency; they also behave more
close as described in the help with respect to object ordering.
In addition, you can now do things by dbref without controlling
the object in many cases that previously required control.
Provoked by bug reports by Intrevis at M*U*S*H and Philip Mak.
Commands:
* @flag allows God to manipulate flags within the game, including
adding new flags. Flags additions/changes are maintained across
reboots, so this command does not need to be run at every startup.
Functions:
* lflags(), orlflags(), andlflags() return or test flag lists.
Minor changes:
* Much cleanup of @wall. Minimally-user-visible changes:
The @rwallemit, @rwallpose, @wallemit, @wallpose, @wizemit and
@wizpose commands have been removed. @wall no longer accepts the
/wizard, /royalty, and /pose switches, and @rwall and @wizwall accept
the /emit switch. Suggested by Vadiv at M*U*S*H, though he'd really
rather see @wall removed.
* @lock and @unlock now show which type of lock was set/cleared.
@lset now specifically notes that lock flags are being changed.
Suggested by Tanaku at M*U*S*H.
Fixes:
* @boot/me will no longer boot a connection if it is the sole
connection the player, even if it's technically inactive.
Suggested by Ambrosia at M*U*S*H.
* @boot'ing an active self (by descriptor) crashes the MUSH.
Discovered by Ashlynn at ChicagoMUSH.
* The thorn and eth characters generated with accent() would
convert to 'th' when stripped or viewed under NOACCENT, which
could be very confusing in object names. Same for the German sharp
s, which converted to 'ss'. Until we can cleverly set up separate
tables for object name unparsing, these have been reverted to their
old behavior so that stripaccents(accent(X,Y)) should return X for
any X and Y. Reported by DeeJee, Intrevis, and Time (@M*U*S*H).
Prereq: 1.7.7p5
*** 1_7_7.110/Patchlevel Tue, 07 Jan 2003 11:10:04 -0600 dunemush (pennmush/5_Patchlevel 1.17.1.11.1.7 600)
--- 1_7_7.146(w)/Patchlevel Thu, 23 Jan 2003 10:33:30 -0600 dunemush (pennmush/5_Patchlevel 1.17.1.11.1.8 600)
***************
*** 1,2 ****
Do not edit this file. It is maintained by the official PennMUSH patches.
! This is PennMUSH 1.7.7p5
--- 1,2 ----
Do not edit this file. It is maintained by the official PennMUSH patches.
! This is PennMUSH 1.7.7p6
*** 1_7_7.110/CHANGES Tue, 07 Jan 2003 11:10:04 -0600 dunemush (pennmush/g/23_CHANGES 1.31 600)
--- 1_7_7.146(w)/CHANGES Thu, 23 Jan 2003 22:16:38 -0600 dunemush (pennmush/g/23_CHANGES 1.43 600)
***************
*** 18,23 ****
--- 18,75 ----
==========================================================================
+ Version 1.7.7 patchlevel 6 January 23, 2003
+
+ Major changes:
+ * Rewrite of the flag system. The new system allows for any number
+ of flags, which may apply to any set of object types (the flags/toggles
+ distinction has been eliminated). Flags without single-character
+ abbreviations are better supported. Flags are stored in the object
+ database, and are referenced in hardcode and the db by the name
+ of the flag rather than bit positions. Older databases will be
+ automatically converted to the new format on load, but can not be
+ converted back (so make backups!). New flaglocal.dst file for
+ hardcode patch hackers to add custom flags.
+ * Rewrite of the matcher code (src/match.c). Some semantics of the
+ matching have changed: matching adjectives are parsed earlier and
+ restrict the match for greater efficiency; they also behave more
+ close as described in the help with respect to object ordering.
+ In addition, you can now do things by dbref without controlling
+ the object in many cases that previously required control.
+ Provoked by bug reports by Intrevis at M*U*S*H and Philip Mak.
+ Commands:
+ * @flag allows God to manipulate flags within the game, including
+ adding new flags. Flags additions/changes are maintained across
+ reboots, so this command does not need to be run at every startup.
+ Functions:
+ * lflags(), orlflags(), andlflags() return or test flag lists.
+ Minor changes:
+ * New NUMVERSION macro defined in hdrs/version.h that can be tested
+ by hardcode hacks to add code conditional on version.
+ * Much cleanup of @wall. Minimally-user-visible changes:
+ The @rwallemit, @rwallpose, @wallemit, @wallpose, @wizemit and
+ @wizpose commands have been removed. @wall no longer accepts the
+ /wizard, /royalty, and /pose switches, and @rwall and @wizwall accept
+ the /emit switch. Suggested by Vadiv at M*U*S*H, though he'd really
+ rather see @wall removed.
+ * @lock and @unlock now show which type of lock was set/cleared.
+ @lset now specifically notes that lock flags are being changed.
+ Suggested by Tanaku at M*U*S*H.
+ Fixes:
+ * @boot/me will no longer boot a connection if it is the sole
+ connection the player, even if it's technically inactive.
+ Suggested by Ambrosia at M*U*S*H.
+ * @boot'ing an active self (by descriptor) crashes the MUSH.
+ Discovered by Ashlynn at ChicagoMUSH.
+ * The thorn and eth characters generated with accent() would
+ convert to 'th' when stripped or viewed under NOACCENT, which
+ could be very confusing in object names. Same for the German sharp
+ s, which converted to 'ss'. Until we can cleverly set up separate
+ tables for object name unparsing, these have been reverted to their
+ old behavior so that stripaccents(accent(X,Y)) should return X for
+ any X and Y. Reported by DeeJee, Intrevis, and Time (@M*U*S*H).
+
+
Version 1.7.7 patchlevel 5 January 7, 2003
Fixes:
*** 1_7_7.110/game/txt/hlp/pennvers.hlp Tue, 07 Jan 2003 11:10:04 -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.2.1.1.1.1.1.1.1.2.1.4 600)
--- 1_7_7.146(w)/game/txt/hlp/pennvers.hlp Sat, 25 Jan 2003 13:52:38 -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.2.1.1.1.1.1.1.1.2.1.1.1.2.1.1.1.1.1.1.1.1.1.4 600)
***************
*** 1,5 ****
& changes
! & 1.7.7p5
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.7p6
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,69 ----
A list of the patchlevels associated with each release can
be read in 'help patchlevels'.
+ Version 1.7.7 patchlevel 6 January 23, 2003
+
+ Major changes:
+ * Rewrite of the flag system. The new system allows for any number
+ of flags, which may apply to any set of object types (the flags/toggles
+ distinction has been eliminated). Flags without single-character
+ abbreviations are better supported. Flags are stored in the object
+ database, and are referenced in hardcode and the db by the name
+ of the flag rather than bit positions. Older databases will be
+ automatically converted to the new format on load, but can not be
+ converted back (so make backups!). New flaglocal.dst file for
+ hardcode patch hackers to add custom flags.
+ * Rewrite of the matcher code (src/match.c). Some semantics of the
+ matching have changed: matching adjectives are parsed earlier and
+ restrict the match for greater efficiency; they also behave more
+ close as described in the help with respect to object ordering.
+ In addition, you can now do things by dbref without controlling
+ the object in many cases that previously required control.
+ Provoked by bug reports by Intrevis at M*U*S*H and Philip Mak.
+ Commands:
+ * @flag allows God to manipulate flags within the game, including
+ adding new flags. Flags additions/changes are maintained across
+ reboots, so this command does not need to be run at every startup.
+ Functions:
+ * lflags(), orlflags(), andlflags() return or test flag lists.
+ Minor changes:
+ * New NUMVERSION macro defined in hdrs/version.h that can be tested
+ by hardcode hacks to add code conditional on version.
+ * Much cleanup of @wall. Minimally-user-visible changes:
+ The @rwallemit, @rwallpose, @wallemit, @wallpose, @wizemit and
+ @wizpose commands have been removed. @wall no longer accepts the
+ /wizard, /royalty, and /pose switches, and @rwall and @wizwall accept
+ the /emit switch. Suggested by Vadiv at M*U*S*H, though he'd really
+ rather see @wall removed.
+ * @lock and @unlock now show which type of lock was set/cleared.
+ @lset now specifically notes that lock flags are being changed.
+ Suggested by Tanaku at M*U*S*H.
+ Fixes:
+ * @boot/me will no longer boot a connection if it is the sole
+ connection the player, even if it's technically inactive.
+ Suggested by Ambrosia at M*U*S*H.
+ * @boot'ing an active self (by descriptor) crashes the MUSH.
+ Discovered by Ashlynn at ChicagoMUSH.
+ * The thorn and eth characters generated with accent() would
+ convert to 'th' when stripped or viewed under NOACCENT, which
+ could be very confusing in object names. Same for the German sharp
+ s, which converted to 'ss'. Until we can cleverly set up separate
+ tables for object name unparsing, these have been reverted to their
+ old behavior so that stripaccents(accent(X,Y)) should return X for
+ any X and Y. Reported by DeeJee, Intrevis, and Time (@M*U*S*H).
+
+
+ & 1.7.7p5
Version 1.7.7 patchlevel 5 January 7, 2003
Fixes:
***************
*** 1323,1328 ****
--- 1376,1407 ----
* Indentation fixes [SW]
* Fixes up to 1.7.4p12 merged in.
+ & 1.7.6p6
+ Version 1.7.6 patchlevel 6 January 23, 2003
+
+ Minor changes:
+ * nearby() always works for see_all players. Reported by Sparta.
+ * findable() now requires that executor control either the object
+ or the victim or be see_all. Reported by Sparta.
+ Fixes:
+ * POWER^ and CHANNEL^ locks tested the wrong object. [SW]
+ * @grep, @wipe, and @edit now report when no attributes are
+ matched. Suggested by Procyon at M3
+ * Changes to telnet negotiation strings to match those in
+ PennMUSH 1.7.7, which seems to fix some problems with display
+ of connect.txt in some clients. Report by Howie at NewFrontier.
+ Patch by Time at M*U*S*H.
+ * @mail/silent wasn't unless you used /send too. Report by
+ Moe at Chicago.
+ * Wizards could set attributes on garbage objects (which were useless,
+ but may have leaked memory needlessly). Reported by Taz at M*U*S*H.
+ * @chan/hide didn't check for hide permissions properly in some
+ cases. Reported by Tanaku at M*U*S*H.
+ * Better explanation of when regexp matching is case sensitive vs.
+ insensitive. Suggested by Jake at BrazilMUX, Brazil at BrazilMUX, and
+ Vadiv at M*U*S*H.
+
+
& 1.7.6p5
Version 1.7.6 patchlevel 5 January 7, 2003
***************
*** 1431,1437 ****
* Help fixes by Bird at M*U*S*H, Intrevis at M*U*S*H, Philip Mak.
* @search type=something would report an error AND match the entire
database when something wasn't object, player, exit or room. [SW]
! * Cosmetic bug in @malias/list fixed. Report by Philip Mak.
* The info_slave now properly obeys the use_dns setting in mush.cnf.
This requires a full shutdown to put into effect. Report by
BlaZe at M*U*S*H. [SW]
--- 1510,1516 ----
* Help fixes by Bird at M*U*S*H, Intrevis at M*U*S*H, Philip Mak.
* @search type=something would report an error AND match the entire
database when something wasn't object, player, exit or room. [SW]
! * Cosmetic bug in @malias/list fixed. Report by Tanaku at M*U*S*H.
* The info_slave now properly obeys the use_dns setting in mush.cnf.
This requires a full shutdown to put into effect. Report by
BlaZe at M*U*S*H. [SW]
***************
*** 5945,5952 ****
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.7: 0, 1, 2, 3, 4, 5
! 1.7.6: 0, 1, 2, 3, 4, 5
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
--- 6024,6031 ----
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.7: 0, 1, 2, 3, 4, 5, 6
! 1.7.6: 0, 1, 2, 3, 4, 5, 6
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_7.110/game/txt/hlp/penntop.hlp Mon, 30 Dec 2002 23:35:27 -0600 dunemush (pennmush/13_penntop.hl 1.2.1.27.1.3.1.2.1.2.1.1.1.1.1.1.1.1.1.12.1.2 600)
--- 1_7_7.146(w)/game/txt/hlp/penntop.hlp Thu, 23 Jan 2003 10:24:30 -0600 dunemush (pennmush/13_penntop.hl 1.2.1.27.1.3.1.2.1.2.1.1.1.1.1.1.1.1.1.12.1.4 600)
***************
*** 1061,1067 ****
The '+' sign in the command has to be escaped out, or it is taken as
a regexp token. Furthermore, the pattern-match has to be anchored
with ^ and $, or something like 'try +setnum cookies=30 now' would
! also match. Regexps are case-sensitive; wildcard globbing is not.
Regular expression syntax is explained in 'help regexp syntax'.
& REGEXP SYNTAX
--- 1061,1067 ----
The '+' sign in the command has to be escaped out, or it is taken as
a regexp token. Furthermore, the pattern-match has to be anchored
with ^ and $, or something like 'try +setnum cookies=30 now' would
! also match.
Regular expression syntax is explained in 'help regexp syntax'.
& REGEXP SYNTAX
***************
*** 1078,1093 ****
of escaping to make things work right. One way to escape an argument
like %0 is: regeditall(%0,\\W,\\$0) or similar).
A regular expression is a pattern that is matched against a subject
string from left to right. Most characters stand for themselves in a
pattern, and match the corresponding characters in the subject.
! (Cont'd in help regexp syntax2)
! & regexp syntax2
! There are two different sets of meta-characters: those that
! are recognized anywhere in the pattern except within square
! brackets, and those that are recognized in square brackets.
! Outside square brackets, the meta-characters are as follows:
\ general escape character with several uses
^ assert start of subject
--- 1078,1099 ----
of escaping to make things work right. One way to escape an argument
like %0 is: regeditall(%0,\\W,\\$0) or similar).
+ Regular expression matching in PennMUSH can be used on user-defined
+ command or listen patterns. In this usage, regular expressions
+ are matched case-insensitively unless the attribute has the CASE flag
+ set. Regular expressions can also be matched in MUSHcode using
+ regmatch(), regrab(), regedit, etc. function families, which usually
+ come in case-sensitive and case-insensitive versions.
+ (Cont'd in help regexp syntax2)
+ & regexp syntax2
A regular expression is a pattern that is matched against a subject
string from left to right. Most characters stand for themselves in a
pattern, and match the corresponding characters in the subject.
! There are two different sets of meta-characters: those that are
! recognized anywhere in the pattern except within square brackets,
! and those that are recognized in square brackets. Outside square
! brackets, the meta-characters are as follows:
\ general escape character with several uses
^ assert start of subject
***************
*** 1778,1791 ****
* me (yourself)
* here (the room you're in)
Usually, you can also qualify an object with an adjective to help
! the MUSH determine which object you mean, when there is ambiguity.
! Adjectives include:
* my <obj> - an object you're carrying
* this <obj> - an object in your location (also: this here <obj>)
* toward <exit> - an exit in your location
* 1st, 2nd, etc. <obj> - one of a set of objects with the same names.
Objects are ordered in the order in which they're listed in your
! inventory, room contents, and exit list (in that order).
You may combine some adjectives (my 1st box, this here 2nd box).
& &HELP
This is the AHELP index.
--- 1784,1797 ----
* me (yourself)
* here (the room you're in)
Usually, you can also qualify an object with an adjective to help
! the MUSH determine which object you mean. Adjectives include:
* my <obj> - an object you're carrying
* this <obj> - an object in your location (also: this here <obj>)
* toward <exit> - an exit in your location
* 1st, 2nd, etc. <obj> - one of a set of objects with the same names.
Objects are ordered in the order in which they're listed in your
! inventory, room contents, and exit list (in that order). If there
! aren't enough objects, this will fail.
You may combine some adjectives (my 1st box, this here 2nd box).
& &HELP
This is the AHELP index.
*** 1_7_7.110/game/txt/hlp/pennfunc.hlp Mon, 30 Dec 2002 19:03:18 -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.1.2 600)
--- 1_7_7.146(w)/game/txt/hlp/pennfunc.hlp Thu, 09 Jan 2003 21:37:52 -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.1.5 600)
***************
*** 119,132 ****
& Information functions
Information functions return values related to objects.
! andflags() config()
! conn() controls() ctime() doing() elock()
! findable() flags() fullname() hasattr() hasattrp()
! hasflag() haspower() hastype() height() hidden()
! idle() iname() lock() lstats() lwho()
! money() mtime() mwho() name() nattr()
! nearby() objmem() orflags() playermem() poll()
! ports() powers() quota() type() visible()
width()
& Mail functions
--- 119,132 ----
& Information functions
Information functions return values related to objects.
! andflags() andlflags() config() conn() controls()
! ctime() doing() elock() findable() flags()
! fullname() hasattr() hasattrp() hasflag() haspower()
! hastype() height() hidden() idle() iname()
! lflags() lock() lstats() lwho() money()
! mtime() mwho() name() nattr() nearby()
! objmem() orflags() orlflags() playermem() poll()
! ports() powers() quota() type() visible()
width()
& Mail functions
***************
*** 353,372 ****
See also: BOOLEAN VALUES, or(), xor(), not()
& ANDFLAGS()
! andflags(<object>,<list of flags>)
This function returns 1 if <object> has all the flags in a specified
! list, and 0 if it does not. The list is specified with a single letter
! standing for each flag, like the output of the FLAGS() function. A '!'
! preceding a flag letter means "not flag".
!
Thus, ANDFLAGS(me,WD) would return 1 if I was set WIZARD and DARK.
ANDFLAGS(me,W!Dc) would return 1 if I was set WIZARD, not DARK,
and CONNECTED.
!
! If a letter does not correspond to any flag, <object> doesn't have
! it, so the function returns 0. There can be an arbitrary number of
! flags. Do not put spaces between flag letters.
& ANSI()
ansi(<codes>,<string>)
--- 353,385 ----
See also: BOOLEAN VALUES, or(), xor(), not()
& ANDFLAGS()
! andflags(<object>,<string of flag letters>)
This function returns 1 if <object> has all the flags in a specified
! string, and 0 if it does not. The string is specified with a single
! letter standing for each flag, like the output of the FLAGS()
! function. A '!' preceding a flag letter means "not flag".
!
Thus, ANDFLAGS(me,WD) would return 1 if I was set WIZARD and DARK.
ANDFLAGS(me,W!Dc) would return 1 if I was set WIZARD, not DARK,
and CONNECTED.
!
! If a letter does not correspond to any flag, <object> doesn't have it,
! so the function returns 0. There can be an arbitrary number of flags. Do
! not put spaces between flag letters.
! & ANDLFLAGS()
! andlflags(<object>,<list of flags>)
!
! This function returns 1 if <object> has all the flags in a specified
! list, and 0 if it does not. The list is a space-separated list of
! flag names. A '!' preceding a flag name means "not flag".
!
! Thus, ANDLFLAGS(me,wizard dark) would return 1 if I was set WIZARD
! and DARK. ANDFLAGS(me,wizard !Dark connected) would return 1 if I
! was set WIZARD, not DARK, and CONNECTED.
!
! If a name does not correspond to any flag, <object> doesn't have it,
! so the function returns 0. There can be an arbitrary number of flags.
& ANSI()
ansi(<codes>,<string>)
***************
*** 1118,1127 ****
--- 1131,1160 ----
& FLAGS()
flags(<object>)
flags(<object>/<attribute>)
+ flags()
Flags returns a string consisting of the flags attached to the
object or the attribute on the object. The string is a single word
made up of all the appropriate flag letters.
+
+ Given no arguments, this function returns a string consisting of
+ all the flag letters of all the flags the server knows. Note that
+ some flags may not have flag letters, and multiple flags may have
+ the same letter (and will appear twice).
+
+ See also: lflags()
+ & LFLAGS()
+ lflags(<object>)
+ lflags(<object>/<attribute>)
+ lflags()
+
+ Lflags returns a space-separated list consisting of the names of flags
+ attached to the object or the attribute on the object.
+
+ Given no arguments, this function returns a space-separated list
+ of all flag names know to the server.
+
+ See also: flags()
& FLIP()
& REVERSE()
flip(<string>)
***************
*** 1364,1369 ****
--- 1397,1403 ----
If an attribute is given, checks to see if the attribute has the
given attribute flag. See help @set2 for attribute flag names.
+ See also: orlflags(), andlflags(), orflags(), andflags()
& HASPOWER()
haspower(<object>, <power name>)
***************
*** 2425,2443 ****
See also: BOOLEAN VALUES, and()
& ORFLAGS()
! orflags(<object>,<list of flags>)
This function returns 1 if <object> has at least one of the flags in
! a specified list, and 0 if it does not. The list is specified with a
! single letter standing for each flag, like the output of the FLAGS()
function. A '!' preceding a flag letter means "not flag".
!
Thus, ORFLAGS(me,Wr) would return 1 if I am set WIZARD or ROYALTY.
ORFLAGS(me,D!c) would return 1 if I am DARK or not CONNECTED.
!
! If a letter does not correspond to any flag, <object> doesn't have
! it, so it is simply ignored. There can be an arbitrary number of
! flags. Do not put spaces between flag letters.
& OWNER()
owner(<object>[/<attribute>])
--- 2459,2490 ----
See also: BOOLEAN VALUES, and()
& ORFLAGS()
! orflags(<object>,<string of flag characters>)
This function returns 1 if <object> has at least one of the flags in
! a specified string, and 0 if it does not. The string is specified with
! a single letter standing for each flag, like the output of the FLAGS()
function. A '!' preceding a flag letter means "not flag".
!
Thus, ORFLAGS(me,Wr) would return 1 if I am set WIZARD or ROYALTY.
ORFLAGS(me,D!c) would return 1 if I am DARK or not CONNECTED.
!
! If a letter does not correspond to any flag, <object> doesn't have it,
! so it is simply ignored. There can be an arbitrary number of flags. Do
! not put spaces between flag letters.
! & ORLFLAGS()
! orlflags(<object>,<list of flag names>)
!
! This function returns 1 if <object> has at least one of the flags in
! a specified list, and 0 if it does not. The list is a space-separated
! list of flag names. A '!' preceding a flag name means "not flag".
!
! Thus, ORLFLAGS(me,wizard royalty) would return 1 if I am set
! WIZARD or ROYALTY. ORLFLAGS(me,dark !connected) would return 1 if I am
! DARK or not CONNECTED.
!
! If a name does not correspond to any flag, <object> doesn't have it,
! so it is simply ignored. There can be an arbitrary number of flags.
& OWNER()
owner(<object>[/<attribute>])
*** 1_7_7.110/game/txt/hlp/pennflag.hlp Sun, 22 Dec 2002 00:51:08 -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)
--- 1_7_7.146(w)/game/txt/hlp/pennflag.hlp Wed, 08 Jan 2003 16:41:25 -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.1.1 600)
***************
*** 12,18 ****
To un-set a flag, use the exclamation point (!) before the flag
name. For help on any particular flag, type: help <flag name>
! The list of flags is available in: help flag list
(continued in help flags2)
& FLAGS2
--- 12,19 ----
To un-set a flag, use the exclamation point (!) before the flag
name. For help on any particular flag, type: help <flag name>
! A descriptive list of flags is available in: help flag list
! A complete list of flags is available through: @flag/list
(continued in help flags2)
& FLAGS2
***************
*** 31,38 ****
indicate the TYPE of an object. The absence of these four special flags
indicates the object is of type THING.
! See also: examine, flags(), hasflag(), orflags(), andflags()
! types of objects, type(), hastype()
& FLAG LIST
& FLAGS LIST
Flag Title Flag Title Flag Title
--- 32,39 ----
indicate the TYPE of an object. The absence of these four special flags
indicates the object is of type THING.
! See also: examine, flags(), hasflag(), orflags(), andflags(),
! orlflags(), andlflags(), types of objects, type(), hastype(), @flag
& FLAG LIST
& FLAGS LIST
Flag Title Flag Title Flag Title
***************
*** 55,61 ****
w - No_Warn x - Terse ? - Unregistered
^ - Listen_Parent ~ - Noaccents
---------------------------------------------------------------------
! Some flags may not be enabled on some MUSHes.
& ABODE
Flag: ABODE (rooms)
--- 56,63 ----
w - No_Warn x - Terse ? - Unregistered
^ - Listen_Parent ~ - Noaccents
---------------------------------------------------------------------
! Some flags may not be enabled on some MUSHes. @flag/list will show
! which are available.
& ABODE
Flag: ABODE (rooms)
*** 1_7_7.110/game/txt/hlp/penncmd.hlp Thu, 02 Jan 2003 23:55:40 -0600 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.10.1.1.1.1.1.4 600)
--- 1_7_7.146(w)/game/txt/hlp/penncmd.hlp Thu, 23 Jan 2003 10:17:00 -0600 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.10.1.1.1.1.1.4.1.3 600)
***************
*** 57,78 ****
@find @force @function @gedit @grep
@halt @lemit @listmotd @mail @map
@notify @nspemit @oemit @password @pemit
! @ps @remit @restart @rwall @rwallemit
! @rwallpose @scan @search @select @stats
! @sweep @switch @teleport @trigger @verb
! @version @wait @whereis @zemit
& @-WIZARD
These '@' commands are only usable by wizards or privileged players:
@allhalt @allquota @boot @chownall @chzoneall
@comment @dbck @disable @dump @enable
! @hide @hook @kick @log @motd
! @newpassword @pcreate @poll @poor @power
! @purge @quota @readcache @rejectmotd @shutdown
! @sitelock @squota @uptime @wall
! @wallemit @wallpose @wizemit @wizmotd @wizpose
! @wizwall cd ch cv
& @@
--- 57,77 ----
@find @force @function @gedit @grep
@halt @lemit @listmotd @mail @map
@notify @nspemit @oemit @password @pemit
! @ps @remit @restart @scan @search
! @select @stats @sweep @switch @teleport
! @trigger @verb @version @wait @whereis
! @zemit
& @-WIZARD
These '@' commands are only usable by wizards or privileged players:
@allhalt @allquota @boot @chownall @chzoneall
@comment @dbck @disable @dump @enable
! @flag @hide @hook @kick @log
! @motd @newpassword @pcreate @poll @poor
! @power @purge @quota @readcache @rejectmotd
! @shutdown @sitelock @squota @uptime @wall
! @wizmotd @wizwall cd ch cv
& @@
***************
*** 560,565 ****
--- 559,565 ----
@config/functions
@config/commands
@config/attribs
+ @config/flags
@config/list[/lowercase] [<option|option-type>]
@config/set option=value
***************
*** 569,574 ****
--- 569,575 ----
/functions -- Lists all functions.
/commands -- Lists all commands.
+ /flags -- Lists all flags.
/attribs -- Lists all standard attributes.
/list -- Lists the value of a particular <option> or <option-type>
if given one; lists the option-types if not.
***************
*** 1252,1257 ****
--- 1253,1324 ----
> Lackey pages: Whee
See also: PUPPET, DBREF
+ & @flag
+ @flag <flag name>
+ @flag/list [<flag name pattern>]
+ @flag/add <flag name>=[<letter>], [<type(s)>], [<setperms>], [<unsetperms>]
+ @flag/delete <flag name>
+ @flag/alias <flag name>=<alias>
+ @flag/restrict <flag name>=[<setperms>], [<unsetperms>]
+ @flag/enable <flag name>
+ @flag/disable <flagname>
+
+ This command manipulates the list of flags in the database.
+ When given a flag name as an argument, the command displays information
+ about the flag, including aliases and permissions. @flag/list
+ lists names of enabled flags, and may be given a wildcarded pattern
+ to restrict which names it will show.
+
+ All other switches to this command are restricted to God:
+ /disable disables a flag, making it invisible and unusable
+ /enable re-enables a disabled flag
+ /alias adds a new alias for an existing flag
+ /restrict changes flag permissions (see help @flag2)
+ /delete deletes a flag completely, removing it from all objects
+ in the database and the removing it permanently from the
+ flag table. It requires the exact flag name or alias to be used.
+ Be very very careful with this.
+
+ See also: help flags. See help @flag2 for information on @flag/add
+ & @flag2
+ @flag/add is used to add a new flag with the given name. Arguments
+ other than the flag name are optional:
+
+ <letter> gives the flag's one-letter abbreviation, which must
+ not conflict with the one-letter abbreviation of another flag that
+ could be applied to the same object type(s). It defaults to none, which
+ means it won't appear in a list of flag characters but can still be
+ tested for with hasflag(), andlflags(), and orlflags().
+ <type> specifies the space-separated list of types to which the flag
+ applies, and may be 'any' or one or more of 'room', 'thing', 'player',
+ or 'exit'. It defaults to 'any'.
+ <setperms> specifies the space-separated list of permissions for who can
+ set and/or see the flag. See 'help flag permissions' for details.
+ It defaults to 'any'
+ <unsetperms> specifies the space-separated list of permissions for who
+ can clear the flag on an object they control. It defaults to
+ whatever <setperms> is given, or 'any'.
+
+ Flags added with @flag/add are saved with the database when it
+ is dumped, and do not need to be re-added at startup. They are
+ treated exactly as any other flag in the server.
+ & flag permissions
+ The following permissions can be used when specifying whether
+ <actor> may set or clear a flag on an <object> they control:
+
+ trusted <actor> must pass a TRUST check (see help TRUST)
+ royalty <actor> must be ROYALTY or WIZARD
+ wizard <actor> must be WIZARD
+ god <actor> must be God (#1)
+
+ The following permissions can be used to specify whether <looker>
+ can see the flag on an <object>, and are given along with the
+ <setperms> in @flag/add. By default, anyone can see the flag:
+
+ dark <actor> must be Only God (#1) to see the flag on objects.
+ mdark <actor> must be WIZARD or ROYALTY
+ odark <actor> must own the <object> (or be WIZARD or ROYALTY)
+
& @function
@function [<function name>]
@function <function name>=<object>,<attribute>[,<min args>, <max args>]
***************
*** 2494,2512 ****
See also: @charges, use, ACTION LISTS
& @rwall
! @rwall <message>
! Only wizards and royalty may use this command. It broadcasts a message to
! all connected wizards and royals, prefixed with "Admin:". If the first
! character is : or ; it does the same thing as @rwallpose.
! & @rwallemit
! @rwallemit <message>
! Only wizards and royalty may use this command. It is similar to @wizemit,
! but broadcasts the message to all connected wizards and royals.
! & @rwallpose
! @rwallpose <pose>
! Only wizards and royalty may use this command. It's a variant of @rwall,
! using a pose, and is identical to "@rwall :<pose>"
& @scan
@scan[/<switch>] <command>
--- 2561,2574 ----
See also: @charges, use, ACTION LISTS
& @rwall
! @rwall[/emit] <message>
!
! Only wizards and royalty may use this command. It broadcasts a
! message to all connected wizards and royals. If the /emit switch
! is given, it's done as a prefixed emit. Otherwise, it acts like
! a @channel.
! See also: @wall, @wizwall
& @scan
@scan[/<switch>] <command>
***************
*** 3067,3085 ****
You cannot do a non-timed semaphore on an attribute with a numeric name,
as that is taken as a timeout instead.
& @wall
! & @wallemit
! & @wallpose
! @wall [/<switch>] <message>
! @wallemit <message>
! @wallpose <pose>
Only wizards can use this command, which allows the player to shout
! a message to every player connected. It must be typed in full.
! It can also take the following switches:
! /wizard : broadcast to wizards (like @wizwall)
! /royalty : broadcast to wizards and royalty (like @rwall)
! /pose : pose a message to all (or use @wallpose)
! /emit : emit a message to all (or use @wallemit)
You can also use @wall :<pose> to @wallpose.
--- 3129,3141 ----
You cannot do a non-timed semaphore on an attribute with a numeric name,
as that is taken as a timeout instead.
& @wall
! @wall[/<switch>] <message>
Only wizards can use this command, which allows the player to shout
! or pose a message to every player connected. It must be typed in full.
! It can also take the following switches
! /emit : emit a prefixed message to all.
! /noeval : Don't evaluate the message.
You can also use @wall :<pose> to @wallpose.
***************
*** 3174,3193 ****
exceptions as given above. If <pattern> is given, it gets rid of
all attributes which match that pattern. Note that the restrictions
above still apply.
- & @wizemit
& @wizwall
! & @wizpose
! @wizwall <message>
! @wizemit <message>
! @wizpose <message>
This wiz-only command works similarly to @rwall or @wall, sending
a message in either say, pose, or emit format to all wizards who
are currently logged in.
- @wizwall :<pose> or @wizwall ;<pose> will also send the message in
- pose format.
-
See also: @wall, @rwall
& @wizmotd
@wizmotd <message>
--- 3230,3242 ----
exceptions as given above. If <pattern> is given, it gets rid of
all attributes which match that pattern. Note that the restrictions
above still apply.
& @wizwall
! @wizwall[/emit] <message>
This wiz-only command works similarly to @rwall or @wall, sending
a message in either say, pose, or emit format to all wizards who
are currently logged in.
See also: @wall, @rwall
& @wizmotd
@wizmotd <message>
*** 1_7_7.110/game/txt/hlp/index.hlp Sat, 07 Dec 2002 10:34:31 -0600 dunemush (pennmush/20_index.hlp 1.1.1.1.1.1.1.1.1.2.1.1.2.2.2.2.1.1.1.4.2.1.1.1 660)
--- 1_7_7.146(w)/game/txt/hlp/index.hlp Tue, 14 Jan 2003 23:22:31 -0600 dunemush (pennmush/20_index.hlp 1.1.1.1.1.1.1.1.1.2.1.1.2.2.2.2.1.1.1.4.2.1.1.6 660)
***************
*** 74,263 ****
1.7.5p5 1.7.5p6 1.7.5p7
1.7.5p8 1.7.5p9 1.7.5p10
1.7.5p11 1.7.5p12 1.7.6p0
! 1.7.6p1 1.7.7p0 :
! ; @-attributes @-building
! @-general @-wizard @@
! @@() @aahear @aclone
! @aconnect @adeath @adescribe
! @adestroy @adisconnect @adrop
For more, see Entries-5
-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
& Entries-5
-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
! @aefail @aenter @afailure
! @afollow @agive @ahear
! @aidescribe @aleave @alfail
! @alias @allhalt @allquota
! @amhear @amove @apayment
! @areceive @asuccess @atport
! @atrchown @atrlock @attribute
! @aufail @aunfollow @ause
! @away @azenter @azleave
! @boot @break @cemit
! @channel @channel2 @channel3
! @channel4 @channel5 @charges
! @chat @chown @chownall
! @chzone @chzone2 @chzoneall
! @clock @clock2 @clone
! @command @comment @config
For more, see Entries-6
-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
& Entries-6
-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
! @config attribs @config chat @config cmds
! @config cosmetic @config cosmetic2 @config costs
! @config db @config dump @config funcs
! @config limits @config limits2 @config log
! @config net @config parameters @config tiny
! @conformat @cost @cpattr
! @create @dbck @death
! @decompile @decompile2 @decompile3
! @descformat @describe @destroy
! @destroy2 @dig @dig2
! @disable @doing @dolist
! @drain @drop @dump
! @ealias @edit @efail
! @elock @emit @enable
! @enter @entrances @eunlock
! @exitformat @failure @filter
For more, see Entries-7
-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
& Entries-7
-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
! @filter2 @find @firstexit
! @follow @force @force2
! @forwardlist @function @function2
! @function3 @function4 @gedit
! @give @grep2 @grep
! @halt @haven @hide
! @hook @hook2 @idescribe
! @idle @infilter @inprefix
! @kick @lalias @leave
! @lemit @lfail @link
! @list @listen @listen2
! @listmotd @lock @lock2
! @lock3 @lock4 @lock5
! @lock6 @lock7 @lock8
! @lock9 @log @logwipe
! @lset @map2 @mail
For more, see Entries-8
-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
& Entries-8
-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
! @malias @malias2 @malias3
! @malias4 @malias5 @map
! @motd @move @mvattr
! @name @nameaccent @nameformat
! @newpassword @notify @nspemit
! @nuke @odeath @odescribe
! @odrop @oefail @oemit
! @oenter @ofailure @ofollow
! @ogive @oidescribe @oleave
! @olfail @omove @opayment
! @open @oreceive @osuccess
! @otport @oufail @ounfollow
! @ouse @oxenter @oxleave
! @oxmove @oxtport @ozenter
! @ozleave @parent @password
! @payment @pcreate @pemit
For more, see Entries-9
-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
& Entries-9
-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
! @pemit2 @poll @poor
! @power @prefix @ps
! @purge @quota @readcache
! @receive @recycle @rejectmotd
! @remit @restart @runout
! @rwall @rwallemit @rwallpose
! @scan @search @search2
! @search3 @select @set
! @sex @shutdown @sitelock
! @sitelock2 @sitelock3 @squota
! @startup @stats @success
! @sweep @switch @switch2
! @teleport @tport @trigger
! @trigger2 @ufail @ulock
! @undestroy @unfollow @unlink
! @unlock @unrecycle @uptime
For more, see Entries-10
-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
& Entries-10
-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
! @uptime2 @use @uunlock
! @verb @verb2 @verb3
! @verb4 @version @vrml_url
! @wait @wait2 @wall
! @wallemit @wallpose @warnings
@warnings2 @warnings3 @wcheck
! @whereis @wipe @wizemit
! @wizmotd @wizpose @wizwall
! @zemit @zenter @zleave
! \ ^ abode
! abs() accent() accent2
! accent3 accent4 acos()
! action lists action2 add()
! after() ahelp alphamax()
! alphamin() and() andflags()
! anews ansi ansi()
For more, see Entries-11
-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
& Entries-11
-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
! aposs() art() asin()
! atan() atan2() atrlock()
! attrcnt() attrib-ownership attribute flags
! attribute functions attribute list attributes
! attributes list attributes2 attributes3
! attributes4 audible audible2
! band() beep() before()
! being killed bitwise functions bnand()
! bnot() boolean functions boolean values
! boolean2 boolean3 bor()
! bound() brackets() brief
! builder bxor() cand()
! capstr() case() caseall()
! cat() cd ceil()
! cemit() center() cflags()
! ch changes channel functions
For more, see Entries-12
-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
& Entries-12
-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
! channel-list channels() chat
! checkpass() chown_ok chr()
! clients clock() clone()
! cloudy code color
! commands communication functions comp()
! comsys con() config()
! conn() connected control
! controls() convsecs() convtime()
! convutcsecs() copyright copyrite
! cor() cos() costs
! create() credits ctime()
! ctitle() ctu() cv
! cwho() dark dark2
! database dbref # dbref functions
! dbref number dbref2 dbrefs
! debug debug2 dec()
For more, see Entries-13
-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
& Entries-13
-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
! decrypt() default() delete()
! desert destroy_ok die()
! dig() dismiss dist2d()
! dist3d() div() doing
! doing() drop drop-tos
e() edefault() edit()
element() elements() elist()
elock() emit() enactor
--- 74,266 ----
1.7.5p5 1.7.5p6 1.7.5p7
1.7.5p8 1.7.5p9 1.7.5p10
1.7.5p11 1.7.5p12 1.7.6p0
! 1.7.6p1 1.7.6p2 1.7.6p3
! 1.7.6p4 1.7.6p5 1.7.6p6
! 1.7.7p0 1.7.7p1 1.7.7p2
! 1.7.7p3 1.7.7p4 1.7.7p5
! 1.7.7p6 : ;
! @-attributes @-building @-general
For more, see Entries-5
-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
& Entries-5
-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
! @-wizard @@ @@()
! @aahear @aclone @aconnect
! @adeath @adescribe @adestroy
! @adisconnect @adrop @aefail
! @aenter @afailure @afollow
! @agive @ahear @aidescribe
! @aleave @alfail @alias
! @allhalt @allquota @amhear
! @amove @apayment @areceive
! @asuccess @atport @atrchown
! @atrlock @attribute @aufail
! @aunfollow @ause @away
! @azenter @azleave @boot
! @break @cemit @channel
! @channel2 @channel3 @channel4
! @channel5 @charges @chat
For more, see Entries-6
-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
& Entries-6
-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
! @chown @chownall @chzone
! @chzone2 @chzoneall @clock
! @clock2 @clone @command
! @comment @config @config attribs
! @config chat @config cmds @config cosmetic
! @config cosmetic2 @config costs @config db
! @config dump @config funcs @config limits
! @config limits2 @config log @config net
! @config parameters @config tiny @conformat
! @cost @cpattr @create
! @dbck @death @decompile
! @decompile2 @decompile3 @descformat
! @describe @destroy @destroy2
! @dig @dig2 @disable
! @doing @dolist @drain
! @drop @dump @ealias
For more, see Entries-7
-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
& Entries-7
-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
! @edit @efail @elock
! @emit @enable @enter
! @entrances @eunlock @exitformat
! @failure @filter @filter2
! @find @firstexit @flag
! @flag2 @follow @force
! @force2 @forwardlist @function
! @function2 @function3 @function4
! @gedit @give @grep2
! @grep @halt @haven
! @hide @hook @hook2
! @idescribe @idle @infilter
! @inprefix @kick @lalias
! @leave @lemit @lfail
! @link @list @listen
! @listen2 @listmotd @lock
For more, see Entries-8
-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
& Entries-8
-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
! @lock2 @lock3 @lock4
! @lock5 @lock6 @lock7
! @lock8 @lock9 @log
! @logwipe @lset @map2
! @mail @malias @malias2
! @malias3 @malias4 @malias5
! @map @motd @move
! @mvattr @name @nameaccent
! @nameformat @newpassword @notify
! @nspemit @nuke @odeath
! @odescribe @odrop @oefail
! @oemit @oenter @ofailure
! @ofollow @ogive @oidescribe
! @oleave @olfail @omove
! @opayment @open @oreceive
! @osuccess @otport @oufail
For more, see Entries-9
-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
& Entries-9
-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
! @ounfollow @ouse @oxenter
! @oxleave @oxmove @oxtport
! @ozenter @ozleave @parent
! @password @payment @pcreate
! @pemit @pemit2 @poll
! @poor @power @prefix
! @ps @purge @quota
! @readcache @receive @recycle
! @rejectmotd @remit @restart
! @runout @rwall @scan
! @search @search2 @search3
! @select @set @sex
! @shutdown @sitelock @sitelock2
! @sitelock3 @squota @startup
! @stats @success @sweep
! @switch @switch2 @teleport
For more, see Entries-10
-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
& Entries-10
-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
! @tport @trigger @trigger2
! @ufail @ulock @undestroy
! @unfollow @unlink @unlock
! @unrecycle @uptime @uptime2
! @use @uunlock @verb
! @verb2 @verb3 @verb4
! @version @vrml_url @wait
! @wait2 @wall @warnings
@warnings2 @warnings3 @wcheck
! @whereis @wipe @wizmotd
! @wizwall @zemit @zenter
! @zleave \ ^
! abode abs() accent()
! accent2 accent3 accent4
! acos() action lists action2
! add() after() ahelp
For more, see Entries-11
-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
& Entries-11
-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
! alphamax() alphamin() and()
! andflags() andlflags() anews
! ansi ansi() aposs()
! art() asin() atan()
! atan2() atrlock() attrcnt()
! attrib-ownership attribute flags attribute functions
! attribute list attributes attributes list
! attributes2 attributes3 attributes4
! audible audible2 band()
! beep() before() being killed
! bitwise functions bnand() bnot()
! boolean functions boolean values boolean2
! boolean3 bor() bound()
! brackets() brief builder
! bxor() cand() capstr()
! case() caseall() cat()
For more, see Entries-12
-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
& Entries-12
-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
! cd ceil() cemit()
! center() cflags() ch
! changes channel functions channel-list
! channels() chat checkpass()
! chown_ok chr() clients
! clock() clone() cloudy
! code color commands
! communication functions comp() comsys
! con() config() conn()
! connected control controls()
! convsecs() convtime() convutcsecs()
! copyright copyrite cor()
! cos() costs create()
! credits ctime() ctitle()
! ctu() cv cwho()
! dark dark2 database
For more, see Entries-13
-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
& Entries-13
-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
! dbref # dbref functions dbref number
! dbref2 dbrefs debug
! debug2 dec() decrypt()
! default() delete() desert
! destroy_ok die() dig()
! dismiss dist2d() dist3d()
! div() doing doing()
! drop drop-tos dynhelp()
e() edefault() edit()
element() elements() elist()
elock() emit() enactor
***************
*** 266,283 ****
escape() etimefmt() etimefmt2
eval() evaluation order evaluation2
events examine executor
- exit() exits exits2
- exp() extract() failure
- fdiv() filter() filterbool()
For more, see Entries-14
-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
& Entries-14
-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
findable() first() fixed
! flag list flags flags list
! flags() flags2 flip()
! floating floating point functions floor()
floordiv() fmod() fold()
fold2 folderstats() follow
followers() following() foreach()
--- 269,286 ----
escape() etimefmt() etimefmt2
eval() evaluation order evaluation2
events examine executor
For more, see Entries-14
-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
& Entries-14
-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
+ exit() exits exits2
+ exp() extract() failure
+ fdiv() filter() filterbool()
findable() first() fixed
! flag list flag permissions flags
! flags list flags() flags2
! flip() floating floor()
floordiv() fmod() fold()
fold2 folderstats() follow
followers() following() foreach()
***************
*** 287,300 ****
get() get_eval() give
global commands globals go
going goto grab()
- graball() grep() grepi()
- gt() gte() halt
- hasattr() hasattrp() hasattrpval()
For more, see Entries-15
-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
& Entries-15
-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
hasattrval() hasflag() haspower()
hastype() haven height()
here hidden() home
--- 290,303 ----
get() get_eval() give
global commands globals go
going goto grab()
For more, see Entries-15
-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
& Entries-15
-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
+ graball() grep() grepi()
+ gt() gte() halt
+ hasattr() hasattrp() hasattrpval()
hasattrval() hasflag() haspower()
hastype() haven height()
here hidden() home
***************
*** 308,385 ****
interiors2 internationalization inum()
inventory isdaylight() isdbref()
isint() isnum() isword()
- itemize() items() iter()
- iter2 itext() judge
- jump_ok jury_ok kill
For more, see Entries-16
-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
& Entries-16
-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
last & lastlogout last() lastip
lastsite lattr() lcon()
lcstr() ldelete() leave
left() lemit() lexits()
! license light link()
! link_ok linking list functions
! list() listen_parent listening
! listening2 listening3 lists
! lit() ljust() lmath()
! ln() lnum() loc()
! locale localize() locate()
! locate2 lock list lock types
! lock types2 lock() locking
! locklist locks locktypes
! locktypes2 log() logout
! look look2 looping
For more, see Entries-17
-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
& Entries-17
-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
! lparent() lplayers() lsearch()
! lsearch2 lsearchr() lstats()
! lt() lte() lvcon()
! lvexits() lvplayers() lwho()
! macros macros2 mail
! mail functions mail() mail-admin
! mail-folders mail-other mail-reading
! mail-sending maildstats() mailfrom()
! mailfstats() mailstats() mailstatus()
! mailsubject() mailtime() map()
! master room match() matchall()
! matching math functions max()
! me mean() median()
! member() merge() mid()
! min() mix() mix2
! mod() modulo() modulus()
For more, see Entries-18
-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
& Entries-18
-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
! money money() monitor
! mortal move mtime()
! mudname() mul() munge()
! munge2 munge3 mushcode
! mushcode2 mwho() myopic
! name() nand() nattr()
! nearby() neq() new locks
! newbie newbie2 newbie3
! news next() no_command
! no_leave no_tel no_warn
! noaccents noleave non-standard attributes
! nor() nospoof not()
! nowarn nspemit() null()
! num() obj() object parents
! objeval() objmem() oemit()
! on-vacation opaque open()
For more, see Entries-19
-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
& Entries-19
-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
! or() ord() orflags()
owner() page page2
paranoid parent parent()
parents parents2 parents3
--- 311,389 ----
interiors2 internationalization inum()
inventory isdaylight() isdbref()
isint() isnum() isword()
For more, see Entries-16
-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
& Entries-16
-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
+ itemize() items() iter()
+ iter2 itext() judge
+ jump_ok jury_ok kill
last & lastlogout last() lastip
lastsite lattr() lcon()
lcstr() ldelete() leave
left() lemit() lexits()
! lflags() license light
! link() link_ok linking
! list functions list() listen_parent
! listening listening2 listening3
! lists lit() ljust()
! lmath() ln() lnum()
! loc() locale localize()
! locate() locate2 lock list
! lock types lock types2 lock()
For more, see Entries-17
-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
& Entries-17
-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
! locking locklist locks
! locktypes locktypes2 log()
! logout look look2
! looping lparent() lplayers()
! lpos() lsearch() lsearch2
! lsearchr() lstats() lt()
! lte() lvcon() lvexits()
! lvplayers() lwho() macros
! macros2 mail mail functions
! mail() mail-admin mail-folders
! mail-other mail-reading mail-sending
! maildstats() mailfrom() mailfstats()
! mailstats() mailstatus() mailsubject()
! mailtime() map() master room
! match() matchall() matching
! math functions max() me
For more, see Entries-18
-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
& Entries-18
-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
! mean() median() member()
! merge() mid() min()
! mix() mix2 mod()
! modulo() modulus() money
! money() monitor mortal
! move mtime() mudname()
! mul() munge() munge2
! munge3 mushcode mushcode2
! mwho() myopic name()
! nand() nattr() nearby()
! neq() new locks newbie
! newbie2 newbie3 news
! next() no_command no_leave
! no_tel no_warn noaccents
! noleave non-standard attributes nor()
! nospoof not() nowarn
For more, see Entries-19
-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
& Entries-19
-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
! nspemit() null() num()
! obj() object parents objeval()
! objmem() oemit() on-vacation
! opaque open() or()
! ord() orflags() orlflags()
owner() page page2
paranoid parent parent()
parents parents2 parents3
***************
*** 391,405 ****
poss() power() powers list
powers list2 powers() powers2
pueblo pueblo features pueblo()
- puppet puppets puppets2
- queue quiet quit
- quota() r() r-function
- rand() read regedit()
For more, see Entries-20
-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
& Entries-20
-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
regeditall() regeditalli() regediti()
regexp regexp classes regexp classes2
regexp examples regexp syntax regexp syntax2
--- 395,409 ----
poss() power() powers list
powers list2 powers() powers2
pueblo pueblo features pueblo()
For more, see Entries-20
-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
& Entries-20
-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
+ puppet puppets puppets2
+ queue quiet quit
+ quota() r() r-function
+ rand() read regedit()
regeditall() regeditalli() regediti()
regexp regexp classes regexp classes2
regexp examples regexp syntax regexp syntax2
***************
*** 412,426 ****
remainder() remit() remove()
repeat() replace() rest()
restarts() restarttime() restrict
- restrict2 restrict3 reverse()
- revwords() right() rjust()
- rloc() rnum() room
- room() round() royalty
For more, see Entries-21
-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
& Entries-21
-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
rquota rules s()
s-function safe say
score scramble() screenheight
--- 416,430 ----
remainder() remit() remove()
repeat() replace() rest()
restarts() restarttime() restrict
For more, see Entries-21
-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
& Entries-21
-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
+ restrict2 restrict3 reverse()
+ revwords() right() rjust()
+ rloc() rnum() room
+ room() round() royalty
rquota rules s()
s-function safe say
score scramble() screenheight
***************
*** 433,447 ****
setq3 setr() setting-attributes
setunion() sex sha1()
shared shared players shared players2
- shl() shr() shuffle()
- sign() sin() slay
- softcode sort() sortby()
- soundex() soundex2 soundlike()
For more, see Entries-22
-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
& Entries-22
-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
soundslike() space() spellnum()
splice() spoofing sqrt()
squish() stack starttime()
--- 437,451 ----
setq3 setr() setting-attributes
setunion() sex sha1()
shared shared players shared players2
For more, see Entries-22
-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
& Entries-22
-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
+ shl() shr() shuffle()
+ sign() sin() slay
+ softcode sort() sortby()
+ soundex() soundex2 soundlike()
soundslike() space() spellnum()
splice() spoofing sqrt()
squish() stack starttime()
***************
*** 454,502 ****
substitutions4 success suspect
switch wildcards switch() switch2
switchall() switches t()
- table() tag() tagwrap()
- take tan() teach
- tel() tel_ok temple
- terse textfile() think
For more, see Entries-23
-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
& Entries-23
-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
time functions time() timefmt()
timefmt2 timestring() topics
topics2 translation transparent
transparent2 trim() trunc()
trust trust2 type()
types of objects types2 u()
! u2 u3 ucstr()
! udefault() ufun() ufun2
! ufun3 uldefault() ulocal()
! ulocal2 unfindable unfollow
! uninspected unregistered use
! user-defined commands user-defined2 utctime()
! utility functions v() v-function
! vadd() val() valid()
! vdim() vdot() verbose
! verbs version() visible()
For more, see Entries-24
-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
& Entries-24
-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
! visual vmag() vmax()
! vmin() vmul() vrml
! vsub() vunit() warnings
! warnings list warnings list2 where()
! whisper whisper2 who
! width() wildcards wipe()
! with wizard wordpos()
! words() wrap() xget()
! xor() z_tel zemit()
! zfun() zmo zmp
! zmr zone zone master objects
! zone master rooms zone masters zone objects
! zone() zones zones2
& &Entries
-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
--- 458,511 ----
substitutions4 success suspect
switch wildcards switch() switch2
switchall() switches t()
For more, see Entries-23
-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
& Entries-23
-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
+ table() tag() tagwrap()
+ take tan() teach
+ tel() tel_ok temple
+ terse textfile() think
time functions time() timefmt()
timefmt2 timestring() topics
topics2 translation transparent
transparent2 trim() trunc()
trust trust2 type()
types of objects types2 u()
! u2 ucstr() udefault()
! ufun() ufun2 uldefault()
! ulocal() ulocal2 unfindable
! unfollow uninspected unregistered
! use user-defined commands user-defined2
! utctime() utility functions v()
For more, see Entries-24
-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
& Entries-24
-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
! v-function vadd() val()
! valid() vdim() vdot()
! verbose verbs version()
! visible() visual vmag()
! vmax() vmin() vmul()
! vrml vsub() vunit()
! warnings warnings list warnings list2
! where() whisper whisper2
! who width() wildcards
! wipe() with wizard
! wordpos() words() wrap()
! xget() xor() z_tel
! zemit() zfun() zmo
! zmp zmr zone
! zone master objects zone master rooms zone masters
! zone objects zone() zones
!
! For more, see Entries-25
! -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
! & Entries-25
! -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
! zones2
& &Entries
-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
*** 1_7_7.110/game/restart Tue, 17 Dec 2002 00:16:47 -0600 dunemush (pennmush/39_restart 1.1.1.1.1.1.1.2.1.1.1.1.1.2.1.2.2.1 700)
--- 1_7_7.146(w)/game/restart Wed, 01 Jan 2003 18:08:01 -0600 dunemush (pennmush/39_restart 1.1.1.1.1.1.1.2.1.1.1.1.1.2.1.2.2.2 700)
***************
*** 13,19 ****
# The config file
! CONF_FILE=mush.cnf
# The error log file
LOG=log/netmush.log
--- 13,19 ----
# The config file
! CONF_FILE=flags.cnf
# The error log file
LOG=log/netmush.log
*** 1_7_7.110/game/mushcnf.dst Mon, 06 Jan 2003 15:38:28 -0600 dunemush (pennmush/41_mushcnf.ds 1.1.1.19.1.1.1.2.1.1.1.8.1.1.1.1.1.5 600)
--- 1_7_7.146(w)/game/mushcnf.dst Sat, 25 Jan 2003 13:42:15 -0600 dunemush (pennmush/41_mushcnf.ds 1.1.1.19.1.1.1.2.1.1.1.8.1.1.1.1.1.6 600)
***************
*** 597,602 ****
--- 597,607 ----
###
### Default flags for newly created stuff
+ ### To get multiple flags, you may repeat these directives:
+ ### player_flags flag1
+ ### player_flags flag2
+ ### As of 1.7.7p6, you may also stack them on one directive:
+ ### player_flags flag1 flag2
###
# -- Default flags for exits
*** 1_7_7.110/src/cmdlocal.dst Sun, 01 Dec 2002 21:14:41 -0600 dunemush (pennmush/b/21_cmdlocal.d 1.10 660)
--- 1_7_7.146(w)/src/cmdlocal.dst Sat, 25 Jan 2003 13:52:54 -0600 dunemush (pennmush/b/21_cmdlocal.d 1.11 660)
***************
*** 63,69 ****
local_commands()
{
#ifdef EXAMPLE
! command_add("@SILLY", CMD_T_ANY, 0, 0, 0, switchmask("NOISY NOEVAL"),
cmd_local_silly);
#endif
}
--- 63,69 ----
local_commands()
{
#ifdef EXAMPLE
! command_add("@SILLY", CMD_T_ANY, 0, 0, switchmask("NOISY NOEVAL"),
cmd_local_silly);
#endif
}
*** 1_7_7.110/src/SWITCHES Wed, 30 Oct 2002 14:27:00 -0600 dunemush (pennmush/b/22_SWITCHES 1.12.1.3 600)
--- 1_7_7.146(w)/src/SWITCHES Tue, 14 Jan 2003 22:56:21 -0600 dunemush (pennmush/b/22_SWITCHES 1.12.1.3.1.2 600)
***************
*** 1,6 ****
--- 1,7 ----
ACCESS
ADD
AFTER
+ ALIAS
ALL
ANY
ATTRIBS
***************
*** 79,85 ****
PARANOID
PLAYERS
PORT
- POSE
PRESERVE
PRINT
PRIVS
--- 80,85 ----
***************
*** 96,102 ****
RETROACTIVE
ROOM
ROOMS
- ROYALTY
SEE
SEEFLAG
SELF
--- 96,101 ----
*** 1_7_7.110/src/wiz.c Mon, 06 Jan 2003 14:01:39 -0600 dunemush (pennmush/b/23_wiz.c 1.44.1.1.1.1.1.2.1.7.1.1.1.1.1.1.1.1.1.1.1.8.1.2.2.2.1.2.1.1.1.1.1.1.1.2.1.1.1.2 660)
--- 1_7_7.146(w)/src/wiz.c Sat, 25 Jan 2003 13:52:57 -0600 dunemush (pennmush/b/23_wiz.c 1.44.1.1.1.1.1.2.1.7.1.1.1.1.1.1.1.1.1.1.1.8.1.2.2.2.1.2.1.1.1.1.1.1.1.2.1.1.1.2.2.2 660)
***************
*** 273,279 ****
if (!eval_lock(victim, dest, Tport_Lock))
return 0;
! if (Toggles(dest) & ROOM_JUMP_OK)
return 1;
return 0;
--- 273,279 ----
if (!eval_lock(victim, dest, Tport_Lock))
return 0;
! if (JumpOk(dest))
return 1;
return 0;
***************
*** 720,726 ****
case 1:
/* boot by descriptor */
victim = find_player_by_desc(atoi(name));
! if (victim == NOTHING) {
d = port_desc(atoi(name));
if (!d) {
notify(player, "There is no one connected on that descriptor.");
--- 720,728 ----
case 1:
/* boot by descriptor */
victim = find_player_by_desc(atoi(name));
! if (victim == player)
! flag = 2;
! else if (victim == NOTHING) {
d = port_desc(atoi(name));
if (!d) {
notify(player, "There is no one connected on that descriptor.");
***************
*** 931,938 ****
return;
notify(player, object_header(player, thing));
! notify_format(player, T("Flags value: 0x%08x"), Flags(thing));
! notify_format(player, T("Toggles value: 0x%08x"), Toggles(thing));
notify_format(player, T("Powers value: 0x%08x"), Powers(thing));
notify_format(player, "Next: %d", Next(thing));
--- 933,940 ----
return;
notify(player, object_header(player, thing));
! notify_format(player, T("Flags value: %s"),
! bits_to_string(Flags(thing), GOD, NOTHING));
notify_format(player, T("Powers value: 0x%08x"), Powers(thing));
notify_format(player, "Next: %d", Next(thing));
***************
*** 970,976 ****
void
do_power(dbref player, const char *name, const char *power)
{
! object_flag_type pwr;
const char *s;
dbref thing;
--- 972,978 ----
void
do_power(dbref player, const char *name, const char *power)
{
! int pwr;
const char *s;
dbref thing;
***************
*** 1248,1254 ****
enum search_class sclass = S_OWNER;
int n;
int restrict_type = NOTYPE;
! object_flag_type restrict_flags = 0;
dbref restrict_obj = NOTHING, restrict_owner = ANY_OWNER;
int is_wiz;
dbref low = 0, high = db_top - 1;
--- 1250,1256 ----
enum search_class sclass = S_OWNER;
int n;
int restrict_type = NOTYPE;
! int restrict_powers = 0;
dbref restrict_obj = NOTHING, restrict_owner = ANY_OWNER;
int is_wiz;
dbref low = 0, high = db_top - 1;
***************
*** 1358,1365 ****
restrict_type = TYPE_PLAYER;
} else if (string_prefix("powers", class)) {
sclass = S_POWER;
! restrict_flags = find_power(restriction);
! if (restrict_flags == -1) {
notify(player, T("No such power to search for."));
return -1;
}
--- 1360,1367 ----
restrict_type = TYPE_PLAYER;
} else if (string_prefix("powers", class)) {
sclass = S_POWER;
! restrict_powers = find_power(restriction);
! if (restrict_powers == -1) {
notify(player, T("No such power to search for."));
return -1;
}
***************
*** 1511,1517 ****
case S_POWER: /* @search power=see_all */
for (n = low; n <= high; n++) {
if ((restrict_owner == ANY_OWNER || Owner(n) == restrict_owner)
! && (Powers(n) & restrict_flags) == restrict_flags) {
if (nresults >= result_size) {
dbref *newresults;
result_size *= 2;
--- 1513,1519 ----
case S_POWER: /* @search power=see_all */
for (n = low; n <= high; n++) {
if ((restrict_owner == ANY_OWNER || Owner(n) == restrict_owner)
! && (Powers(n) & restrict_powers) == restrict_powers) {
if (nresults >= result_size) {
dbref *newresults;
result_size *= 2;
*** 1_7_7.110/src/timer.c Tue, 17 Dec 2002 00:18:29 -0600 dunemush (pennmush/b/29_timer.c 1.29.1.7.1.2 660)
--- 1_7_7.146(w)/src/timer.c Sat, 25 Jan 2003 13:52:57 -0600 dunemush (pennmush/b/29_timer.c 1.29.1.7.1.3 660)
***************
*** 146,152 ****
strcpy(ccom, "dump");
fork_and_dump(1);
#ifdef VACATION_FLAG
! flag_broadcast(0, PLAYER_VACATION, "%s",
T
("Your ON-VACATION flag is set! If you're back, clear it."));
#endif
--- 146,152 ----
strcpy(ccom, "dump");
fork_and_dump(1);
#ifdef VACATION_FLAG
! flag_broadcast(0, "ON-VACATION", "%s",
T
("Your ON-VACATION flag is set! If you're back, clear it."));
#endif
*** 1_7_7.110/src/help.c Sun, 01 Dec 2002 21:14:41 -0600 dunemush (pennmush/f/32_help.c 1.4.1.2.1.1.1.3.2.2.1.1.2.1.1.2.1.2.1.2.1.3.1.7 660)
--- 1_7_7.146(w)/src/help.c Sat, 25 Jan 2003 13:52:55 -0600 dunemush (pennmush/f/32_help.c 1.4.1.2.1.1.1.3.2.2.1.1.2.1.1.2.1.2.1.2.1.3.1.8 660)
***************
*** 108,114 ****
mush_free(h, "help_file.entry");
return;
}
! (void) command_add(h->command, CMD_T_ANY | CMD_T_NOPARSE, 0, 0, 0, NULL,
cmd_helpcmd);
hashadd(h->command, h, &help_files);
}
--- 108,114 ----
mush_free(h, "help_file.entry");
return;
}
! (void) command_add(h->command, CMD_T_ANY | CMD_T_NOPARSE, 0, 0, NULL,
cmd_helpcmd);
hashadd(h->command, h, &help_files);
}
*** 1_7_7.110/src/switchinc.c Tue, 07 Jan 2003 11:10:04 -0600 dunemush (pennmush/b/32_switchinc. 1.3.1.2.1.6.1.18.1.2.1.2.2.5.1.4.2.4.1.1.1.2.1.5.1.2.1.5.2.1.1.31.3.4.1.6 660)
--- 1_7_7.146(w)/src/switchinc.c Sat, 25 Jan 2003 13:52:56 -0600 dunemush (pennmush/b/32_switchinc. 1.3.1.2.1.6.1.18.1.2.1.2.2.5.1.4.2.4.1.1.1.2.1.5.1.2.1.5.2.1.1.31.3.4.1.2.1.4.1.2 660)
***************
*** 3,8 ****
--- 3,9 ----
{"ACCESS", SWITCH_ACCESS},
{"ADD", SWITCH_ADD},
{"AFTER", SWITCH_AFTER},
+ {"ALIAS", SWITCH_ALIAS},
{"ALL", SWITCH_ALL},
{"ANY", SWITCH_ANY},
{"ATTRIBS", SWITCH_ATTRIBS},
*** 1_7_7.110/src/speech.c Sun, 22 Dec 2002 01:40:58 -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)
--- 1_7_7.146(w)/src/speech.c Sat, 25 Jan 2003 13:52:56 -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.2.2 660)
***************
*** 534,605 ****
}
void
! do_wall(dbref player, const char *message, int privs, int key)
{
/* privs is 0 for wizard wizwall, 1 for royalty-wizard wizwall,
* 2 is for general wall
*/
! const char *gap, *prefix;
! int mask;
/* Only @wall is available to those with the announce power.
* Only @rwall is available to royalty.
*/
if (!(Wizard(player) ||
! ((privs == 2) && Can_Announce(player)) ||
! ((privs == 1) && Royalty(player)))) {
notify(player, T("Posing as a wizard could be hazardous to your health."));
return;
}
/* put together the message and figure out what type it is */
! gap = " ";
! switch (*message) {
! case SAY_TOKEN:
! key = 1;
! if (CHAT_STRIP_QUOTE)
message++;
! break;
! case SEMI_POSE_TOKEN:
! gap = "";
! case POSE_TOKEN:
! key = 2;
! message++;
! break;
}
if (!*message) {
notify(player, T("What did you want to say?"));
return;
}
! if (privs == 0) {
/* to wizards only */
! mask = WIZARD;
prefix = WIZWALL_PREFIX;
! } else if (privs == 1) {
/* to wizards and royalty */
! mask = WIZARD | ROYALTY;
prefix = RWALL_PREFIX;
} else {
/* to everyone */
! mask = 0;
prefix = WALL_PREFIX;
}
/* broadcast the message */
! if (key == 2)
flag_broadcast(mask, 0, "%s %s%s%s", prefix, Name(player), gap, message);
! else if (key == 3)
flag_broadcast(mask, 0, "%s [%s]: %s", prefix, Name(player), message);
else
flag_broadcast(mask, 0,
"%s %s %s, \"%s\"", prefix, Name(player),
! (privs != 2) ? "says" : "shouts", message);
/* log it if necessary */
! if ((privs == 2) || (options.log_walls && (privs == 0)))
! do_log(LT_WIZ, player, NOTHING, "(MSG/%s) %s%s%s",
! privs ? "all" : "wiz",
! (key == 2) ? Name(player) : "", (key == 2) ? gap : "", message);
}
void
--- 534,624 ----
}
void
! do_wall(dbref player, const char *message, enum wall_type target, int emit)
{
/* privs is 0 for wizard wizwall, 1 for royalty-wizard wizwall,
* 2 is for general wall
*/
! const char *gap = "", *prefix;
! const char *mask;
! int pose = 0;
/* Only @wall is available to those with the announce power.
* Only @rwall is available to royalty.
*/
if (!(Wizard(player) ||
! ((target == WALL_ALL) && Can_Announce(player)) ||
! ((target == WALL_RW) && Royalty(player)))) {
notify(player, T("Posing as a wizard could be hazardous to your health."));
return;
}
/* put together the message and figure out what type it is */
! if (!emit) {
! gap = " ";
! switch (*message) {
! case SAY_TOKEN:
! if (CHAT_STRIP_QUOTE)
! message++;
! break;
! case SEMI_POSE_TOKEN:
! gap = "";
! case POSE_TOKEN:
! pose = 1;
message++;
! break;
! }
}
if (!*message) {
notify(player, T("What did you want to say?"));
return;
}
! if (target == WALL_WIZ) {
/* to wizards only */
! mask = "WIZARD";
prefix = WIZWALL_PREFIX;
! } else if (target == WALL_RW) {
/* to wizards and royalty */
! mask = "WIZARD ROYALTY";
prefix = RWALL_PREFIX;
} else {
/* to everyone */
! mask = NULL;
prefix = WALL_PREFIX;
}
/* broadcast the message */
! if (pose)
flag_broadcast(mask, 0, "%s %s%s%s", prefix, Name(player), gap, message);
! else if (emit)
flag_broadcast(mask, 0, "%s [%s]: %s", prefix, Name(player), message);
else
flag_broadcast(mask, 0,
"%s %s %s, \"%s\"", prefix, Name(player),
! target == WALL_ALL ? "shouts" : "says", message);
/* log it if necessary */
! if (target == WALL_ALL || options.log_walls) {
! const char *type = "";
! switch (target) {
! case WALL_ALL:
! type = "all";
! break;
! case WALL_RW:
! type = "roywiz";
! break;
! case WALL_WIZ:
! type = "wiz";
! }
! if (pose)
! do_log(LT_WIZ, player, NOTHING, "(MSG/%s) %s%s%s", type,
! Name(player), gap, message);
! else if (emit)
! do_log(LT_WIZ, player, NOTHING, "(MSG/%s) %s", type, message);
! else
! do_log(LT_WIZ, player, NOTHING, "(MSG/%s) %s %s, \"%s\"", type,
! Name(player), target == WALL_ALL ? "shouts" : "says", message);
! }
}
void
*** 1_7_7.110/src/set.c Thu, 02 Jan 2003 23:55:40 -0600 dunemush (pennmush/b/38_set.c 1.26.1.5.1.1.2.1.1.1.1.1.1.11.1.2 660)
--- 1_7_7.146(w)/src/set.c Sat, 25 Jan 2003 13:52:56 -0600 dunemush (pennmush/b/38_set.c 1.26.1.5.1.1.2.1.1.1.1.1.1.11.1.1.1.3 660)
***************
*** 129,135 ****
do_log(LT_CONN, 0, 0, T("Name change by %s(#%d) to %s"),
Name(thing), thing, newname);
if (Suspect(thing))
! flag_broadcast(WIZARD, 0,
T("Broadcast: Suspect %s changed name to %s."),
Name(thing), newname);
delete_player(thing, NULL);
--- 129,135 ----
do_log(LT_CONN, 0, 0, T("Name change by %s(#%d) to %s"),
Name(thing), thing, newname);
if (Suspect(thing))
! flag_broadcast("WIZARD", 0,
T("Broadcast: Suspect %s changed name to %s."),
Name(thing), newname);
delete_player(thing, NULL);
***************
*** 293,304 ****
Owner(thing) = Owner(newowner);
}
Zone(thing) = Zone(newowner);
! Flags(thing) &= ~CHOWN_OK;
if (!preserve || !Wizard(player)) {
! Flags(thing) &= ~WIZARD;
! Flags(thing) &= ~ROYALTY;
! Flags(thing) &= ~INHERIT;
! Flags(thing) |= HALT;
Powers(thing) = 0; /* wipe out all powers */
do_halt(thing, "", thing);
} else {
--- 293,304 ----
Owner(thing) = Owner(newowner);
}
Zone(thing) = Zone(newowner);
! clear_flag_internal(thing, "CHOWN_OK");
if (!preserve || !Wizard(player)) {
! clear_flag_internal(thing, "WIZARD");
! clear_flag_internal(thing, "ROYALTY");
! clear_flag_internal(thing, "TRUST");
! set_flag_internal(thing, "HALT");
Powers(thing) = 0; /* wipe out all powers */
do_halt(thing, "", thing);
} else {
***************
*** 306,312 ****
notify(player,
T
("Warning: WIZ flag reset because @CHOWN/PRESERVE is to a third party."));
! Flags(thing) &= ~WIZARD;
}
if (Powers(thing) || Wizard(thing) || Royalty(thing) || Inherit(thing))
notify(player,
--- 306,312 ----
notify(player,
T
("Warning: WIZ flag reset because @CHOWN/PRESERVE is to a third party."));
! clear_flag_internal(thing, "WIZARD");
}
if (Powers(thing) || Wizard(thing) || Royalty(thing) || Inherit(thing))
notify(player,
***************
*** 422,439 ****
* inconvenient -- although this may pose a bit of a security
* risk. Be careful when @chzone'ing wizard or royal players.
*/
! Flags(thing) &= ~WIZARD;
! Flags(thing) &= ~ROYALTY;
! Flags(thing) &= ~INHERIT;
Powers(thing) = 0; /* wipe out all powers */
} else {
! if (zone != NOTHING) {
if (Hasprivs(thing))
! if (noisy)
! notify(player, T("Warning: @chzoning a privileged player."));
! if (Flags(thing) & INHERIT)
! if (noisy)
! notify(player, T("Warning: @chzoning an TRUST player."));
}
}
if (noisy)
--- 422,437 ----
* inconvenient -- although this may pose a bit of a security
* risk. Be careful when @chzone'ing wizard or royal players.
*/
! clear_flag_internal(thing, "WIZARD");
! clear_flag_internal(thing, "ROYALTY");
! clear_flag_internal(thing, "TRUST");
Powers(thing) = 0; /* wipe out all powers */
} else {
! if (noisy && (zone != NOTHING)) {
if (Hasprivs(thing))
! notify(player, T("Warning: @chzoning a privileged player."));
! if (Inherit(thing))
! notify(player, T("Warning: @chzoning an TRUST player."));
}
}
if (noisy)
***************
*** 807,813 ****
notify(player, T("Nothing to do."));
return;
}
! (void) atr_iter_get(player, thing, q, gedit_helper, argv);
}
--- 805,812 ----
notify(player, T("Nothing to do."));
return;
}
! if (!atr_iter_get(player, thing, q, gedit_helper, argv))
! notify(player, T("No matching attributes."));
}
***************
*** 985,993 ****
notify(player, T("That object is protected."));
return;
}
! (void) atr_iter_get(player, thing, pattern, wipe_helper, NULL);
!
! notify(player, T("Attributes wiped."));
}
COMMAND (cmd_with) {
--- 984,993 ----
notify(player, T("That object is protected."));
return;
}
! if (!atr_iter_get(player, thing, pattern, wipe_helper, NULL))
! notify(player, T("No matching attributes."));
! else
! notify(player, T("Attributes wiped."));
}
COMMAND (cmd_with) {
*** 1_7_7.110/src/rob.c Thu, 26 Dec 2002 14:20:42 -0600 dunemush (pennmush/b/42_rob.c 1.18.1.2.1.3.1.3.1.7 660)
--- 1_7_7.146(w)/src/rob.c Sat, 25 Jan 2003 13:52:56 -0600 dunemush (pennmush/b/42_rob.c 1.18.1.2.1.3.1.3.1.8 660)
***************
*** 47,53 ****
break;
default:
if (Suspect(player))
! flag_broadcast(WIZARD, 0,
T("Broadcast: Suspect %s tried to kill %s(#%d)."),
Name(player), Name(victim), victim);
if (!Mobile(victim)) {
--- 47,53 ----
break;
default:
if (Suspect(player))
! flag_broadcast("WIZARD", 0,
T("Broadcast: Suspect %s tried to kill %s(#%d)."),
Name(player), Name(victim), victim);
if (!Mobile(victim)) {
*** 1_7_7.110/src/predicat.c Sat, 30 Nov 2002 15:49:22 -0600 dunemush (pennmush/b/44_predicat.c 1.1.1.34.1.1.1.3.1.4.2.9 660)
--- 1_7_7.146(w)/src/predicat.c Sat, 25 Jan 2003 13:52:56 -0600 dunemush (pennmush/b/44_predicat.c 1.1.1.34.1.1.1.3.1.4.2.12 660)
***************
*** 623,629 ****
for (scan = (unsigned char *) name; scan && *scan; scan++) {
if (isalnum((unsigned char) *scan))
continue;
! if (!strchr(good, *scan))
return 0;
}
--- 623,629 ----
for (scan = (unsigned char *) name; scan && *scan; scan++) {
if (isalnum((unsigned char) *scan))
continue;
! if (!strchr((char *) good, *scan))
return 0;
}
***************
*** 1049,1066 ****
return found;
}
void
! do_grep(player, obj, lookfor, flag, insensitive)
! dbref player;
! char *obj;
! char *lookfor;
! int flag;
! int insensitive;
!
!
! /* this is an UNPARSED arg */
! /* 0 for just list, 1 for hilites */
! /* 0 for case-sensitive, 1 if not */
{
struct gh_args gh;
dbref thing;
--- 1049,1059 ----
return found;
}
+ /* lookfor is an unparsed arg. flag is 0 for list and 1 for hilite.
+ * insensitive is 0 for case-sensitive, 1 for case-insensitive
+ */
void
! do_grep(dbref player, char *obj, char *lookfor, int flag, int insensitive)
{
struct gh_args gh;
dbref thing;
***************
*** 1092,1098 ****
gh.lookfor = lookfor;
gh.len = len;
gh.insensitive = insensitive;
! (void) atr_iter_get(player, thing, pattern, grep_helper, &gh);
} else {
tp = grep_util(player, thing, pattern, lookfor, len, insensitive);
notify_format(player, T("Matches of '%s' on %s(#%d): %s"), lookfor,
--- 1085,1092 ----
gh.lookfor = lookfor;
gh.len = len;
gh.insensitive = insensitive;
! if (!atr_iter_get(player, thing, pattern, grep_helper, &gh))
! notify(player, T("No matching attributes."));
} else {
tp = grep_util(player, thing, pattern, lookfor, len, insensitive);
notify_format(player, T("Matches of '%s' on %s(#%d): %s"), lookfor,
*** 1_7_7.110/src/player.c Thu, 26 Dec 2002 14:24:59 -0600 dunemush (pennmush/b/47_player.c 1.15.1.1.1.1.1.4.1.6.1.2 660)
--- 1_7_7.146(w)/src/player.c Sat, 25 Jan 2003 13:52:56 -0600 dunemush (pennmush/b/47_player.c 1.15.1.1.1.1.1.4.1.6.1.5 660)
***************
*** 171,177 ****
do_log(LT_CONN, 0, 0,
T("Connection from Suspect site. Setting %s(#%d) suspect."),
Name(player), player);
! Toggles(player) |= PLAYER_SUSPECT;
}
return player;
}
--- 171,177 ----
do_log(LT_CONN, 0, 0,
T("Connection from Suspect site. Setting %s(#%d) suspect."),
Name(player), player);
! set_flag_internal(player, "SUSPECT");
}
return player;
}
***************
*** 353,358 ****
--- 353,359 ----
#ifdef QUOTA
char temp[SBUF_LEN];
#endif
+ object_flag_type flags;
/* else he doesn't already exist, create him */
s = ctime(&mudtime);
***************
*** 367,377 ****
Home(player) = PLAYER_START;
Owner(player) = player;
Parent(player) = NOTHING;
! Flags(player) = TYPE_PLAYER;
! Flags(player) |= options.player_flags;
! Toggles(player) |= options.player_toggles;
if (Suspect_Site(host, player) || Suspect_Site(ip, player))
! Toggles(player) |= PLAYER_SUSPECT;
set_initial_warnings(player);
/* Modtime tracks login failures */
ModTime(player) = (time_t) 0;
--- 368,379 ----
Home(player) = PLAYER_START;
Owner(player) = player;
Parent(player) = NOTHING;
! db[player].type = TYPE_PLAYER;
! flags = string_to_bits(options.player_flags);
! copy_flag_bitmask(Flags(player), flags);
! destroy_flag_bitmask(flags);
if (Suspect_Site(host, player) || Suspect_Site(ip, player))
! set_flag_internal(player, "SUSPECT");
set_initial_warnings(player);
/* Modtime tracks login failures */
ModTime(player) = (time_t) 0;
*** 1_7_7.110/src/move.c Mon, 30 Dec 2002 23:35:07 -0600 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.9 660)
--- 1_7_7.146(w)/src/move.c Sat, 25 Jan 2003 13:52:56 -0600 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.10 660)
***************
*** 682,688 ****
}
/* the object must pass the lock. Also, the thing being entered */
/* has to be controlled, or must be enter_ok */
! if (!(((Flags(thing) & ENTER_OK) || controls(player, thing)) &&
(eval_lock(player, thing, Enter_Lock))
)) {
did_it(player, thing, "EFAIL", T("Permission denied."), "OEFAIL",
--- 682,688 ----
}
/* the object must pass the lock. Also, the thing being entered */
/* has to be controlled, or must be enter_ok */
! if (!((EnterOk(thing) || controls(player, thing)) &&
(eval_lock(player, thing, Enter_Lock))
)) {
did_it(player, thing, "EFAIL", T("Permission denied."), "OEFAIL",
*** 1_7_7.110/src/match.c Tue, 07 Jan 2003 11:10:04 -0600 dunemush (pennmush/c/2_match.c 1.24.1.1.1.4.1.1.1.1.1.1.1.1.1.1.1.2 660)
--- 1_7_7.146(w)/src/match.c Sat, 25 Jan 2003 13:52:56 -0600 dunemush (pennmush/c/2_match.c 1.24.1.1.1.4.1.1.1.1.1.1.1.1.1.1.1.14 660)
***************
*** 2,14 ****
/* Routines for parsing arguments */
/***********************************************************************
! * These are the PennMUSH name-matching routines, rewritten by
! * Javelin to be fully re-entrant instead of using global variables,
! * which fixes some bugs. [pl12]
! *
! * Calling these routines no longer requires using init_match,
! * a bunch of match_<foo> calls, and then getting match_result().
! * Instead, call one of these functions:
* match_result(who,name,type,flags) - return match, AMBIGUOUS, or NOTHING
* noisy_match_result(who,name,type,flags) - return match or NOTHING,
* and notify player on failures
--- 2,8 ----
/* Routines for parsing arguments */
/***********************************************************************
! * These are the PennMUSH name-matching routines, fully re-entrant.
* match_result(who,name,type,flags) - return match, AMBIGUOUS, or NOTHING
* noisy_match_result(who,name,type,flags) - return match or NOTHING,
* and notify player on failures
***************
*** 62,108 ****
static dbref match_result_internal
(dbref who, const char *name, int type, long flags);
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);
- static dbref match_neighbor(const dbref who, const char *name,
- const int type, const long int flags,
- dbref *last_match, int *match_count);
- static dbref match_possession(const dbref who, const char *name,
- const int type, const long int flags,
- dbref *last_match, int *match_count);
- static dbref match_exit(const dbref who, const char *name,
- const int type, const long int flags, int *match_count);
- static dbref match_exit_internal(const dbref match_who,
- const char *match_name, const int type,
- const long int flags, const dbref loc,
- int *match_count);
- static dbref match_remote_contents(const dbref who, const char *name,
- const int type, const long int flags,
- dbref *last_match, int *match_count);
- static dbref match_container(const dbref who, const char *name,
- const int type, const long int flags,
- dbref *last_match, int *match_count);
- static dbref match_english(const dbref who, const char *name,
- const long int flags);
static dbref choose_thing(const dbref match_who, const int preferred_type,
! long int flags, dbref thing1, dbref thing2,
! int *match_count);
extern int check_alias(const char *command, const char *list); /* game.c */
/* A wrapper for returning a match, AMBIGUOUS, or NOTHING
*/
dbref
! match_result(who, name, type, flags)
! const dbref who;
! const char *name;
! const int type;
! const long int flags;
{
return match_result_internal(who, name, type, flags);
}
--- 56,77 ----
static dbref match_result_internal
(dbref who, const char *name, int type, long flags);
+ static dbref simple_matches(dbref who, const char *name, long flags);
+ static int parse_english(const char **name, long *flags);
static dbref match_me(const dbref who, const char *name);
static dbref match_here(const dbref who, const char *name);
! #define match_absolute(name) parse_dbref(name)
static dbref match_player(const dbref matcher, const char *match_name);
static dbref choose_thing(const dbref match_who, const int preferred_type,
! long int flags, dbref thing1, dbref thing2);
extern int check_alias(const char *command, const char *list); /* game.c */
/* A wrapper for returning a match, AMBIGUOUS, or NOTHING
*/
dbref
! match_result(const dbref who, const char *name, const int type,
! const long flags)
{
return match_result_internal(who, name, type, flags);
}
***************
*** 112,122 ****
* It will also notify the player of non-matches or ambiguous matches
*/
dbref
! noisy_match_result(who, name, type, flags)
! const dbref who;
! const char *name;
! const int type;
! const long int flags;
{
return match_result_internal(who, name, type, flags | MAT_NOISY);
}
--- 81,88 ----
* It will also notify the player of non-matches or ambiguous matches
*/
dbref
! noisy_match_result(const dbref who, const char *name, const int type,
! const long flags)
{
return match_result_internal(who, name, type, flag