[PENNMUSH-ANNOUNCE] 1.7.4p12-1.7.5p0.patch
dunemush@pennmush.org
dunemush at pennmush.org
Wed, 14 Nov 2001 14:31:27 -0600
This patch upgrades a PennMUSH 1.7.4p12 to PennMUSH 1.7.5p0.
After applying this patch, you will have version 1.7.5p0.
****** IMPORTANT NOTE ********
**
** PennMUSH 1.7.5 makes an irreversible change to the database format
** in order to support the new lock system. You should back up your
** databases before moving to 1.7.5, and be aware that once you've started
** running 1.7.5, it will be difficult to convert back to 1.7.4.
**
******************************
To apply this patch, save it to a file in your top-level MUSH directory,
and do the following:
patch -p1 < 1.7.4p12-1.7.5p0.patch
./Configure -d
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. Use a full shutdown and run the
restart script. Remember to back up databases!
Bug reports should be sent to pennmush-bugs@pennmush.org.
- Alan/Javelin
In this patch:
Major Changes:
* This is now the development minor version. This first release includes
relatively few changes, to make converting to it easier.
* Internal changes to the lock system. This requires a new minimal.db,
which is now distributed. [SW]
* Locale-based string collation throughout.
* Only ANSI C compilers are still supported; no more K&R. Files are
gradually going to be converted to ANSI C only.
* There is now an option to make ZMOs and ZMRs not count for
control of objects, only ZMPs. [SW]
Flags:
* The ZONE player flag has been renamed SHARED, to help seperate the
ZMP control-only meaning from the command-matching of ZMOs and ZMRs. [SW]
Commands:
* /preserve switch for @link prevents @chowning. Suggested by Vexon@M*U*S*H
* Admin WHO and SESSION now includes unconnected descriptors. [SW]
* Unconnected descriptors can now be booted. Patch by Bellemore@M*U*S*H.
* Unconnected descriptors can now be paged by admin with page/port. [SW]
Functions:
* mix() can take more than 10 lists and of unequal length. [3,SW]
* iname() returns the name of an object from inside (honoring nameformat)
Idea by Jeff Heinin.
* lplayers() returns a list of players in the location. Handy for
room parents. By Vexon@M*U*S*H.
* lvplayers(), lvcon(), lvexits() are like lplayers/lcon/lexits, but
leave out dark things (and disconnected players). Handy for room
parents. By Vexon@M*U*S*H.
Minor Changes:
* munge() now passes its delimiter as %1 to make generic sorting easier. [SW]
* Word-based attribute compression is faster than before, for both
compression and decompression. [SW]
* Windows memory-usage information for wizards is now in @uptime, not
@stats [SW]
* Word-based attribute compression stats can be viewed on non-Windows
mushes as well, by defining COMP_STATS. See externs.h for details. [SW]
* Setting of the internal QUEUE and semaphore attributes does not modify
an object's last-modified timestamp. [SW]
* Speaking on a channel that you're gagging is now treated like
speaking on a channel that you're not on. Suggested by rodregis@M*U*S*H
* You can use @exitto in place of &DESTINATION to set the destinatino
for variable exits, though DESTINATION is checked first. [3]
* WATCHER is another name for the MONITOR flag. [3]
* max_guest_pennies and guest_paycheck config options. Inspired by [SW]
* Lock and unlock messages now show object name and dbref, and tell
you if you unlock an already unlocked object. Suggested by Jamie Warren.
* A version of portmsg for Win32 is in the win32 directory.
Donated by CU5@WCX
* Tweaks to info_slave, which now uses readv/writev. [SW]
* Lots of code cleanup. [SW]
* CHAT_SYSTEM, INFO_SLAVE, and FUNCTION_SIDE_EFFECTS are now #define'd
by default. [TAP]
Fixes:
* Indentation fixes [SW]
* Fixes up to 1.7.4p12 merged in.
Prereq: 1.7.4p12
*** 1_7_4.187/Patchlevel Tue, 13 Nov 2001 17:29:19 -0600 dunemush (pennmush/5_Patchlevel 1.30 600)
--- 1_7_5.36(w)/Patchlevel Tue, 06 Feb 2001 15:06:50 -0600 dunemush (pennmush/5_Patchlevel 1.17.1.1 600)
***************
*** 1,2 ****
Do not edit this file. It is maintained by the official PennMUSH patches.
! This is PennMUSH 1.7.4p12
--- 1,2 ----
Do not edit this file. It is maintained by the official PennMUSH patches.
! This is PennMUSH 1.7.5p0
*** 1_7_4.187/CHANGES Tue, 13 Nov 2001 17:29:19 -0600 dunemush (pennmush/8_CHANGES 1.219.1.56 600)
--- 1_7_5.36(w)/CHANGES Wed, 14 Nov 2001 13:04:40 -0600 dunemush (pennmush/g/7_CHANGES 1.7 600)
***************
*** 7,13 ****
[TN] is Thorvald Natvig, a PennMUSH developer (aka Trivian)
[TAP] is T. Alexander Popiel, a PennMUSH developer (aka Talek)
[SW] is Shawn Wagner, a PennMUSH developer (aka Raevnos)
! [LdW] is Luuk de Waard, a former PennMUSH developer (aka Halatir)
[RLM] is Ralph Melton, a former PennMUSH developer
[NJG] is Nick Gammon, the Win32 porter
[DW] is Dan Williams, the MacOS porter
--- 7,13 ----
[TN] is Thorvald Natvig, a PennMUSH developer (aka Trivian)
[TAP] is T. Alexander Popiel, a PennMUSH developer (aka Talek)
[SW] is Shawn Wagner, a PennMUSH developer (aka Raevnos)
! [LdW] is Luuk de Waard, a PennMUSH developer (aka Halatir)
[RLM] is Ralph Melton, a former PennMUSH developer
[NJG] is Nick Gammon, the Win32 porter
[DW] is Dan Williams, the MacOS porter
***************
*** 17,475 ****
==========================================================================
! Version 1.7.4 patchlevel 12 November 9, 2001
!
! Minor changes:
! * @dol/delim is now @dol/delimit, for Mux compatibility. [SW]
! * /preserve switch for @chownall works like @chown's /preserve switch.
! This changes the default behavior of @chownall, which used to
! preserve everything, to work like @chown and strip privileged bits.
! Suggested by Taladan@M*U*S*H.
! Fixes:
! * Warnings in index-files.pl are no longer shown. Report by Noltar@Korongil
! * Additional support for ansi in channel names. Ansi is now stripped
! when sorting channels and when matching names for @chan/decomp and
! @chan/what. Reported by Oriens@Alexandria.
! * Help @decompile clarifies the /flags switch. Suggested by Oriens@Alexandria
! * Source is indented before diffs are produced.
! * Typo in help zmr correct by Oriens@Alexandria.
! * Players disconnecting without QUIT continued to use CPU until fully
! disconnected. Fixed. Report by Protagonist@M*U*S*H. [SW]
!
!
! Version 1.7.4 patchlevel 11 October 15, 2001
!
! Minor Changes:
! * In places like switch() that can match <number, the numbers
! are now treated as floating point, so they need not be only integers.
! However, they must be pure numbers; "<3km" will not work.
! * Tests for channel name matches now disregard ansi. Suggested by Wayne@PDX.
! Fixes:
! * MacOS linting. [DW]
! * next() could reveal unfindable players. Reported by Jeffrey@TheHotel. [TAP]
! * making diffs or a dist now insures that switches.h, etc. are rebuilt
! for the Mac/Win32 crowd. Reported by many people.
! * Some warnings discovered with compiling with gcc 3.0.1 fixed. [SW]
! * Potential crash-or-worse bugs that could be caused by malformed
! save messages fixed. [SW]
! * @mail to players with names starting with numbers works correctly now.
! Report from Mike Wesson. [SW]
! * Fewer logged warnings from failed convtime()s. [SW]
! * Help for page now mentions /blind. Reported by Oriens@Alexandria.
! * Attempting to set an invalid priv on a channel now produces a
! better message. Reported by Oriens@Alexandria.
! * Improved message when a Wizard overrides a chan join lock by Wayne@PDX.
! * Another way to end up inside yourself fixed. Report by Ashen-Shugar. [TAP]
! * Help default/edefault syntax clarified by Delina@ST:VAAE
! * Help math functions clarifies 'number'. Suggested by Delina@ST:VAAE
! * Information on the patches.h header added to the FAQ file. Suggested
! by Kahmy. [SW]
! * Potential crash in @set fixed. Report by Michael Loftis [SW]
! * The Unfindable flag is checked on all levels of containers, not just
! the immediate location. Suggested by Oriens. [SW]
! * NT_TCP fix by Bellemore.
! * secure() now escapes ^, as the help says it does. Report by Gabriel Matlin.
! * link_anywhere now lets you actually @link anywhere, instead of just
! letting variable exits link anywhere. Report by Viila@M*U*S*H.
! * help home now returns help homes, not help home(). Suggested by
! Gary Williams
!
! Version 1.7.4 patchlevel 10 September 7, 2001
!
! Fixes:
! * @clone changes in p9 introduced a crash bug. Fixed.
! * Typo in mushcnf.dst fixed by Noltar@Korongil.
!
! Version 1.7.4 patchlevel 9 September 4, 2001
!
! Minor changes:
! * @clone can optionally specify a new name for the clone.
! Patch by Bellemore@M*U*S*H, inspired by mux.
! * die() can take a third argument which, if true, will cause it to
! return the list of individual die rolls rather than the sum.
! * NT_TCP option moved to options.h.dist, and @config/list compile now
! reports whether it's on or not. Suggested by Glonk@GlonkMUSH
! * QUIET flag affects the "Teleported." message as well.
! Suggested by Glonk@GlonkMUSH.
! * pos() and strmatch() strip ansi and html markup before matching. [SW]
! * Slight optimizations for many of the functions that strip markup. [SW]
! * chat_strip_quote setting now applies to @*wall and say. Suggested by
! Glonk@GlonkMUSH. [SW]
! * @malias/who is now the same as @malias/members. Suggested by
! Oriens@Alexandria.
! * Small code change in do_chat_by_name so that find_channel_partial_on
! can behave as documented. Suggested by Michael Loftis
! Fixes:
! * p8 broke regeditall when the replacer was null. Fixed.
! Reported by Nymeria@M*U*S*H.
! * Some unused variables removed, and pcre.h included in parse.c.
! Reported by Sidney@M*U*S*H.
! * index-files.pl produced an uninitialized value warning if a help file
! had only a single entry (or admin entry). Warning removed.
! Reported by Nymeria@M*U*S*H.
! * Fixed to help lstats() to mention stats() as alias. Reported by
! Glonk@GlonkMUSH.
! * Help edit() fix by Sash@SW:Uprising.
! * Improved failure message for @password. Suggested by Mike Wesson. [SW]
! * alphamin()/alphamax() were stripping markup from what they returned. [SW]
! * PARANOID flag is now only visible to owners. Reported by
! Bellemore@BelleMUSH.
! * Improved error message when trying to rejoin a channel. [SW]
! * In Win32 NT_TCP mode, ident lookups are now done and the LASTIP
! attribute doesn't get corrupted. Patch by Bellemore@BelleMUSH.
! * @chan/describe now works along with @chan/desc. Suggested by
! Trispis@M*U*S*H
! * 'teach'ing a motion to a follower didn't work right. Reported by
! Cheetah and Viila@M*U*S*H.
! * Security bug in follow fixed. Reported by Walker@M*U*S*H.
! * The ê and ë entities were not correctly returned in
! Pueblo mode. Fixed by [NG].
! * Help for trig functions improved. [SW]
! * Pueblo references no longer give Chaco's (defunct) website.
! By Noltar@Korongil.
!
! Version 1.7.4 patchlevel 8 July 22, 2001
!
! Minor changes:
! * restart is a bit more precise in the "Mush already active" message.
! Suggested by Lucas Layman.
! * When a player's creation is refused because creation/registration
! is globally turned off, show them register.txt instead of down.txt.
! Patch by Bellemore.
! * The NOSPOOF flag is now visible only to the player themself. [SW]
! * regedit can now use backreferences in the replacer. [SW]
! Fixes:
! * ident lookups were broken on win32. Reported by Bellemore. [SW]
! * ident query timeouts could get doubled mistakenly. [SW]
! * Typo in mushcnf.dst fixed by Noltar@Korongil.
! * Fix to help puppets2 by TurtleKnee@M*U*S*H.
! * Help pcreate() added. Report by Eratl@M*U*S*H.
! * @pcreate messages capitalized by Oriens@Alexandria.
! * create() used 10 as the default cost, instead of the configured
! default. Report by 8bitMUSH.
! * Inactivity timeouts longer than 1 day didn't work. Fixed and
! efficiency of the check improved. Reported by Bellemore@M*U*S*H.
! * Null @aliases are no longer allowed. [SW]
! * Cleanup to ident for situations when the remote host isn't running
! an ident server. [SW]
!
! Version 1.7.4 patchlevel 7 July 02, 2001
!
! Major changes:
! * %r can now evaluate to one character or two, based on a new config
! option, newline_one_char, which defaults to being yes. This allows
! %r to be used as a list delimiter. However, this may
! break softcode which expects strlen(%r) to be 2, but it's probably
! smarter to fix the softcode than turn off this option. [sw]
! * If a command and a standard attribute have the same name, the
! command takes precedence. So if you have an @attribute named
! "PEMIT", @pemit me=foo will do the command, not set the attribute. [SW]
! Minor changes:
! * When someone attempts to create too many attributes on an object,
! the log indicates who and which object. Suggested by Frob@Battlestar
! Galactica:TSC.
! * Buncha tprintfs replaced with notify_formats. [SW]
! * New local_connect() and local_disconnect() hooks in local.dst.
! Suggested by Eratl@M*U*S*H.
! * lookup_player now deals with player names prefixed with "*",
! so a bunch of commands like @newpassword will now treat those
! arguments. Suggested by Glonk@GlonkMUSH.
! * Make is more verbose about alerting you to changes in the
! src/*.dst files.
! * The message for undestroying someone else's object more closely matches
! the destroy message. Suggested by Noltar@Korongil.
! * Server output that used to be tagged with "PRE" for Pueblo is now
! tagged with "SAMP", because the original Pueblo client did not correctly
! handle "<BR>\n" in PRE, and the newer clients that are supporting
! the pueblo protocol, like MUSHclient, do handle it correctly, causing
! an incompatibility problem. Our workaround is to avoid PRE.
! Reported by [NJG].
! * The WHO list output is tagged <img xch_cmd=html> for Pueblo to get
! appropriate newline handling. [NJG]
! * help @mail mentions help @malias. Suggested by Trispis@M*U*S*H.
! * Matching code now treats players you can't see like disconnected players
! when matching *player. Reported by Walker@M*U*S*H.
! * @newpassword now confirms whose password was changed. Suggested by
! Xyrxwyrth@M*U*S*H.
! * @chan/who and cwho() now include objects on the channel. Suggested by
! Glonk@GlonkMUSH.
! * q-register lookup is slightly faster. [SW]
! * Floating-point numbers in exponential format (6.02e23) are always
! accepted, not just when tiny_math is set. [SW]
! * isint() and isnum() ignore the null_eq_zero option, since they already
! ignore tiny_math. [SW]
! * time() and convsecs() take an optional timezone argument that,
! if 'UTC', makes them act the same way as utctime() and convutcsecs().
! From MUX2. [SW]
! Fixes:
! * Additional range checking to avoid some bugs reported by Alierak. [SW]
! * Fix to buglet in @name error with PLAYER_NAME_SPACES reported by
! Luke@M*U*S*H.
! * Typo in @name error message fixed by Luke@M*U*S*H.
! * One could @pcreate players past the hard db limit. Reported by Z@Korongil.
! * Typos in config_h.SH and options.h.dist fixed by Oriens@Alexandria.
! * Under some conditions, you could double-join a channel.
! Reported by Xyrxwyrth@M*U*S*H, investigated by Steven@Champions.
! * Error message for @chan/desc improved. Reported by Oriens@Alexandria.
! * Typo in alias.cnf fixed by rodregis@M*U*S*H.
! * @mvattr sometimes failed to remove the old attrib, when it was a
! standard attrib that could be abbreviated (@mvattr a/desc=b).
! Fixed by Walker@M*U*S*H.
! * Some english-matching (like 'get 1st foo') would fail. Reported by
! Mystery8.
! * Typo in help @verb reported by Greck.
! * MacOS tweaks. [DW]
! * Better detection of numbers that are too big. [SW]
! * Wizards could crash the server by entering objects in their own
! inventory. Reported by Howie@New Frontiers.
!
! Version 1.7.4 patchlevel 6 June 11, 2001
!
! Minor changes:
! * English-style matching has been added to some more commands,
! to help with the stricter ambiguity checking (@teleport my 3rd foo=box,
! etc.). [SW]
! * @pemit/list no longer does its useless ## substitution. [SW]
! * capstr() and art() skip leading ansi and html. [SW]
! * table(), alphamin(), alphamax(), comp(), lcstr(), ucstr(), strinsert(),
! and delete() are all ansi and html aware. Mixing html and ansi in their
! arguments is probably a bad idea, though. [SW]
! * reverse() and scramble() are ansi-aware, and still will break html, but
! in a different way than before. [SW]
! * foreach() strips ansi and html from the string before doing its things. [SW]
! * Complete Norwegian translation by Kenneth Aalberg.
! Fixes:
! * Bug in growing hash tables fixed. [SW]
! * Typo in copyright fixed. Reported by Cheetah@M*U*S*H.
! * Unused variable removed from fun_ansi. Reported by Sidney@M*U*S*H.
! * Mac portability stuff. [DW]
! * Wizards could @chown garbage objects. [SW]
! * Wizards could give to garbage objects. [SW]
! * Wizards could read God's @mail. [SW]
! * Eliminated some compiler warnings. [SW]
! * mid() was quite broken with ansi. right() was less broken.
! Both hopefully fixed for good. [SW]
! * Fixed a problem with the attribute used with foreach() evaluating from
! the perspective of the wrong object. [SW]
! * before(), after(), and wrap() are now classified as string functions
! in the help. [TAP]
! * help wildcards now mentions ?. Suggested by cmintrnt@M*U*S*H.
! * help fixes by Jeff Ferrell.
! * Problems with wrap() when the text included %r%r (or started with %r)
! reported by Noltar@Korongil.
! * If you somehow managed to load a corrupt db with a parent loop,
! lparent could infinite-loop. Reported by Ashen-Shugar. [TAP]
!
!
! Version 1.7.4 patchlevel 5 May 25, 2001
!
! Fixes:
! * Fix to uninitialized variable that could cause ansi to bleed
! on some systems. Patch by Luke@M*U*S*H
! * Prototypes for ansi_align and ansi_save added to externs.h. [DW]
! * FreeBSD hints file updated to get rid of a compiler warning. [SW]
! * Setting hate_dest to no will not disable @recycle [SW]
! * switchinc.c updated. [DW]
!
!
! Version 1.7.4 patchlevel 4 May 13, 2001
!
! Minor changes:
! * Internally, the /folder switch is now /folders, which prefix-matches
! to /folder and also lets @mail/folders work as syntactic sugar.
! * fun_ansi has been rewritten to use less buffer space by consolidating
! ansi codes. New codes for turning off ansi attributes (like hilite)
! also added. Patch by Luke@M*U*S*H.
! * /silent switch to give suppresses default messages when giving
! money to players. Suggested by 8BitMUSH.
! * Old port concentrator code removed. [SW]
! * On linux, @uptime reads /proc files instead of running 'uptime' [SW]
! * Code that uses strdup and then adds a MEM_CHECK record for "string"
! now use a wrapper function that does it automatically. [SW]
! Fixes:
! * Paging a page-locked player didn't give the appropriate messages.
! Reported by Steven@Champions.
! * left, right, and mid are now ansi-aware. Patch by Luke@M*U*S*H.
! * Help fixes to lexits(), name() (Noltar@Korongil), 1.7.4p3 (Z@Korongil).
! * win32/cmds.h updated with prototypes for dismiss and desert by
! Noltar@Korongil. And hdrs/externs.h, too, by [SW].
! * Memory leak with using alphabetic q-registers in queued commands fixed.
! Report by Jayvin@Dynamix [SW]
! * Added hints/openbsd.sh to distribution.
! * Mac portability linting. [DW]
! * Several memory leaks in @malias code fixed. [SW]
!
! Version 1.7.4 patchlevel 3 April 23, 2001
!
! Commands:
! * unfollow with no args now stops you from following everyone.
! dismiss command stops people from following you.
! desert command stops people from following you or leading you.
! Idea by Oriens@Alexandria. Names suggested by Noltar@Korongil
! Minor changes:
! * MONITOR announcements of disconnects distinguish hidden disconnects.
! Suggested by Oriens@Alexandria.
! * The Uptime field of INFO shows first start time, not last reboot time.
! Suggested by Trispis@M*U*S*H.
! Fixes:
! * Exact matches are now preferred over partial matches, and no longer
! result in ambiguity. Report by Steven Viscido.
! * Message mentioning INHERIT changed to TRUST by Xyrxwyrth@M*U*S*H.
! * Distributed register.txt file is now more descriptive.
! Suggested by Xyrxwyrth@M*U*S*H.
! * The ctime(), mtime(), restarttime(), and starttime() functions now
! return 2-digit days (01 vs. 1). Reported by Z@Korongil.
! * @malias output uses the alias token more consistently. Suggested by
! Kyieren@M*U*S*H.
! * hints/solaris_2.sh modified a bit.
! * Mac portability fixes
! * Options.h clarification suggested by rodregis@M*U*S*H.
! * Cosmetic bug in @halt fixed. Report by Trispis@M*U*S*H.
! * Fixed a fencepost error in regedit*() that could generate garbage text.
! Reported by Vadiv@M*U*S*H
!
!
! Version 1.7.4 patchlevel 2 March 23, 2001
!
! Major changes:
! * The object matching routines have been modified. Some things you may
! notice:
! * Ambiguous cases are more often reported as such (rather than you
! getting one of the ambiguous matches arbitrarily).
! * locate() now returns #-2 as promised. Reported by Jeff Ferrell.
! * A few functions that used accept player names now require
! the use of *playername to match the player (e.g. mail(), hidden()).
! (This is generally more consistent).
! Minor changes:
! * @tr of a nonexistent attribute now reports that. Report by Z@Korongil.
! * TEL_OK is an alias for JUMP_OK. Suggested by Kyieren@M*U*S*H.
! * Added 'help i18n' (aka help translation). Suggested by Kyieren@M*U*S*H.
! * When you use 'teach' and, as a result, run the command you are teaching,
! it is treated as if the command were run by a player from the socket --
! that is, attribute sets are not evaluated. Suggested by Xyrxwyrth@M*U*S*H.
! * See_All players can see all channels and their members, too.
! Suggested by Oriens@Alexandria.
! * When trying to join yourself to a channel, we only check channels
! you're not on; when trying to leave a channel, we only check channels
! that you are on. This is handy for disambiguating similar prefixes.
! Suggested by Oriens@Alexandria.
! * When you're following a leader and the leader moves, you're told that
! that you're following them before you attempt to move. Suggested by
! Oriens@Alexandria.
! * @stats/table is no longer restricted.
! Fixes:
! * @grep/iprint produced highlighted strings matching the case you
! gave, not the case actually found. Reported by Reagan@NF
! * @search/lsearch by powers could sometimes get you the equivalent
! flag-bit instead of power-bit. Reported by Reagan@NF
! * Configure fix.
! * hpux-gcc hint file now included.
! * Nested ansi() broke again in p1. Fixed now. Reported by Intrevis@M*U*S*H
! * Added Configure check for <netdb.h> to help Cygwin builds.
! Reported by Xyrxwyrth@M*U*S*H.
! * Help fix or two.
! * Grammatical correction by Eratl@M*U*S*H in @boot/me error message.
! * Cosmetics of @mail with folders > 9 improved. Reported by Bellemore@M*U*S*H
! * One could be disconnected at the connect screen under some conditions
! for no good reason. Reported by Oriens@Alexandria. [SW]
! * Compile error when ROYALTY_FLAG not defined patched by Noltar@Korongil.
! * Fixed infinite loop reported by Xyrxwyrth@M*U*S*H. [SW]
! * It's no longer posible to connect to a GOING player.
!
! Version 1.7.4 patchlevel 1 March 17, 2001
!
! Minor changes:
! * Speedup for repeat() function. [TAP]
! * Hint for openbsd, which appears to have a broken IPv6 configuration. [SW]
! * Some OS-dependent defines have been removed.
! * ansi() now only adds a maximum of 7 codes to the string. [TAP]
! Fixes:
! * The restrict_command for rob has been removed from restrict.cnf
! Reported by Kyieren@M*U*S*H.
! * Help fixes by Kyieren, rodregis, and Luke @ M*U*S*H, Datron@SW2,
! and Noltar@Korongil.
! * stripansi() didn't correctly handle multiple ansi codes in
! sequence. Reported by CU5@WCX.
! * Linting for warnings in pcre. [SW]
! * Configure now sends mailing list subscription stuff to the new
! list address.
! * Updated examples in access.README to use dbrefs.
! * Updated a reference to the rob command in 'give' errors. Noted by
! rodregis@M*U*S*H.
! * median was broken. Reported by Parax@SandsMUSH.
! * Fixes to update.pl's handling of CHAT_TOKEN_ALIAS and the like.
! Noted by rodregis@M*U*S*H
!
! Version 1.7.4 patchlevel 0 March 7, 2001
Major Changes:
! * This is now the stable minor version. PennMUSH 1.7.2 is no longer
! supported except to help people transition to this version.
Commands:
! * The practically useless 'rob' command has been removed.
Minor Changes:
! * A virtually complete French translation joins the Swedish and
! Hungarian ones! Congratulations to Jean-Michael Amblat and
! Guillaime Lupin.
! * The index-files.pl script handles long help topic titles better when
! creating the index of help entries. [SW]
! * Config options that can be set with @config/set are now documented in
! mush help. [SW]
! * A @config/set of a dbref option now checks dbref for validity. [SW]
! * An ansi_normal code is added at the end of each channel title.
! * You can clear attributes that have invalid names. [SW]
! * stripansi() removes HTML markup as well as ANSI. [SW]
! * @poll and @doing cannot have ANSI or HTML markup. [SW]
! * soundex() and soundslike() strip ANSI and HTML. [SW]
! * The maximum length of attribute names has been limited to 1024
! characters. [SW]
! * Nesting ansi() functions now works better. Patch by Luke@M*U*S*H.
! * help credits explains [initials] used herein. Suggested by Kyieren@M*U*S*H
Fixes:
! * Help fixes by Nymeria, Balerion, Trispis, Vexon (all@M*U*S*H),
! Jeff Ferrell, and [SW,LdW]
! * The two-argument forms of regmatch() and regmatchi() were backwards
! when it came to case-sensitivity. [SW]
! * @search on zone class did parent instead. Fix by Luke@M*U*S*H.
! * Use of @mail after @mail/nuke could cause a crash.
! Reported by Brazil. [SW]
! * make update handles the include directive correctly. [SW]
! * The admin WHO output looks better when locations reach 5-digit
! dbrefs now.
! * regedit() and regeditall() were case-insenstive. Fixed. [SW]
! * The code for log() was changed some time back to allow an optional
! base argument, but the help and function table were never updated. [SW]
! * owner() could be used to determine if any attribute existed on any
! object. [SW]
! * atrlock() has been cleaned up, fixing many bugs. [SW]
! * Some list functions that evaluate attributes could be used to determine
! if the attribute existed even if the object doing the function couldn't
! normally see the attribute. Fixed, and their error messages are now
! consistant with the other list functions (In other words, no errors, just
! a null string) [SW]
! * Idle timeout is now checked every minute rather than at dbck intervals.
! Based on a report by Noltar@Korongil.
! * Cleanup of signed/unsigned casts and signal handlers. [SW,DW]
! * forbidden_name now does a case-insensitive comparison.
! Reported by Kyieren@M*U*S*H.
! * Blank lines at the start of help files are now correctly ignored
! on Win32 and Mac systems as well as Unix. Report by Nymeria@M*U*S*H.
! * functions() didn't show @functions. [SW]
! * Nuked players weren't getting removed from @maliases. [SW]
! * Database corruption caused by reading a db with over-long attribute
! names or with attributes starting with quotes fixed. [SW]
! * Crash bug in @attribute/rename fixed. [SW]
! * Potential memory leak in help_command fixed. [SW]
! * Warnings removed. Reported by [NJG]
! * Windows NT native IO (NT_TCP) stuff should work again. Reported by
! Bellemore@M*U*S*H. [NJG]
! * @forwardlist now requires that you control the target, be pemit_all,
! or pass the target's @lock/forward. Report by Vadiv@M*U*S*H.
! * unparse_flags didn't handle exit toggles. Report by Draci@Chaotic.
! * Casting and cleanup to enable compiling with lcc [SW]
! * A potential problem with regexps with heavy backtracking fixed. [SW]
! * Memory leaks with @clock fixed. [SW]
! * Typo in spellnum() "fourty" fixed. Reported by Kyieren@M*U*S*H.
! * @malias/set didn't work. Reported by Kyieren@M*U*S*H.
! * Win32 portability fixes. [NJG]
! * MacOS portability fixes [DW]
--- 17,76 ----
==========================================================================
! Version 1.7.5 patchlevel 0 November 14, 2001
Major Changes:
! * This is now the development minor version. This first release includes
! relatively few changes, to make converting to it easier.
! * Internal changes to the lock system. This requires a new minimal.db,
! which is now distributed. [SW]
! * Locale-based string collation throughout.
! * Only ANSI C compilers are still supported; no more K&R. Files are
! gradually going to be converted to ANSI C only.
! * There is now an option to make ZMOs and ZMRs not count for
! control of objects, only ZMPs. [SW]
! Flags:
! * The ZONE player flag has been renamed SHARED, to help seperate the
! ZMP control-only meaning from the command-matching of ZMOs and ZMRs. [SW]
Commands:
! * /preserve switch for @link prevents @chowning. Suggested by Vexon@M*U*S*H
! * Admin WHO and SESSION now includes unconnected descriptors. [SW]
! * Unconnected descriptors can now be booted. Patch by Bellemore@M*U*S*H.
! * Unconnected descriptors can now be paged by admin with page/port. [SW]
! Functions:
! * mix() can take more than 10 lists and of unequal length. [3,SW]
! * iname() returns the name of an object from inside (honoring nameformat)
! Idea by Jeff Heinin.
! * lplayers() returns a list of players in the location. Handy for
! room parents. By Vexon@M*U*S*H.
! * lvplayers(), lvcon(), lvexits() are like lplayers/lcon/lexits, but
! leave out dark things (and disconnected players). Handy for room
! parents. By Vexon@M*U*S*H.
Minor Changes:
! * munge() now passes its delimiter as %1 to make generic sorting easier. [SW]
! * Word-based attribute compression is faster than before, for both
! compression and decompression. [SW]
! * Windows memory-usage information for wizards is now in @uptime, not
! @stats [SW]
! * Word-based attribute compression stats can be viewed on non-Windows
! mushes as well, by defining COMP_STATS. See externs.h for details. [SW]
! * Setting of the internal QUEUE and semaphore attributes does not modify
! an object's last-modified timestamp. [SW]
! * Speaking on a channel that you're gagging is now treated like
! speaking on a channel that you're not on. Suggested by rodregis@M*U*S*H
! * You can use @exitto in place of &DESTINATION to set the destinatino
! for variable exits, though DESTINATION is checked first. [3]
! * WATCHER is another name for the MONITOR flag. [3]
! * max_guest_pennies and guest_paycheck config options. Inspired by [SW]
! * Lock and unlock messages now show object name and dbref, and tell
! you if you unlock an already unlocked object. Suggested by Jamie Warren.
! * A version of portmsg for Win32 is in the win32 directory.
! Donated by CU5@WCX
! * Tweaks to info_slave, which now uses readv/writev. [SW]
! * Lots of code cleanup. [SW]
! * CHAT_SYSTEM, INFO_SLAVE, and FUNCTION_SIDE_EFFECTS are now #define'd
! by default. [TAP]
Fixes:
! * Indentation fixes [SW]
! * Fixes up to 1.7.4p12 merged in.
!
*** 1_7_4.187/game/txt/hlp/pennvers.hlp Tue, 13 Nov 2001 17:29:19 -0600 dunemush (pennmush/12_pennvers.h 1.169.1.42.1.1 600)
--- 1_7_5.36(w)/game/txt/hlp/pennvers.hlp Wed, 14 Nov 2001 13:04:44 -0600 dunemush (pennmush/12_pennvers.h 1.169.1.44 600)
***************
*** 1,5 ****
& changes
! & 1.7.4p12
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.5p0
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,74 ----
A list of the patchlevels associated with each release can
be read in 'help patchlevels'.
+ Version 1.7.5 patchlevel 0 November 14, 2001
+
+ Major Changes:
+ * This is now the development minor version. This first release includes
+ relatively few changes, to make converting to it easier.
+ * Internal changes to the lock system. This requires a new minimal.db,
+ which is now distributed. [SW]
+ * Locale-based string collation throughout.
+ * Only ANSI C compilers are still supported; no more K&R. Files are
+ gradually going to be converted to ANSI C only.
+ * There is now an option to make ZMOs and ZMRs not count for
+ control of objects, only ZMPs. [SW]
+ Flags:
+ * The ZONE player flag has been renamed SHARED, to help seperate the
+ ZMP control-only meaning from the command-matching of ZMOs and ZMRs. [SW]
+ Commands:
+ * /preserve switch for @link prevents @chowning. Suggested by Vexon@M*U*S*H
+ * Admin WHO and SESSION now includes unconnected descriptors. [SW]
+ * Unconnected descriptors can now be booted. Patch by Bellemore@M*U*S*H.
+ * Unconnected descriptors can now be paged by admin with page/port. [SW]
+ Functions:
+ * mix() can take more than 10 lists and of unequal length. [3,SW]
+ * iname() returns the name of an object from inside (honoring nameformat)
+ Idea by Jeff Heinin.
+ * lplayers() returns a list of players in the location. Handy for
+ room parents. By Vexon@M*U*S*H.
+ * lvplayers(), lvcon(), lvexits() are like lplayers/lcon/lexits, but
+ leave out dark things (and disconnected players). Handy for room
+ parents. By Vexon@M*U*S*H.
+ Minor Changes:
+ * munge() now passes its delimiter as %1 to make generic sorting easier. [SW]
+ * Word-based attribute compression is faster than before, for both
+ compression and decompression. [SW]
+ * Windows memory-usage information for wizards is now in @uptime, not
+ @stats [SW]
+ * Word-based attribute compression stats can be viewed on non-Windows
+ mushes as well, by defining COMP_STATS. See externs.h for details. [SW]
+ * Setting of the internal QUEUE and semaphore attributes does not modify
+ an object's last-modified timestamp. [SW]
+ * Speaking on a channel that you're gagging is now treated like
+ speaking on a channel that you're not on. Suggested by rodregis@M*U*S*H
+ * You can use @exitto in place of &DESTINATION to set the destinatino
+ for variable exits, though DESTINATION is checked first. [3]
+ * WATCHER is another name for the MONITOR flag. [3]
+ * max_guest_pennies and guest_paycheck config options. Inspired by [SW]
+ * Lock and unlock messages now show object name and dbref, and tell
+ you if you unlock an already unlocked object. Suggested by Jamie Warren.
+ * A version of portmsg for Win32 is in the win32 directory.
+ Donated by CU5@WCX
+ * Tweaks to info_slave, which now uses readv/writev. [SW]
+ * Lots of code cleanup. [SW]
+ * CHAT_SYSTEM, INFO_SLAVE, and FUNCTION_SIDE_EFFECTS are now #define'd
+ by default. [TAP]
+ Fixes:
+ * Indentation fixes [SW]
+ * Fixes up to 1.7.4p12 merged in.
+
+ & 1.7.4p12
Version 1.7.4 patchlevel 12 November 9, 2001
Minor changes:
***************
*** 479,484 ****
--- 537,884 ----
* @malias/set didn't work. Reported by Kyieren@M*U*S*H.
* Win32 portability fixes. [NJG]
* MacOS portability fixes [DW]
+ & 1.7.4p8
+ Version 1.7.4 patchlevel 8 July 02, 2001
+
+ Minor changes:
+ * restart is a bit more precise in the "Mush already active" message.
+ Suggested by Lucas Layman.
+ * When a player's creation is refused because creation/registration
+ is globally turned off, show them register.txt instead of down.txt.
+ Patch by Bellemore.
+ Fixes:
+ * ident lookups were broken on win32. Reported by Bellemore. [SW]
+ * ident query timeouts could get doubled mistakenly. [SW]
+ * Typo in mushcnf.dst fixed by Noltar@Korongil.
+
+ & 1.7.4p7
+ Version 1.7.4 patchlevel 7 July 02, 2001
+
+ Major changes:
+ * %r can now evaluate to one character or two, based on a new config
+ option, newline_one_char, which defaults to being yes. This allows
+ %r to be used as a list delimiter. However, this may
+ break softcode which expects strlen(%r) to be 2, but it's probably
+ smarter to fix the softcode than turn off this option. [sw]
+ * If a command and a standard attribute have the same name, the
+ command takes precedence. So if you have an @attribute named
+ "PEMIT", @pemit me=foo will do the command, not set the attribute. [SW]
+ Minor changes:
+ * When someone attempts to create too many attributes on an object,
+ the log indicates who and which object. Suggested by Frob@Battlestar
+ Galactica:TSC.
+ * Buncha tprintfs replaced with notify_formats. [SW]
+ * New local_connect() and local_disconnect() hooks in local.dst.
+ Suggested by Eratl@M*U*S*H.
+ * lookup_player now deals with player names prefixed with "*",
+ so a bunch of commands like @newpassword will now treat those
+ arguments. Suggested by Glonk@GlonkMUSH.
+ * Make is more verbose about alerting you to changes in the
+ src/*.dst files.
+ * The message for undestroying someone else's object more closely matches
+ the destroy message. Suggested by Noltar@Korongil.
+ * Server output that used to be tagged with "PRE" for Pueblo is now
+ tagged with "SAMP", because the original Pueblo client did not correctly
+ handle "<BR>\n" in PRE, and the newer clients that are supporting
+ the pueblo protocol, like MUSHclient, do handle it correctly, causing
+ an incompatibility problem. Our workaround is to avoid PRE.
+ Reported by [NJG].
+ * The WHO list output is tagged <img xch_cmd=html> for Pueblo to get
+ appropriate newline handling. [NJG]
+ * help @mail mentions help @malias. Suggested by Trispis@M*U*S*H.
+ * Matching code now treats players you can't see like disconnected players
+ when matching *player. Reported by Walker@M*U*S*H.
+ * @newpassword now confirms whose password was changed. Suggested by
+ Xyrxwyrth@M*U*S*H.
+ * @chan/who and cwho() now include objects on the channel. Suggested by
+ Glonk@GlonkMUSH.
+ * q-register lookup is slightly faster. [SW]
+ * Floating-point numbers in exponential format (6.02e23) are always
+ accepted, not just when tiny_math is set. [SW]
+ * isint() and isnum() ignore the null_eq_zero option, since they already
+ ignore tiny_math. [SW]
+ * time() and convsecs() take an optional timezone argument that,
+ if 'UTC', makes them act the same way as utctime() and convutcsecs().
+ From MUX2. [SW]
+ Fixes:
+ * Additional range checking to avoid some bugs reported by Alierak. [SW]
+ * Fix to buglet in @name error with PLAYER_NAME_SPACES reported by
+ Luke@M*U*S*H.
+ * Typo in @name error message fixed by Luke@M*U*S*H.
+ * One could @pcreate players past the hard db limit. Reported by Z@Korongil.
+ * Typos in config_h.SH and options.h.dist fixed by Oriens@Alexandria.
+ * Under some conditions, you could double-join a channel.
+ Reported by Xyrxwyrth@M*U*S*H, investigated by Steven@Champions.
+ * Error message for @chan/desc improved. Reported by Oriens@Alexandria.
+ * Typo in alias.cnf fixed by rodregis@M*U*S*H.
+ * @mvattr sometimes failed to remove the old attrib, when it was a
+ standard attrib that could be abbreviated (@mvattr a/desc=b).
+ Fixed by Walker@M*U*S*H.
+ * Some english-matching (like 'get 1st foo') would fail. Reported by
+ Mystery8.
+ * Typo in help @verb reported by Greck.
+ * MacOS tweaks. [DW]
+ * Better detection of numbers that are too big. [SW]
+ * Wizards could crash the server by entering objects in their own
+ inventory. Reported by Howie@New Frontiers.
+
+ & 1.7.4p6
+ Version 1.7.4 patchlevel 6 June 11, 2001
+
+ Minor changes:
+ * English-style matching has been added to some more commands,
+ to help with the stricter ambiguity checking (@teleport my 3rd foo=box,
+ etc.). [SW]
+ * @pemit/list no longer does its useless ## substitution. [SW]
+ * capstr() and art() skip leading ansi and html. [SW]
+ * table(), alphamin(), alphamax(), comp(), lcstr(), ucstr(), strinsert(),
+ and delete() are all ansi and html aware. Mixing html and ansi in their
+ arguments is probably a bad idea, though. [SW]
+ * reverse() and scramble() are ansi-aware, and still will break html, but
+ in a different way than before. [SW]
+ * foreach() strips ansi and html from the string before doing its things. [SW]
+ * Complete Norwegian translation by Kenneth Aalberg.
+ Fixes:
+ * Bug in growing hash tables fixed. [SW]
+ * Typo in copyright fixed. Reported by Cheetah@M*U*S*H.
+ * Unused variable removed from fun_ansi. Reported by Sidney@M*U*S*H.
+ * Mac portability stuff. [DW]
+ * Wizards could @chown garbage objects. [SW]
+ * Wizards could give to garbage objects. [SW]
+ * Wizards could read God's @mail. [SW]
+ * Eliminated some compiler warnings. [SW]
+ * mid() was quite broken with ansi. right() was less broken.
+ Both hopefully fixed for good. [SW]
+ * Fixed a problem with the attribute used with foreach() evaluating from
+ the perspective of the wrong object. [SW]
+ * before(), after(), and wrap() are now classified as string functions
+ in the help. [TAP]
+ * help wildcards now mentions ?. Suggested by cmintrnt@M*U*S*H.
+ * help fixes by Jeff Ferrell.
+ * Problems with wrap() when the text included %r%r (or started with %r)
+ reported by Noltar@Korongil.
+ * If you somehow managed to load a corrupt db with a parent loop,
+ lparent could infinite-loop. Reported by Ashen-Shugar. [TAP]
+
+
+ & 1.7.4p5
+ Version 1.7.4 patchlevel 5 May 25, 2001
+
+ Fixes:
+ * Fix to uninitialized variable that could cause ansi to bleed
+ on some systems. Patch by Luke@M*U*S*H
+ * Prototypes for ansi_align and ansi_save added to externs.h. [DW]
+ * FreeBSD hints file updated to get rid of a compiler warning. [SW]
+ * Setting hate_dest to no will not disable @recycle [SW]
+ * switchinc.c updated. [DW]
+
+
+ & 1.7.4p4
+ Version 1.7.4 patchlevel 4 May 13, 2001
+
+ Minor changes:
+ * Internally, the /folder switch is now /folders, which prefix-matches
+ to /folder and also lets @mail/folders work as syntactic sugar.
+ * fun_ansi has been rewritten to use less buffer space by consolidating
+ ansi codes. New codes for turning off ansi attributes (like hilite)
+ also added. Patch by Luke@M*U*S*H.
+ * /silent switch to give suppresses default messages when giving
+ money to players. Suggested by 8BitMUSH.
+ * Old port concentrator code removed. [SW]
+ * On linux, @uptime reads /proc files instead of running 'uptime' [SW]
+ * Code that uses strdup and then adds a MEM_CHECK record for "string"
+ now use a wrapper function that does it automatically. [SW]
+ Fixes:
+ * Paging a page-locked player didn't give the appropriate messages.
+ Reported by Steven@Champions.
+ * left, right, and mid are now ansi-aware. Patch by Luke@M*U*S*H.
+ * Help fixes to lexits(), name() (Noltar@Korongil), 1.7.4p3 (Z@Korongil).
+ * win32/cmds.h updated with prototypes for dismiss and desert by
+ Noltar@Korongil. And hdrs/externs.h, too, by [SW].
+ * Memory leak with using alphabetic q-registers in queued commands fixed.
+ Report by Jayvin@Dynamix [SW]
+ * Added hints/openbsd.sh to distribution.
+ * Mac portability linting. [DW]
+ * Several memory leaks in @malias code fixed. [SW]
+
+ & 1.7.4p3
+ Version 1.7.4 patchlevel 3 April 23, 2001
+
+ Commands:
+ * unfollow with no args now stops you from following everyone.
+ dismiss command stops people from following you.
+ desert command stops people from following you or leading you.
+ Idea by Oriens@Alexandria. Names suggested by Noltar@Korongil
+ Minor changes:
+ * MONITOR announcements of disconnects distinguish hidden disconnects.
+ Suggested by Oriens@Alexandria.
+ * The Uptime field of INFO shows first start time, not last reboot time.
+ Suggested by Trispis@M*U*S*H.
+ Fixes:
+ * Exact matches are now preferred over partial matches, and no longer
+ result in ambiguity. Report by Steven Viscido.
+ * Message mentioning INHERIT changed to TRUST by Xyrxwyrth@M*U*S*H.
+ * Distributed register.txt file is now more descriptive.
+ Suggested by Xyrxwyrth@M*U*S*H.
+ * The ctime(), mtime(), restarttime(), and starttime() functions now
+ return 2-digit days (01 vs. 1). Reported by Z@Korongil.
+ * @malias output uses the alias token more consistently. Suggested by
+ Kyieren@M*U*S*H.
+ * hints/solaris_2.sh modified a bit.
+ * Mac portability fixes
+ * Options.h clarification suggested by rodregis@M*U*S*H.
+ * Cosmetic bug in @halt fixed. Report by Trispis@M*U*S*H.
+ * Fixed a fencepost error in regedit*() that could generate garbage text.
+ Reported by Vadiv@M*U*S*H
+
+
+ & 1.7.4p2
+ Version 1.7.4 patchlevel 2 March 23, 2001
+
+ Major changes:
+ * The object matching routines have been modified. Some things you may
+ notice:
+ * Ambiguous cases are more often reported as such (rather than you
+ getting one of the ambiguous matches arbitrarily).
+ * locate() now returns #-2 as promised. Reported by Jeff Ferrell.
+ * A few functions that used accept player names now require
+ the use of *playername to match the player (e.g. mail(), hidden()).
+ (This is generally more consistent).
+ Minor changes:
+ * @tr of a nonexistent attribute now reports that. Report by Z@Korongil.
+ * TEL_OK is an alias for JUMP_OK. Suggested by Kyieren@M*U*S*H.
+ * Added 'help i18n' (aka help translation). Suggested by Kyieren@M*U*S*H.
+ * When you use 'teach' and, as a result, run the command you are teaching,
+ it is treated as if the command were run by a player from the socket --
+ that is, attribute sets are not evaluated. Suggested by Xyrxwyrth@M*U*S*H.
+ * See_All players can see all channels and their members, too.
+ Suggested by Oriens@Alexandria.
+ * When trying to join yourself to a channel, we only check channels
+ you're not on; when trying to leave a channel, we only check channels
+ that you are on. This is handy for disambiguating similar prefixes.
+ Suggested by Oriens@Alexandria.
+ * When you're following a leader and the leader moves, you're told that
+ that you're following them before you attempt to move. Suggested by
+ Oriens@Alexandria.
+ * @stats/table is no longer restricted.
+ Fixes:
+ * @grep/iprint produced highlighted strings matching the case you
+ gave, not the case actually found. Reported by Reagan@NF
+ * @search/lsearch by powers could sometimes get you the equivalent
+ flag-bit instead of power-bit. Reported by Reagan@NF
+ * Configure fix.
+ * hpux-gcc hint file now included.
+ * Nested ansi() broke again in p1. Fixed now. Reported by Intrevis@M*U*S*H
+ * Added Configure check for <netdb.h> to help Cygwin builds.
+ Reported by Xyrxwyrth@M*U*S*H.
+ * Help fix or two.
+ * Grammatical correction by Eratl@M*U*S*H in @boot/me error message.
+ * Cosmetics of @mail with folders > 9 improved. Reported by Bellemore@M*U*S*H
+ * One could be disconnected at the connect screen under some conditions
+ for no good reason. Reported by Oriens@Alexandria. [SW]
+ * Compile error when ROYALTY_FLAG not defined patched by Noltar@Korongil.
+ * Fixed infinite loop reported by Xyrxwyrth@M*U*S*H. [SW]
+ * It's no longer posible to connect to a GOING player.
+
+ & 1.7.4p1
+ Version 1.7.4 patchlevel 1 March 17, 2001
+
+ Minor changes:
+ * Speedup for repeat() function. [TAP]
+ * Hint for openbsd, which appears to have a broken IPv6 configuration. [SW]
+ * Some OS-dependent defines have been removed.
+ * ansi() now only adds a maximum of 7 codes to the string. [TAP]
+ Fixes:
+ * The restrict_command for rob has been removed from restrict.cnf
+ Reported by Kyieren@M*U*S*H.
+ * Help fixes by Kyieren, rodregis, and Luke @ M*U*S*H, Datron@SW2,
+ and Noltar@Korongil.
+ * stripansi() didn't correctly handle multiple ansi codes in
+ sequence. Reported by CU5@WCX.
+ * Linting for warnings in pcre. [SW]
+ * Configure now sends mailing list subscription stuff to the new
+ list address.
+ * Updated examples in access.README to use dbrefs.
+ * Updated a reference to the rob command in 'give' errors. Noted by
+ rodregis@M*U*S*H.
+ * median was broken. Reported by Parax@SandsMUSH.
+ * Fixes to update.pl's handling of CHAT_TOKEN_ALIAS and the like.
+ Noted by rodregis@M*U*S*H
+
+ & 1.7.4p0
+ Version 1.7.4 patchlevel 0 March 7, 2001
+
+ Major Changes:
+ * This is now the stable minor version. PennMUSH 1.7.2 is no longer
+ supported except to help people transition to this version.
+ Commands:
+ * The practically useless 'rob' command has been removed.
+ Minor Changes:
+ * A virtually complete French translation joins the Swedish and
+ Hungarian ones! Congratulations to Jean-Michael Amblat and
+ Guillaime Lupin.
+ * The index-files.pl script handles long help topic titles better when
+ creating the index of help entries. [SW]
+ * Config options that can be set with @config/set are now documented in
+ mush help. [SW]
+ * A @config/set of a dbref option now checks dbref for validity. [SW]
+ * An ansi_normal code is added at the end of each channel title.
+ * You can clear attributes that have invalid names. [SW]
+ * stripansi() removes HTML markup as well as ANSI. [SW]
+ * @poll and @doing cannot have ANSI or HTML markup. [SW]
+ * soundex() and soundslike() strip ANSI and HTML. [SW]
+ * The maximum length of attribute names has been limited to 1024
+ characters. [SW]
+ * Nesting ansi() functions now works better. Patch by Luke@M*U*S*H.
+ * help credits explains [initials] used herein. Suggested by Kyieren@M*U*S*H
+ Fixes:
+ * Help fixes by Nymeria, Balerion, Trispis, Vexon (all@M*U*S*H),
+ Jeff Ferrell, and [SW,LdW]
+ * The two-argument forms of regmatch() and regmatchi() were backwards
+ when it came to case-sensitivity. [SW]
+ * @search on zone class did parent instead. Fix by Luke@M*U*S*H.
+ * Use of @mail after @mail/nuke could cause a crash.
+ Reported by Brazil. [SW]
+ * make update handles the include directive correctly. [SW]
+ * The admin WHO output looks better when locations reach 5-digit
+ dbrefs now.
+ * regedit() and regeditall() were case-insenstive. Fixed. [SW]
+ * The code for log() was changed some time back to allow an optional
+ base argument, but the help and function table were never updated. [SW]
+ * owner() could be used to determine if any attribute existed on any
+ object. [SW]
+ * atrlock() has been cleaned up, fixing many bugs. [SW]
+ * Some list functions that evaluate attributes could be used to determine
+ if the attribute existed even if the object doing the function couldn't
+ normally see the attribute. Fixed, and their error messages are now
+ consistant with the other list functions (In other words, no errors, just
+ a null string) [SW]
+ * Idle timeout is now checked every minute rather than at dbck intervals.
+ Based on a report by Noltar@Korongil.
+ * Cleanup of signed/unsigned casts and signal handlers. [SW,DW]
+ * forbidden_name now does a case-insensitive comparison.
+ Reported by Kyieren@M*U*S*H.
+ * Blank lines at the start of help files are now correctly ignored
+ on Win32 and Mac systems as well as Unix. Report by Nymeria@M*U*S*H.
+ * functions() didn't show @functions. [SW]
+ * Nuked players weren't getting removed from @maliases. [SW]
+ * Database corruption caused by reading a db with over-long attribute
+ names or with attributes starting with quotes fixed. [SW]
+ * Crash bug in @attribute/rename fixed. [SW]
+ * Potential memory leak in help_command fixed. [SW]
+ * Warnings removed. Reported by [NJG]
+ * Windows NT native IO (NT_TCP) stuff should work again. Reported by
+ Bellemore@M*U*S*H. [NJG]
+ * @forwardlist now requires that you control the target, be pemit_all,
+ or pass the target's @lock/forward. Report by Vadiv@M*U*S*H.
+ * unparse_flags didn't handle exit toggles. Report by Draci@Chaotic.
+ * Casting and cleanup to enable compiling with lcc [SW]
+ * A potential problem with regexps with heavy backtracking fixed. [SW]
+ * Memory leaks with @clock fixed. [SW]
+ * Typo in spellnum() "fourty" fixed. Reported by Kyieren@M*U*S*H.
+ * @malias/set didn't work. Reported by Kyieren@M*U*S*H.
+ * Win32 portability fixes. [NJG]
+ * MacOS portability fixes [DW]
& 1.7.3p14
Version 1.7.3 patchlevel 14 January 29, 2001
***************
*** 4912,4918 ****
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
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
--- 5312,5319 ----
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.5: 0
! 1.7.4: 0, 0, 1, 1, 2, 2, 3, 3, 4, 4, 5, 5, 6, 6, 7, 7, 8, 8, 9, 10, 11, 12
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.187/game/txt/hlp/penntop.hlp Mon, 05 Nov 2001 10:50:45 -0600 dunemush (pennmush/13_penntop.hl 1.2.1.27.1.3.1.2.1.2.1.1 600)
--- 1_7_5.36(w)/game/txt/hlp/penntop.hlp Mon, 05 Nov 2001 10:51:48 -0600 dunemush (pennmush/13_penntop.hl 1.2.1.27.1.3.1.2.1.2.1.2 600)
***************
*** 317,333 ****
Here are the conditions under which object O controls victim V:
1. If V is God, O must be God
! 2. If V is Wizard, O must be Wizard
3. If O is a Wizard, O controls V
! 4. If V is Royalty, O must be Royalty
5. If V and O are owned by the same player:
5a. If V is not TRUST, O controls V
5b. If V is TRUST, O must be TRUST or the player must be TRUST
6. If V is on a zone, and isn't a player and isn't TRUST,
O controls V if O passes the zone-lock of the zone.
! 7. If V is owned by a ZONE player, and V isn't a player,
! O controls V if O passes the zone-lock of the ZONE player.
!
There's also one special case: anyone can @link an unlinked exit,
See also: controls(), TRUST, ZONES, ZONE MASTERS
--- 317,334 ----
Here are the conditions under which object O controls victim V:
1. If V is God, O must be God
! 2. If V is Wizard, O must be Wizard or God
3. If O is a Wizard, O controls V
! 4. If V is Royalty, O must be Royalty, Wizard or God
5. If V and O are owned by the same player:
5a. If V is not TRUST, O controls V
5b. If V is TRUST, O must be TRUST or the player must be TRUST
6. If V is on a zone, and isn't a player and isn't TRUST,
O controls V if O passes the zone-lock of the zone.
! 7. If V is owned by a SHARED player, and V isn't a player and isn't set
! TRUST, O controls V if O passes the zone-lock of the SHARED player.
!
! Step 6 is skipped if config(zone_control_zmp_only) is on.
There's also one special case: anyone can @link an unlinked exit,
See also: controls(), TRUST, ZONES, ZONE MASTERS
***************
*** 1682,1711 ****
& ZMP
ZONE MASTERS
! Zone Masters are player objects which are used to mediate zone control.
! A Zone Master is an object of type PLAYER, which has the ZONE flag set.
! They are created like ordinary players, and can connect, etc. The only
! difference is that objects owned by Zone Masters are controlled by
! anything that passes the zone lock of the Zone Master. So instead of
! @chzone-ing an object to add it to a zone, you @chown it to the ZM.
! Anyone who passes the zone lock of the Zone Master can @chown objects
to it. This, however, does not refund the original creator's money or
! quota, as does normal @chown. Using a Zone Master instead of a ZMO
! enables a higher degree of security within the zone, and allows TRUST
! objects to be placed in the zone, since all objects within the zone have
! the same owner. $commands are not, however, inherited off the Zone Master.
& ZONES
& ZONE OBJECTS
& ZMO
! Zones are areas of the MUSH which may be controlled by many people.
! Essentially, they allow group ownership of objects. There are two
! basic types of zones. One is maintained by things and rooms, and
! are the "standard" zones. These are described below. The other type
! is maintained by players. Information on this type of zone is found
! under the topic ZONE MASTERS.
!
The default zone is NOTHING. Any building done by a player defaults
to belonging to the same zone that the player belongs to.
Every zone is defined by a Zone Master Object (ZMO). The ZMO is an
--- 1683,1725 ----
& ZMP
ZONE MASTERS
! Zone Masters are player objects which are used to mediate shared control
! of objects. A Zone Master is an object of type PLAYER which has the SHARED
! flag set. They are created like ordinary players, and can connect, build,
! etc. The only difference is that objects owned by Zone Masters are
! controlled by anything that passes the @lock/zone of the Zone Master.
! Anyone who passes the @lock/zone of the Zone Master can @chown objects
to it. This, however, does not refund the original creator's money or
! quota, as does normal.
+ Despite the historical similarity in names, Zone Masters aren't related
+ to zone objects or zone master rooms, which control what is scanned
+ for user-defined commands.
+
+ Continued in HELP ZONE MASTERS2
+ & ZONE MASTERS2
+ Some suggested uses of zone masters:
+
+ 1. If you are working on a building project with several people, it
+ may be useful to create a zone master and @lock/zone it to all of you,
+ That way, all of the players working on the project will be able to
+ modify the building, as long as the zone master owns all the objects
+ being built.
+
+ 2. If local wizards are desired, a zone master may be created and zone
+ locked to the local wizards. Players building within that zone should
+ be @chowning to the zone master, or logged in as it while creating
+ objects. The local wizard will then be able to control anything within
+ that domain as long as the object in question is owned by the zone
+ master.
& ZONES
& ZONE OBJECTS
& ZMO
! Zones are areas of the MUSH that can have the same user-defined commands
! without having to @parent every object in the zone or make the commands
! mush-wide globals.
!
The default zone is NOTHING. Any building done by a player defaults
to belonging to the same zone that the player belongs to.
Every zone is defined by a Zone Master Object (ZMO). The ZMO is an
***************
*** 1718,1764 ****
See "help ZONES2" for more.
& ZONES2
!
! Anyone who can pass the Zone lock of the ZMO has control over all
! objects in that zone. This, in essence, gives that player wizard
! powers within that zone. For this reason, one must be extremely
! careful with the zone locks of ZMOs!
!
! Also, $commands on a ZMO are treated as global within that zone.
The game attempts to match $commands for the ZMO of the player's
location, as well as $commands for the player's own zone.
! For some suggestions on how to use zones, see "help ZONES3".
! See also: @chzone, ZONE MASTERS
!
! & ZONES3
! Some suggested uses of zones:
!
! 1. If you are working on a building project with several people, it
! may be useful to create a zone object and @elock it to all of you,
! and ask a wizard to @chzone the players involved to the zone object.
! That way, all of the players working on the project will be able to
! modify the building.
!
! 2. On a similar thread, if several players are working on a project
! involving only a few objects, it may be simpler to create a zone
! object and @chzone those few objects to the ZMO instead of resetting
! the zones of the players. Note that a player does not have to belong
! to a zone in order to change objects in that zone; all is merely
! required to pass the ZMO's enter lock.
!
! See "help ZONES4" for more.
! & ZONES4
! More possible uses for zones:
!
! 3. If local wizards are desired, a zone object may be created and enter
! locked to the local wizard. Players building within that zone should
! be @chzone'd to that ZMO. The local wizard will then be able to
! control anything within that domain.
!
! 4. If you want restricted global commands defined over only a small area,
! you can define that area to be part of a zone, and place the desired
! $commands upon the ZMO.
& matching
Matching is the process the MUSH uses to determine which object you
mean when you try to do something with an object. Different commands
--- 1732,1749 ----
See "help ZONES2" for more.
& ZONES2
! $commands on a ZMO are treated as global within that zone.
The game attempts to match $commands for the ZMO of the player's
location, as well as $commands for the player's own zone.
! If you want restricted global commands defined over only a small area,
! you can define that area to be part of a zone, and place the desired
! $commands upon the ZMO. If you want players to be able to use special
! commands for a culture they belong to, the $commands should go on the
! ZMO, and the players @chzoned to it so they can use the commands
! anywhere.
!
! See also: @chzone, ZONE MASTERS
& matching
Matching is the process the MUSH uses to determine which object you
mean when you try to do something with an object. Different commands
*** 1_7_4.187/game/txt/hlp/pennfunc.hlp Mon, 15 Oct 2001 14:53:56 -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 600)
--- 1_7_5.36(w)/game/txt/hlp/pennfunc.hlp Mon, 05 Nov 2001 10:47:06 -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.3 600)
***************
*** 109,120 ****
conn() controls() ctime() ctitle() cwho()
doing() elock() findable() flags() folderstats()
fullname() hasattr() hasattrp() hasflag() haspower()
! hastype() hidden() idle() lock() lstats()
! lwho() mail() mailfrom() mailsubject() mailstats()
! mailstatus() mailtime() money() mtime() mwho()
! name() nattr() nearby() objmem() orflags()
! playermem() poll() ports() powers() quota()
! type() visible()
& Floating point functions
Floating point functions operate on floating point numbers. Most of
--- 109,120 ----
conn() controls() ctime() ctitle() cwho()
doing() elock() findable() flags() folderstats()
fullname() hasattr() hasattrp() hasflag() haspower()
! hastype() hidden() idle() iname() lock()
! lstats() lwho() mail() mailfrom() mailsubject()
! mailstats() mailstatus() mailtime() money() mtime()
! mwho() name() nattr() nearby() objmem()
! orflags() playermem() poll() ports() powers()
! quota() type() visible()
& Floating point functions
Floating point functions operate on floating point numbers. Most of
***************
*** 802,808 ****
> say [element(this|is|a|test|string,is,|)]
You say, "2"
& ELEMENTS()
! elements(<list of words>,<list of numbers>[,<delim>])
This function returns the words in <list of words> that are in the
positions specified by <list of numbers>. Optionally, a list delimiter
--- 802,808 ----
> say [element(this|is|a|test|string,is,|)]
You say, "2"
& ELEMENTS()
! elements(<list of words>,<list of numbers>[,<delim>][, <osep>])
This function returns the words in <list of words> that are in the
positions specified by <list of numbers>. Optionally, a list delimiter
***************
*** 944,951 ****
functions cannot be used on floating point numbers.
& FILTER()
& FILTERBOOL()
! filter([<obj>/]<attr>, <list>[,<delimiter>])
! filterbool([<obj>]/<attr>, <list>[, <delimiter>])
This function returns the elements of <list> for which a user-defined
function evaluates to "1", or to a boolean true value if filterbool()
--- 944,951 ----
functions cannot be used on floating point numbers.
& FILTER()
& FILTERBOOL()
! filter([<obj>/]<attr>, <list>[,<delimiter>][,<osep>])
! filterbool([<obj>]/<attr>, <list>[, <delimiter>][,<osep>])
This function returns the elements of <list> for which a user-defined
function evaluates to "1", or to a boolean true value if filterbool()
***************
*** 1093,1099 ****
>"[fullname(south)]
You say, "South;sout;sou;so;s"
! Related functions: NAME()
& FUNCTIONS()
functions()
--- 1093,1099 ----
>"[fullname(south)]
You say, "South;sout;sou;so;s"
! Related functions: NAME(), INAME()
& FUNCTIONS()
functions()
***************
*** 1125,1133 ****
& GRABALL()
& REGRABALL()
& REGRABALLI()
! graball(<string>,<pattern>[,<delim>])
! regraball(<string>,<regexp>[,<delim>])
! regraballi(<string>,<regexp>[,<delim>])
These functions work identically to the grab() and regrab()/regrabi()
functions, save that they return all matches, not just the first: They
--- 1125,1133 ----
& GRABALL()
& REGRABALL()
& REGRABALLI()
! graball(<string>,<pattern>[,<delim>][,<output seperator])
! regraball(<string>,<regexp>[,<delim>][,<output seperator])
! regraballi(<string>,<regexp>[,<delim>][,<output seperator])
These functions work identically to the grab() and regrab()/regrabi()
functions, save that they return all matches, not just the first: They
***************
*** 1263,1268 ****
--- 1263,1279 ----
<condition> is false.
See also: BOOLEAN VALUES, switch()
+ & INAME()
+ iname(<object>)
+
+ iname() returns the name of object <object>, as it would appear if
+ you were inside it. It is identical to name() except that if the
+ object has a NAMEFORMAT attribute, it is used.
+
+ You must be see_all, control <object>, or be inside it to use this
+ function.
+
+ See also: @nameformat, name(), fullname()
& INC()
inc(<integer>)
inc(<string-ending-in-integer>)
***************
*** 1533,1539 ****
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>])
--- 1544,1550 ----
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(), lvexits()
& LJUST()
ljust(<string>,<length>[,<fill>])
***************
*** 1708,1714 ****
--- 1719,1733 ----
num()), the db# of its parent, grandparent, greatgrandparent, etc.
The list will not, however, show parents of objects which the player
is not privileged to examine.
+ & LPLAYERS()
+ lplayers(<object>)
+ This function returns the dbrefs of all players, connected or not, in
+ <object>. DARK wizards aren't listed to mortals or those without the
+ see_all power. You must be in <object> or control it to use this
+ function.
+
+ See also: lvplayers(), lcon()
& LSEARCH()
& SEARCH()
& LSEARCHR()
***************
*** 1773,1778 ****
--- 1792,1818 ----
Takes two numbers, and returns 1 if and only if the first is less
than or equal to the second, and 0 otherwise.
+ & LVCON()
+ lvcon(<object>)
+
+ This function returns the dbrefs of all objects that are inside <object>
+ and visible (non-dark). You must be in <object> or control it to use this
+ function.
+
+ See also: lcon()
+ & LVEXITS()
+ lvexits(<room>)
+
+ This function returns the dbrefs of all visible (non-dark) exits from
+ <room>. You must be in the room or control it to use this function.
+
+ See also: lexits()
+ & LVPLAYERS
+ lvplayers(<object>)
+
+ This function returns the dbrefs of all connected and non-dark players
+ in an object. You must be in the object or control it to use this
+ function.
& LWHO()
lwho()
***************
*** 1835,1841 ****
<# sent> <# sent unread> <# sent cleared> <# sent bytes> <# received>
<# received unread> <# received cleared> <# received bytes>
& MAP()
! map([<object>/]<attribute>,<list>[,<delim>])
Maps a function onto a list.
--- 1875,1881 ----
<# sent> <# sent unread> <# sent cleared> <# sent bytes> <# received>
<# received unread> <# received cleared> <# received bytes>
& MAP()
! map([<object>/]<attribute>,<list>[,<delim>][, <osep>])
Maps a function onto a list.
***************
*** 1937,1959 ****
It can take any number of arguments.
& MIX()
! mix([<object>/]<attribute>,<list 1>,<list 2>[,<delim>])
This function is similar to MAP(), except that it takes the elements
! of both lists, one by one, and passes them to the user-defined function
! as %0 and %1, respectively, for elements of <list 1> and <list 2>.
! <delim> is used to separate elements; if it is not specified, it
! defaults to a space. The lists must have the same number of elements.
!
! Examples:
!
! > &add_nums me=[add(%0,%1)]
! > say [mix(add_nums,1 2 3 4 5,2 4 6 8 10)]
You say, "3 6 9 12 15"
!
! > say [mix(add_nums,1:3:5:7,0:2:4:6,:)]
! You say, "1:5:9:13"
& MOD()
& MODULO()
--- 1977,2005 ----
It can take any number of arguments.
& MIX()
! mix([<object>/]<attribute>,<list 1>,<list 2>[,...,<list 10>],[<delim>])
This function is similar to MAP(), except that it takes the elements
! of from two to ten lists, one by one, and passes them to the user-defined
! function as %0, %1, up to %9, respectively, for elements of <list 1> to
! <list 10>. If the lists are of different sizes, the shorter ones are padded
! with empty elements. <delim> is used to separate elements; if it is not
! specified, it defaults to a space. If using more than 2 lists, the last
! argument must be a delimiter.
!
! See HELP MIX2 for examples
! & MIX2
! Examples of mix():
! > &add_nums me=[add(%0, %1)]
! > say [mix(add_nums,1 2 3 4 5, 2 4 6 8 10)]
You say, "3 6 9 12 15"
! > &lengths me=[strlen(%0)] and [strlen(%1)].
! > say [mix(lengths, some random, words)]
! You say, "4 and 5. 6 and 0."
! > &add_nums me=[add(%0, %1, %2)]
! > say [mix(add_nums, 1:1:1, 2:2:2, 3:3:3, :)]
! You say, "6:6:6"
& MOD()
& MODULO()
***************
*** 2025,2040 ****
Returns the product of some numbers.
& MUNGE()
! munge([<object>/]<attribute>,<list 1>,<list 2>[,<delimiter>])
This function takes two lists of equal length. It passes the entirety of
! <list 1> to the user-defined function as %0. Then, this resulting list
! is matched with elements in <list 2>, and the rearranged <list 2> is
! returned. This is useful for doing things like sorting a list, and then
! returning the corresponding elements in the other list. If a resulting
! element from the user-defined function doesn't match an element in the
! original <list 1>, a corresponding element from <list 2> does not appear
! in the final result.
See HELP MUNGE2 for examples.
& MUNGE2
--- 2071,2086 ----
Returns the product of some numbers.
& MUNGE()
! munge([<object>/]<attribute>,<list 1>,<list 2>[,<delimiter>[,<osep>]])
This function takes two lists of equal length. It passes the entirety of
! <list 1> to the user-defined function as %0, and the delimiter as %1.
! Then, this resulting list is matched with elements in <list 2>, and
! the rearranged <list 2> is returned. This is useful for doing things
! like sorting a list, and then returning the corresponding elements in
! the other list. If a resulting element from the user-defined function
! doesn't match an element in the original <list 1>, a corresponding
! element from <list 2> does not appear in the final result.
See HELP MUNGE2 for examples.
& MUNGE2
***************
*** 2056,2063 ****
&sort attribute from the previous one, but unlike the other example,
it builds the list to sort on out of the list to return.
! > &online_players me=#3 #12 #234
! > say [munge(sort,iter(v(online_players),conn(##)),v(online_players))]
You say, "#12 #234 #3"
& MWHO()
mwho()
--- 2102,2109 ----
&sort attribute from the previous one, but unlike the other example,
it builds the list to sort on out of the list to return.
! > &faction_members me=#3 #12 #234
! > say [munge(sort,iter(v(faction_members),conn(##)),v(faction_members))]
You say, "#12 #234 #3"
& MWHO()
mwho()
***************
*** 2077,2083 ****
acts just like @name <object>=<new name>. Consequently, if renaming
a player, you must use the player's password or be God.
! Related functions: FULLNAME()
& NAND()
nand(<boolean>, <boolean>,...)
--- 2123,2129 ----
acts just like @name <object>=<new name>. Consequently, if renaming
a player, you must use the player's password or be God.
! Related functions: FULLNAME(), INAME()
& NAND()
nand(<boolean>, <boolean>,...)
***************
*** 2401,2407 ****
string, or the empty string if there are no spaces in the string.
See FIRST.
& REVWORDS()
! revwords(<list of words>[,<delimiter>])
This function reverses the order of words in a list.
--- 2447,2453 ----
string, or the empty string if there are no spaces in the string.
See FIRST.
& REVWORDS()
! revwords(<list of words>[,<delimiter>][, <output seperator>])
This function reverses the order of words in a list.
***************
*** 2530,2536 ****
you can make it an empty attribute. Use wipe() to clear attributes.
& SETDIFF()
! setdiff(<list1>, <list2>[, <delimiter>][, <sort type>])
This function returns the difference of two sets -- i.e., the
elements in <list1> that aren't in <list2>. The list that is
--- 2576,2582 ----
you can make it an empty attribute. Use wipe() to clear attributes.
& SETDIFF()
! setdiff(<list1>, <list2>[, <delimiter>][, <sort type>][, <osep>])
This function returns the difference of two sets -- i.e., the
elements in <list1> that aren't in <list2>. The list that is
***************
*** 2543,2549 ****
You say, "baz foo"
& SETINTER()
! setinter(<list1>, <list2>[, <delimiter>][, <sort type>])
This function returns the intersection of two sets -- i.e., the
elements that are in both <list1> and <list2>. The list that is
--- 2589,2595 ----
You say, "baz foo"
& SETINTER()
! setinter(<list1>, <list2>[, <delimiter>][, <sort type>][,<osep>])
This function returns the intersection of two sets -- i.e., the
elements that are in both <list1> and <list2>. The list that is
***************
*** 2612,2618 ****
Object says "foo"
& SETUNION()
! setunion(<list1>, <list2>[, <delimiter>][, <sort type>])
This function returns the union of two sets -- i.e., all the
elements of both <list1> and <list2>, minus any duplicate
--- 2658,2664 ----
Object says "foo"
& SETUNION()
! setunion(<list1>, <list2>[, <delimiter>][, <sort type>][, <osep>])
This function returns the union of two sets -- i.e., all the
elements of both <list1> and <list2>, minus any duplicate
***************
*** 2639,2645 ****
Performs a rightwards bit-shift on <number>, shifting it <count> times.
This is equivalent to div(<number>,power(2,<count>), but much faster.
& SHUFFLE()
! shuffle(<word1> <word2> <word3> <...wordN>[,<delimiter>])
This function shuffles the order of words in a list, returning a
random permutation of its elements. "[shuffle(foo bar baz gleep)]"
--- 2685,2691 ----
Performs a rightwards bit-shift on <number>, shifting it <count> times.
This is equivalent to div(<number>,power(2,<count>), but much faster.
& SHUFFLE()
! shuffle(<word1> <word2> <word3> <...wordN>[,<delimiter>][,<osep>])
This function shuffles the order of words in a list, returning a
random permutation of its elements. "[shuffle(foo bar baz gleep)]"
***************
*** 2679,2685 ****
the resulting list; it defaults to <delimiter>.
& SORTBY()
! sortby([<obj>/]<attrib>,<list>[,<delimiter>])
This sorts an arbitrary list according to the u-function <obj>/<attrib>.
This u-function should compare two arbitrary elements, %0 and %1, and
--- 2725,2731 ----
the resulting list; it defaults to <delimiter>.
& SORTBY()
! sortby([<obj>/]<attrib>,<list>[,<delimiter>][, <output seperator>])
This sorts an arbitrary list according to the u-function <obj>/<attrib>.
This u-function should compare two arbitrary elements, %0 and %1, and
***************
*** 3054,3060 ****
You say, "00d 00h 05m 01s"
& TRIM()
! trim(<string>[,<character to trim>[,<trim style>]])
This function trims leading and trailing characters from a string.
The character trimmed is normally a space; if a second argument is
--- 3100,3106 ----
You say, "00d 00h 05m 01s"
& TRIM()
! trim(<string>[,<character to trim>][,<trim style>])
This function trims leading and trailing characters from a string.
The character trimmed is normally a space; if a second argument is
*** 1_7_4.187/game/txt/hlp/pennflag.hlp Fri, 03 Aug 2001 11:00:30 -0500 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 600)
--- 1_7_5.36(w)/game/txt/hlp/pennflag.hlp Tue, 04 Sep 2001 09:01:59 -0500 dunemush (pennmush/17_pennflag.h 1.1.1.1.1.2.1.1.1.2.1.1.1.2.1.1.2.1.2.2 600)
***************
*** 44,50 ****
O - Opaque P - Player (type) Q - Quiet
R - Room (type) S - Sticky U - Unfindable
V - Visual W - Wizard X - Safe
! Z - Zone, Z_Tel
a - Audible b - Debug c - Connected, Cloudy
d - Destroy_Ok e - Enter_Ok f - Force_White
--- 44,50 ----
O - Opaque P - Player (type) Q - Quiet
R - Room (type) S - Sticky U - Unfindable
V - Visual W - Wizard X - Safe
! Z - Shared, Z_Tel
a - Audible b - Debug c - Connected, Cloudy
d - Destroy_Ok e - Enter_Ok f - Force_White
***************
*** 346,355 ****
although they are automatically considered to be TRUST.
The normal criteria for object control still apply.
! For zoned objects, the TRUST flag protects against an object from
! being controlled by anything not owned by its owner. This prevents
! someone who controls a zone from doing things like @forcing an
! TRUST object to @force its owner.
& JUDGE
& JURY_OK
Flags: JUDGE and JURY_OK (players)
--- 346,355 ----
although they are automatically considered to be TRUST.
The normal criteria for object control still apply.
! The TRUST flag protects against an object from being controlled by
! anything not owned by its owner. This prevents someone who controls a
! zone master from doing things like @forcing an TRUST object to @force its
! owner.
& JUDGE
& JURY_OK
Flags: JUDGE and JURY_OK (players)
***************
*** 665,680 ****
This flag is intended for use in puzzle rooms and IC areas.
See also: ZONES, ZONE MASTERS, @chzone, ZONE MASTER ROOMS
& ZONE
! Flag: ZONE (players)
! The ZONE flag is used to designate a player as a Zone Master.
Objects owned by a Zone Master are controlled by anyone who passes the
! player's zone lock. This allows zoning based on ownership rather than
! on the zone field and is more secure, although it does not allow for
! the "local globals" ability of standard zones.
! See also: ZONES, ZONE MASTERS, @chzone, ZONE MASTER ROOMS
& LISTEN_PARENT
Flag: LISTEN_PARENT (things, rooms)
--- 665,679 ----
This flag is intended for use in puzzle rooms and IC areas.
See also: ZONES, ZONE MASTERS, @chzone, ZONE MASTER ROOMS
+ & SHARED
& ZONE
! Flag: SHARED (players)
! The SHARED flag is used to designate a player as a Zone Master.
Objects owned by a Zone Master are controlled by anyone who passes the
! player's zone lock.
! See also: ZONE MASTERS
& LISTEN_PARENT
Flag: LISTEN_PARENT (things, rooms)
*** 1_7_4.187/game/txt/hlp/penncmd.hlp Wed, 07 Nov 2001 19:38:52 -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 600)
--- 1_7_5.36(w)/game/txt/hlp/penncmd.hlp Fri, 09 Nov 2001 13:24:22 -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.2 600)
***************
*** 1490,1496 ****
See also: @list
& @link
! @link <object>=<dbref | here | home | variable>
Links <object> to either a room or a thing. If a thing or player is
linked, that sets the object's HOME. If a room is linked, that sets
--- 1490,1496 ----
See also: @list
& @link
! @link[/preserve] <object>=<dbref | here | home | variable>
Links <object> to either a room or a thing. If a thing or player is
linked, that sets the object's HOME. If a room is linked, that sets
***************
*** 1503,1514 ****
currently unlinked, and you pass its @lock/link, you may link it even
if you do not own it. In this case, the exit will be @chowned to you
(and set HALT). Linking an exit may have a cost (usually 1 penny.)
If the destination of an exit is "variable", its destination is
determined at the time of travel by the attribute DESTINATION on the
exit, which is evaluated like a U()-function. You must have permission
to link to whatever the DESTINATION evaluates to in order for the exit
! to work.
LINK_OK objects can also be used as semaphores, and any object can be
@parented to them.
--- 1503,1517 ----
currently unlinked, and you pass its @lock/link, you may link it even
if you do not own it. In this case, the exit will be @chowned to you
(and set HALT). Linking an exit may have a cost (usually 1 penny.)
+ The Wizard-only /preserve switch can be used to link without @chowning
+ and HALTing the exit.
If the destination of an exit is "variable", its destination is
determined at the time of travel by the attribute DESTINATION on the
exit, which is evaluated like a U()-function. You must have permission
to link to whatever the DESTINATION evaluates to in order for the exit
! to work. If there's no DESTINATION attribute, the EXITTO attribute
! is also tried.
LINK_OK objects can also be used as semaphores, and any object can be
@parented to them.
***************
*** 1556,1561 ****
--- 1559,1579 ----
> Recorder records: Whee!
See also: LISTENING, @ahear, @amhear, @aahear
+ & NEW LOCKS
+ In PennMUSH 1.7.5, several new features have been added to locks.
+
+ Locks can now be inherited off of parents, just like attributes.
+ By default, locks are set no_inherit, but this flag can be cleared.
+
+ There are now lock flags including ones to control inheritance,
+ copying in a @clone, who can set them, and so on. Details are
+ in HELP @LSET.
+
+ Indirect lock keys (@#1234) can now refer to other lock names on
+ objects, not just a lock of the same name. See HELP @LOCK4.
+
+ There is a new lock key for testing flags and object types.
+ See HELP @LOCK9 for more information.
& LOCKING
& LOCKS
& @lock
***************
*** 1577,1582 ****
--- 1595,1603 ----
You can specify <object> and <key> as either the name of an object in
the immediate area, a DBREF number, "me", or "here".
+ Many new features have recently been added to locks. See HELP NEW LOCKS
+ for details.
+
(continued in help @lock2)
& @lock2
You can lock an object in several different ways. The simplest lock is to
***************
*** 1622,1628 ****
another object (very useful in setting channel locks; see help @clock):
@lock Second Puppet = @First Puppet
This locks the object "Second Puppet" to whatever the object
! "First Puppet" is locked to.
There are also some more complex locks called attribute and evaluation
locks. In addition, you can make complex locks (combining several types
--- 1643,1653 ----
another object (very useful in setting channel locks; see help @clock):
@lock Second Puppet = @First Puppet
This locks the object "Second Puppet" to whatever the object
! "First Puppet" is locked to. Normally, the lock type that is checked
! is the same as the lock on the first. You can specify a different
! lock type with @object/LOCKNAME. For example:
! @lock Second Puppet = @First Puppet/Use
! Second Puppet's basic lock now checks First Puppet's use lock.
There are also some more complex locks called attribute and evaluation
locks. In addition, you can make complex locks (combining several types
***************
*** 1701,1706 ****
--- 1726,1749 ----
Since the value in the @lock is 1, only objects with the PUPPET flag
will be able to pass this lock.
+ (continued in help @lock9)
+ & @lock9
+ You can also test for set flags in a lock directly, without using an
+ evaluation lock, with this format:
+
+ @lock <object>=flag^<flag>
+
+ Object types can also be checked, like so:
+
+ @lock <object>=type^<type>
+
+ These locks act like the object the lock is on does a hasflag(%#, <flag>)
+ or hastype(%#, <type>), succeeding if the flag is set.
+
+ For example,
+
+ @lock/use Admin Commands=flag^wizard|flag^royalty
+
See also: locktypes, @clock
& locktypes
& locklist
***************
*** 1708,1713 ****
--- 1751,1758 ----
& lock list
Your MUSH will almost certainly support these standard lock types:
+ @lock/basic Who can pick up the player/object, or go through
+ the exit.
@lock/enter Who can enter the player/object
@lock/teleport Who can teleport to the room
@lock/use Who can use the object
***************
*** 1737,1743 ****
@elock is an abbreviation for @lock/enter
@ulock is an abbreviation for @lock/use
! See also: @lock, @clock, FAILURE
& @log
@log[/<switch>] <message>
--- 1782,1802 ----
@elock is an abbreviation for @lock/enter
@ulock is an abbreviation for @lock/use
! See also: @lock, @lset, @clock, FAILURE
! & @lset
! @lset <object>/<lock type>=[!]<flag>
!
! This commands sets or clears flags on locks.
! Valid flags include:
!
! visual (v) This lock can be seen even if the object it's on
! isn't visual.
! no_inherit (i) This lock isn't inherited off of parents. All locks
! are set no_inherit by default.
! no_clone (c) This lock isn't copied by @clone.
! wizard (w) This lock can only be set by wizards.
! locked (+) This lock can only be set by the owner of the lock.
!
& @log
@log[/<switch>] <message>
***************
*** 3359,3371 ****
square brackets, in front of the message, in a fashion similar to
the way NOSPOOF flags emits.
! Page takes 3 switches: /list, /blind, and /noeval.
The /list and /blind switches provide two different ways of handling
pages to lists of players. With /list, each paged player sees the
list of who was paged, and the paging player is notified only once.
With /blind, it's as if each player was individually paged.
The default list behavior is set by the blind_page @config option.
The /noeval switch prevents the MUSH from evaluating the message.
See also: @lock, @alias, pose, :, ;, HAVEN, NOSPOOF, FLAGS
& :
--- 3418,3432 ----
square brackets, in front of the message, in a fashion similar to
the way NOSPOOF flags emits.
! Page takes four switches: /list, /blind, /noeval and /port.
The /list and /blind switches provide two different ways of handling
pages to lists of players. With /list, each paged player sees the
list of who was paged, and the paging player is notified only once.
With /blind, it's as if each player was individually paged.
The default list behavior is set by the blind_page @config option.
The /noeval switch prevents the MUSH from evaluating the message.
+ The /port switch is admin-only, and will page a port descriptor directly,
+ including connections that have not yet logged into a player.
See also: @lock, @alias, pose, :, ;, HAVEN, NOSPOOF, FLAGS
& :
*** 1_7_4.187/game/txt/hlp/pennchat.hlp Sat, 28 Jul 2001 09:05:37 -0500 dunemush (pennmush/19_pennchat.h 1.2.1.4.1.1 600)
--- 1_7_5.36(w)/game/txt/hlp/pennchat.hlp Tue, 04 Sep 2001 09:02:00 -0500 dunemush (pennmush/19_pennchat.h 1.2.1.4.1.2 600)
***************
*** 97,126 ****
If you want to remain on a channel but not receive any messages
on the channel, use @channel/gag <channel>=yes. To resume hearing,
use @channel/gag <channel>=no. If you disconnect, the channel
! will be automatically ungagged for you.
See "help @channel4" for more.
& @channel4
! @channel/add <channel> [= <access>]
@channel/delete <channel>
@channel/desc <channel> = <desc>
@channel/rename <channel> = <new name>
! The "add" switch creates a new channel. On some MUSHes, any player
can create a new channel, though there will be a cost associated
! with creation (see @config chat). The possible access specifications
! are "player" (players may use the channel), "object" (objects may
! use the channel), "admin" (you must be royalty to use the channel),
! "wizard" (you must be a wizard to use the channel), "quiet" (the
! channel will not broadcast connection messages), "open" (you may
! speak on the channel without joining it) and "hide_ok"
! (users can hide from the who list). Combinations are allowed.
! If none are given, "player" is used as the default.
! @channel/delete allows a Wizard or the channel's owner to
! delete the channel.
@channel/desc sets the channel's description, shown on @channel/what.
! Descriptions are limited to 256 characters.
@channel/rename is used to rename a channel.
See "help @channel5" for more. See also "help @clock".
--- 97,127 ----
If you want to remain on a channel but not receive any messages
on the channel, use @channel/gag <channel>=yes. To resume hearing,
use @channel/gag <channel>=no. If you disconnect, the channel
! will be automatically ungagged for you. If the channel does not
! have the "open" priv, you can not speak on it while you are gagged.
See "help @channel4" for more.
& @channel4
! @channel/add <channel> [= <priv>]
@channel/delete <channel>
@channel/desc <channel> = <desc>
@channel/rename <channel> = <new name>
! @channel/add creates a new channel. On some MUSHes, any player
can create a new channel, though there will be a cost associated
! with creation (see @config chat). Possible <priv> specifications:
! * "player" - players may use the channel
! * "object" - objects may use the channel
! * "admin" - only royalty/wizards/chat_privs may use the channel
! * "wizard" - only wizards may use the channel
! * "quiet" - channel will not show connection messages
! * "open" - you may speak even if you aren't listening to the channel
! * "hide_ok" - you may hide from the channel who list.
! Specifications may be combined, space-separated. Default is "player"
! @channel/delete removes a channel. You must own it or be Wizard.
@channel/desc sets the channel's description, shown on @channel/what.
! Descriptions are limited to 256 characters.
@channel/rename is used to rename a channel.
See "help @channel5" for more. See also "help @clock".
*** 1_7_4.187/game/data/minimal.db Sat, 15 Apr 2000 10:56:00 -0500 dunemush (pennmush/38_minimal.db 1.1 600)
--- 1_7_5.36(w)/game/data/minimal.db Fri, 11 May 2001 17:15:30 -0500 dunemush (pennmush/38_minimal.db 1.2 600)
***************
*** 1,66 ****
! +V1538
~3
!0
! Room Zero
-1
1
-1
-1
-1
-
-
-
1
-1
0
- 32768
0
0
! ]DESCRIBE^1^32
! You are in Room Zero. It's very dark here.
! ]OSUCCESS^1^33
! is briefly visible through the mist.
<
!1
! One
0
-1
0
-1
-1
!
!
!
1
-1
0
! 32787
512
0
! ]DESCRIBE^1^32
! You see Number One.
! ]LAST^1^20
! Sun Jan 17 18:50:49 1993
! ]LASTSITE^1^21
! disco.seas.upenn.edu
<
!2
! Master Room
-1
-1
-1
-1
-1
-
-
-
1
-1
0
! 32768
8
0
! ]DESCRIBE^1^32
! This is the master room. Any exit in here is considered global. The same is true to objects with $-commands placed here. The number of objects and exits in this room should be kept to a minimum.
<
***END OF DUMP***
--- 1,66 ----
! +V4191746
~3
!0
! "Room Zero"
-1
1
-1
-1
-1
1
-1
0
0
0
! 0
! ]DESCRIBE^1^544
! "You are in Room Zero. It's very dark here."
! ]OSUCCESS^1^32
! "is briefly visible through the mist."
<
!1
! "One"
0
-1
0
-1
-1
! _Enter|(=1)
! _Use|(=1)
! _Basic|(=1)
1
-1
0
! 19
512
0
! ]DESCRIBE^1^544
! "You see Number One."
! ]LAST^1^532
! "Fri May 11 15:27:28 2001"
! ]LASTFAILED^1^20
! " "
! ]LASTIP^1^16
! "127.0.0.1"
! ]LASTSITE^1^20
! "localhost"
! ]MAILCURF^1^52
! "0"
<
!2
! "Master Room"
-1
-1
-1
-1
-1
1
-1
0
! 0
8
0
! ]DESCRIBE^1^544
! "This is the master room. Any exit in here is considered global. The same is true to objects with $-commands placed here. The number of objects and exits in this room should be kept to a minimum."
<
***END OF DUMP***
*** 1_7_4.187/game/mushcnf.dst Fri, 07 Sep 2001 08:13:44 -0500 dunemush (pennmush/41_mushcnf.ds 1.1.1.19.1.1.1.2.1.1 600)
--- 1_7_5.36(w)/game/mushcnf.dst Thu, 08 Nov 2001 18:34:07 -0600 dunemush (pennmush/41_mushcnf.ds 1.1.1.19.1.1.1.2.1.4 600)
***************
*** 125,136 ****
# How much MUSH money do players get when they're created?
starting_money 150
! # How much MUSH money do players get each day they log in?
paycheck 50
! # What's the most money anyone can have?
max_pennies 100000
# If quotas are enforced, how much players get by default
starting_quota 20
--- 125,142 ----
# How much MUSH money do players get when they're created?
starting_money 150
! # How much MUSH money do non-guest players get each day they log in?
paycheck 50
! # How much MUSH money do guests get each day they log in?
! guest_paycheck 0
!
! # What's the most money anyone but guests can have?
max_pennies 100000
+ # What's the most money guests can have?
+ max_guest_pennies 1000
+
# If quotas are enforced, how much players get by default
starting_quota 20
***************
*** 313,319 ****
restrict_command anews admin
### Config directive for IDENT.
! ### If you want to do ident (RFC1143) looksup, set use_ident to "yes"
### and select an ident_timeout to determine how long the MUSH
### should wait for a response, in seconds. If you're using
### INFO_SLAVE (in options.h), this is how long the info_slave waits.
--- 319,325 ----
restrict_command anews admin
### Config directive for IDENT.
! ### If you want to do ident (RFC1143) lookups, set use_ident to "yes"
### and select an ident_timeout to determine how long the MUSH
### should wait for a response, in seconds. If you're using
### INFO_SLAVE (in options.h), this is how long the info_slave waits.
***************
*** 407,412 ****
--- 413,424 ----
# SAFE absolutely prevents destruction, even with @nuke
really_safe yes
+ # With this turned on, ZMRs and ZMOs are not included in control
+ # checking. Only Zone Master Players are. The other zone types are
+ # still used for command-matching, just not for control purposes.
+ # Highly recomended.
+ zone_control_zmp_only yes
+
# When a player is nuked, his SAFE objects are @chowned to God.
# If this is set to "yes", his non-safe objects are destroyed
# If this is set to "no", they are chowned to God
***************
*** 460,466 ****
# PennMUSH's trim function has been:
# trim(<string>[,<character to trim>[,<trim style>]])
# Should we emulate TinyMUSH? [+ for new MUSHes]
! tiny_trim_fun no
# show attributes in TinyMUSH format (FOO(#4v): test) rather than
# PennMUSH format (FOO [#4v]: test)?
--- 472,478 ----
# PennMUSH's trim function has been:
# trim(<string>[,<character to trim>[,<trim style>]])
# Should we emulate TinyMUSH? [+ for new MUSHes]
! tiny_trim_fun yes
# show attributes in TinyMUSH format (FOO(#4v): test) rather than
# PennMUSH format (FOO [#4v]: test)?
*** 1_7_4.187/config_h.SH Sat, 30 Jun 2001 08:59:12 -0500 dunemush (pennmush/b/17_config_h.S 1.17.1.2.1.1 660)
--- 1_7_5.36(w)/config_h.SH Mon, 16 Jul 2001 14:35:43 -0500 dunemush (pennmush/b/17_config_h.S 1.17.1.2.1.2 660)
***************
*** 676,681 ****
--- 676,687 ----
*/
#$d_strcoll HAS_STRCOLL /**/
+ /* HAS_STRXFRM:
+ * This symbol, if defined, indicates that the strxfrm routine is
+ * available to transform strings using collating information.
+ */
+ #$d_strxfrm HAS_STRXFRM /**/
+
/* HAS_TCL:
* This symbol, if defined, means we have the tcl library
*/
*** 1_7_4.187/src/wiz.c Thu, 08 Nov 2001 14:56:16 -0600 dunemush (pennmush/b/23_wiz.c 1.44.1.1.1.1.1.2.1.7.1.1 660)
--- 1_7_5.36(w)/src/wiz.c Wed, 14 Nov 2001 13:07:40 -0600 dunemush (pennmush/b/23_wiz.c 1.44.1.1.1.1.1.2.1.7.1.3 660)
***************
*** 72,82 ****
#include <sys/file.h>
#endif
extern int reserved;
- #else
- void Win32stats(dbref player);
- extern void compress_stats(long *entries,
- long *mem_used,
- long *total_uncompressed, long *total_compressed);
#endif
int tport_dest_ok _((dbref player, dbref victim, dbref dest));
--- 72,77 ----
***************
*** 692,705 ****
si->total - si->garbage, si->rooms, si->exits, si->things,
si->players));
}
- #ifdef MEM_CHECK
- if (God(player))
- list_mem_check(player);
- #endif
- #ifdef WIN32
- if (Wizard(player))
- Win32stats(player);
- #endif
}
void
--- 687,692 ----
***************
*** 752,759 ****
/* boot by descriptor */
victim = find_player_by_desc(atoi(name));
if (victim == NOTHING) {
! notify(player, "There is no one connected on that descriptor.");
! return;
}
break;
case 0:
--- 739,750 ----
/* 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.");
! return;
! } else
! victim = AMBIGUOUS;
}
break;
case 0:
***************
*** 802,809 ****
do_log(LT_WIZ, player, victim, "*** BOOT ***");
if (flag == 2)
notify(player, T("You boot an idle self."));
else {
! notify(player, tprintf(T("You booted %s off!"), Name(victim)));
notify(victim, T("You are politely shown to the door."));
}
boot_desc(d);
--- 793,802 ----
do_log(LT_WIZ, player, victim, "*** BOOT ***");
if (flag == 2)
notify(player, T("You boot an idle self."));
+ else if (victim == AMBIGUOUS)
+ notify_format(player, T("You booted unconnected port %s!"), name);
else {
! notify_format(player, T("You booted %s off!"), Name(victim));
notify(victim, T("You are politely shown to the door."));
}
boot_desc(d);
***************
*** 1112,1118 ****
int raw_search _((dbref player, const char *owner, const char *class,
! const char *restrict, const char *start, const char *stop,
dbref **result, PE_Info * pe_info));
void
--- 1105,1111 ----
int raw_search _((dbref player, const char *owner, const char *class,
! const char *restriction, const char *start, const char *stop,
dbref **result, PE_Info * pe_info));
void
***************
*** 1325,1335 ****
/* Does the actual searching */
int
! raw_search(player, owner, class, restrict, start, stop, result, pe_info)
dbref player;
const char *owner;
const char *class;
! const char *restrict;
const char *start;
const char *stop;
dbref **result;
--- 1318,1328 ----
/* Does the actual searching */
int
! raw_search(player, owner, class, restriction, start, stop, result, pe_info)
dbref player;
const char *owner;
const char *class;
! const char *restriction;
const char *start;
const char *stop;
dbref **result;
***************
*** 1386,1400 ****
sclass = S_OWNER;
} else if (string_prefix("type", class)) {
sclass = S_TYPE;
! if (string_prefix("things", restrict) || string_prefix("objects", restrict)) {
restrict_type = TYPE_THING;
! } else if (string_prefix("rooms", restrict)) {
restrict_type = TYPE_ROOM;
! } else if (string_prefix("exits", restrict)) {
restrict_type = TYPE_EXIT;
! } else if (string_prefix("rooms", restrict)) {
restrict_type = TYPE_ROOM;
! } else if (string_prefix("players", restrict)) {
restrict_type = TYPE_PLAYER;
} else {
notify(player, T("Unknown type."));
--- 1379,1394 ----
sclass = S_OWNER;
} else if (string_prefix("type", class)) {
sclass = S_TYPE;
! if (string_prefix("things", restriction)
! || string_prefix("objects", restriction)) {
restrict_type = TYPE_THING;
! } else if (string_prefix("rooms", restriction)) {
restrict_type = TYPE_ROOM;
! } else if (string_prefix("exits", restriction)) {
restrict_type = TYPE_EXIT;
! } else if (string_prefix("rooms", restriction)) {
restrict_type = TYPE_ROOM;
! } else if (string_prefix("players", restriction)) {
restrict_type = TYPE_PLAYER;
} else {
notify(player, T("Unknown type."));
***************
*** 1415,1436 ****
sclass = S_NAME;
} else if (string_prefix("parent", class)) {
sclass = S_PARENT;
! if (!is_dbref(restrict)) {
notify(player, T("Unknown parent."));
return -1;
}
! restrict_obj = parse_dbref(restrict);
if (!GoodObject(restrict_obj)) {
notify(player, T("Unknown parent."));
return -1;
}
} else if (string_prefix("zone", class)) {
sclass = S_ZONE;
! if (!is_dbref(restrict)) {
notify(player, T("Unknown zone."));
return -1;
}
! restrict_obj = parse_dbref(restrict);
if (!GoodObject(restrict_obj)) {
notify(player, T("Unknown zone."));
return -1;
--- 1409,1430 ----
sclass = S_NAME;
} else if (string_prefix("parent", class)) {
sclass = S_PARENT;
! if (!is_dbref(restriction)) {
notify(player, T("Unknown parent."));
return -1;
}
! restrict_obj = parse_dbref(restriction);
if (!GoodObject(restrict_obj)) {
notify(player, T("Unknown parent."));
return -1;
}
} else if (string_prefix("zone", class)) {
sclass = S_ZONE;
! if (!is_dbref(restriction)) {
notify(player, T("Unknown zone."));
return -1;
}
! restrict_obj = parse_dbref(restriction);
if (!GoodObject(restrict_obj)) {
notify(player, T("Unknown zone."));
return -1;
***************
*** 1452,1458 ****
restrict_type = TYPE_PLAYER;
} else if (string_prefix("powers", class)) {
sclass = S_POWER;
! restrict_flags = find_power(restrict);
if (restrict_flags == -1) {
notify(player, T("No such power to search for."));
return -1;
--- 1446,1452 ----
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;
***************
*** 1463,1470 ****
* restrict_type while setting them
*/
sclass = S_FLAG;
! if (restrict && *restrict &&
! !convert_flags(player, (char *) restrict, &restrict_flags,
&restrict_toggles, &restrict_type))
return -1;
} else {
--- 1457,1464 ----
* restrict_type while setting them
*/
sclass = S_FLAG;
! if (restriction && *restriction &&
! !convert_flags(player, (char *) restriction, &restrict_flags,
&restrict_toggles, &restrict_type))
return -1;
} else {
***************
*** 1550,1556 ****
for (n = low; n < high; n++) {
if ((restrict_owner == ANY_OWNER || Owner(n) == restrict_owner)
&& (restrict_type == NOTYPE || Typeof(n) == restrict_type)
! && string_match(Name(n), restrict)) {
if (nresults >= result_size) {
dbref *newresults;
result_size *= 2;
--- 1544,1550 ----
for (n = low; n < high; n++) {
if ((restrict_owner == ANY_OWNER || Owner(n) == restrict_owner)
&& (restrict_type == NOTYPE || Typeof(n) == restrict_type)
! && string_match(Name(n), restriction)) {
if (nresults >= result_size) {
dbref *newresults;
result_size *= 2;
***************
*** 1577,1583 ****
&& (restrict_type == NOTYPE || Typeof(n) == restrict_type)))
continue;
! ebuf1 = replace_string("##", tprintf("#%d", n), restrict);
ebuf2 = ebuf1;
bp = tbuf1;
process_expression(tbuf1, &bp, &ebuf2, player, player, player,
--- 1571,1577 ----
&& (restrict_type == NOTYPE || Typeof(n) == restrict_type)))
continue;
! ebuf1 = replace_string("##", tprintf("#%d", n), restriction);
ebuf2 = ebuf1;
bp = tbuf1;
process_expression(tbuf1, &bp, &ebuf2, player, player, player,
***************
*** 1901,1908 ****
}
for (l = Locks(thing); l; l = l->next) {
k += sizeof(lock_list);
- if (!match_lock(l->type))
- k += strlen(l->type) + 1;
k += sizeof_boolexp(l->key);
}
return k;
--- 1895,1900 ----
***************
*** 1963,2020 ****
}
- #ifdef WIN32
- void
- Win32stats(dbref player)
- { /* written by NJG */
- MEMORYSTATUS memstat;
- double mem;
- #if (COMPRESSION_TYPE == 3)
- long items, used, total_comp, total_uncomp;
- double percent;
- #endif
- memstat.dwLength = sizeof(memstat);
- GlobalMemoryStatus(&memstat);
- notify(player, "---------- Windows memory usage ------------");
- notify(player, tprintf("%10ld %% memory in use", memstat.dwMemoryLoad));
- mem = memstat.dwAvailPhys / 1024.0 / 1024.0;
- notify(player, tprintf("%10.3f Mb free physical memory", mem));
- mem = memstat.dwTotalPhys / 1024.0 / 1024.0;
- notify(player, tprintf("%10.3f Mb total physical memory", mem));
- mem = memstat.dwAvailPageFile / 1024.0 / 1024.0;
- notify(player, tprintf("%10.3f Mb available in the paging file ", mem));
- mem = memstat.dwTotalPageFile / 1024.0 / 1024.0;
- notify(player, tprintf("%10.3f Mb total paging file size", mem));
- #if (COMPRESSION_TYPE == 3)
- compress_stats(&items, &used, &total_uncomp, &total_comp);
- notify(player, "---------- Internal attribute compression ----------");
- notify(player,
- tprintf("%10ld compression table items used, "
- "taking %ld bytes.", items, used));
- notify(player,
- tprintf("%10ld bytes in text before compression. ", total_uncomp));
- notify(player,
- tprintf("%10ld bytes in text AFTER compression. ", total_comp));
- percent = ((float) (total_comp)) / ((float) total_uncomp) * 100.0;
- notify(player,
- tprintf
- ("%10.0f %% text compression ratio (lower is better). ", percent));
- percent =
- ((float) (total_comp + used + (32768L * sizeof(char *)))) /
- ((float) total_uncomp) * 100.0;
- notify(player,
- tprintf("%10.0f %% OVERALL compression ratio (lower is better). ",
- percent));
- notify(player,
- tprintf(T
- (" (Includes table items, and table of words pointers of %ld bytes)"),
- 32768L * sizeof(char *)));
- if (percent >= 100.0)
- notify(player,
- " " "(Compression ratio improves with larger database)");
- #endif
- } /* end of calc_memory_used */
- #endif
/*
* ---------------------------------------------------------------------------
* do_reboot: Reboots the game w/o disconnecting players.
--- 1955,1960 ----
*** 1_7_4.187/src/wild.c Wed, 26 Sep 2001 13:35:01 -0500 dunemush (pennmush/b/24_wild.c 1.11.1.1.1.1 660)
--- 1_7_5.36(w)/src/wild.c Wed, 14 Nov 2001 13:07:40 -0600 dunemush (pennmush/b/24_wild.c 1.11.1.1.1.2 660)
***************
*** 473,485 ****
if (is_number(s) && is_number(d))
return (parse_number(s) < parse_number(d));
else
! return (strcmp(s, d) < 0);
case '<':
s++;
if (is_number(s) && is_number(d))
return (parse_number(s) > parse_number(d));
else
! return (strcmp(s, d) > 0);
}
return quick_wild_new(s, d, cs);
--- 473,485 ----
if (is_number(s) && is_number(d))
return (parse_number(s) < parse_number(d));
else
! return (strcoll(s, d) < 0);
case '<':
s++;
if (is_number(s) && is_number(d))
return (parse_number(s) > parse_number(d));
else
! return (strcoll(s, d) > 0);
}
return quick_wild_new(s, d, cs);
*** 1_7_4.187/src/unparse.c Tue, 15 May 2001 15:59:50 -0500 dunemush (pennmush/b/28_unparse.c 1.16.1.1 660)
--- 1_7_5.36(w)/src/unparse.c Wed, 14 Nov 2001 13:07:40 -0600 dunemush (pennmush/b/28_unparse.c 1.16.1.3 660)
***************
*** 105,148 ****
case HOME:
return T("*HOME*");
default:
! if (use_nameformat) {
! ATTR *a;
! char *wsave[10], *rsave[NUMQ];
! char *arg, *bp;
! char const *sp, *save;
! int j;
! a = atr_get(loc, "NAMEFORMAT");
! if (a) {
! arg = (char *) mush_malloc(BUFFER_LEN, "string");
! if (!arg)
! panic("Unable to allocate memory in real_unparse");
! save_global_regs("real_unparse", rsave);
! for (j = 0; j < 10; j++) {
! wsave[j] = wenv[j];
! wenv[j] = NULL;
! }
! for (j = 0; j < NUMQ; j++)
! renv[j][0] = '\0';
! strcpy(arg, unparse_dbref(loc));
! wenv[0] = arg;
! sp = save = safe_uncompress(a->value);
! bp = tbuf1;
! process_expression(tbuf1, &bp, &sp, loc, player, player,
! PE_DEFAULT, PT_DEFAULT, NULL);
! *bp = '\0';
! free((Malloc_t) save);
! for (j = 0; j < 10; j++) {
! wenv[j] = wsave[j];
! }
! restore_global_regs("real_unparse", rsave);
! mush_free((Malloc_t) arg, "string");
! got_nameformat = 1;
! } else {
! /* No @nameformat attribute */
! strcpy(tbuf1, Name(loc));
! }
} else {
! /* Not using @nameformat */
strcpy(tbuf1, Name(loc));
}
if (IsExit(loc) && obey_myopic) {
--- 105,115 ----
case HOME:
return T("*HOME*");
default:
! if (use_nameformat && nameformat(player, loc, buf)) {
! strcpy(tbuf1, buf);
! got_nameformat = 1;
} else {
! /* Not using @nameformat or couldn't get one */
strcpy(tbuf1, Name(loc));
}
if (IsExit(loc) && obey_myopic) {
***************
*** 170,175 ****
--- 137,190 ----
} else
return tbuf1;
}
+ }
+ }
+
+ /* The name of loc as seen by a player inside it if nameformat is set */
+ /* This function needs to avoid using a static buffer, so pass in
+ * a pointer to an allocated BUFFER_LEN array
+ */
+ int
+ nameformat(player, loc, tbuf1)
+ dbref player;
+ dbref loc;
+ char *tbuf1;
+ {
+ ATTR *a;
+ char *wsave[10], *rsave[NUMQ];
+ char *arg, *bp;
+ char const *sp, *save;
+
+ int j;
+ a = atr_get(loc, "NAMEFORMAT");
+ if (a) {
+ arg = (char *) mush_malloc(BUFFER_LEN, "string");
+ if (!arg)
+ panic("Unable to allocate memory in nameformat");
+ save_global_regs("nameformat", rsave);
+ for (j = 0; j < 10; j++) {
+ wsave[j] = wenv[j];
+ wenv[j] = NULL;
+ }
+ for (j = 0; j < NUMQ; j++)
+ renv[j][0] = '\0';
+ strcpy(arg, unparse_dbref(loc));
+ wenv[0] = arg;
+ sp = save = safe_uncompress(a->value);
+ bp = tbuf1;
+ process_expression(tbuf1, &bp, &sp, loc, player, player,
+ PE_DEFAULT, PT_DEFAULT, NULL);
+ *bp = '\0';
+ free((Malloc_t) save);
+ for (j = 0; j < 10; j++) {
+ wenv[j] = wsave[j];
+ }
+ restore_global_regs("nameformat", rsave);
+ mush_free((Malloc_t) arg, "string");
+ return 1;
+ } else {
+ /* No @nameformat attribute */
+ return 0;
}
}
*** 1_7_4.187/src/help.c Mon, 25 Jun 2001 12:31:59 -0500 dunemush (pennmush/f/32_help.c 1.4.1.2.1.1.1.3.2.2.1.1.2.1.1.2.1.2 660)
--- 1_7_5.36(w)/src/help.c Wed, 14 Nov 2001 13:07:39 -0600 dunemush (pennmush/f/32_help.c 1.4.1.2.1.1.1.3.2.2.1.1.2.1.1.2.1.4 660)
***************
*** 31,39 ****
static int help_init = 0;
static void do_new_spitfile _((dbref player, char *arg1,
! help_file * help_dat, int restricted));
! static void help_build_index _((help_file * h, int restricted));
typedef struct TLIST {
char topic[TOPIC_NAME_LEN + 1];
--- 31,39 ----
static int help_init = 0;
static void do_new_spitfile _((dbref player, char *arg1,
! help_file *help_dat, int restricted));
! static void help_build_index _((help_file *h, int restricted));
typedef struct TLIST {
char topic[TOPIC_NAME_LEN + 1];
*** 1_7_4.187/src/switchinc.c Tue, 13 Nov 2001 17:29:19 -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 660)
--- 1_7_5.36(w)/src/switchinc.c Wed, 14 Nov 2001 13:07:40 -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 660)
***************
*** 1,516 ****
{
! "ACCESS", SWITCH_ACCESS
! }
! ,
! {
! "ADD", SWITCH_ADD
! }
! ,
! {
! "ALL", SWITCH_ALL
! }
! ,
! {
! "ATTRIBS", SWITCH_ATTRIBS
! }
! ,
! {
! "BAN", SWITCH_BAN
! }
! ,
! {
! "BLIND", SWITCH_BLIND
! }
! ,
! {
! "BRIEF", SWITCH_BRIEF
! }
! ,
! {
! "CHECK", SWITCH_CHECK
! }
! ,
! {
! "CHOWN", SWITCH_CHOWN
! }
! ,
! {
! "CLEAR", SWITCH_CLEAR
! }
! ,
! {
! "CMD", SWITCH_CMD
! }
! ,
! {
! "COMMANDS", SWITCH_COMMANDS
! }
! ,
! {
! "CONN", SWITCH_CONN
! }
! ,
! {
! "CONNECT", SWITCH_CONNECT
! }
! ,
! {
! "CONNECTED", SWITCH_CONNECTED
! }
! ,
! {
! "CONTENTS", SWITCH_CONTENTS
! }
! ,
! {
! "COSTS", SWITCH_COSTS
! }
! ,
! {
! "COUNT", SWITCH_COUNT
! }
! ,
! {
! "CREATE", SWITCH_CREATE
! }
! ,
! {
! "DATABASE", SWITCH_DATABASE
! }
! ,
! {
! "DB", SWITCH_DB
! }
! ,
! {
! "DEBUG", SWITCH_DEBUG
! }
! ,
! {
! "DECOMPILE", SWITCH_DECOMPILE
! }
! ,
! {
! "DEFAULTS", SWITCH_DEFAULTS
! }
! ,
! {
! "DELETE", SWITCH_DELETE
! }
! ,
! {
! "DELIMIT", SWITCH_DELIMIT
! }
! ,
! {
! "DESCRIBE", SWITCH_DESCRIBE
! }
! ,
! {
! "DESTROY", SWITCH_DESTROY
! }
! ,
! {
! "DISABLE", SWITCH_DISABLE
! }
! ,
! {
! "DOWN", SWITCH_DOWN
! }
! ,
! {
! "DSTATS", SWITCH_DSTATS
! }
! ,
! {
! "EMIT", SWITCH_EMIT
! }
! ,
! {
! "ENABLE", SWITCH_ENABLE
! }
! ,
! {
!