This is patch02 to PennMUSH 1.8.2. After applying this patch, you will have version 1.8.2p2 To apply this patch, save it to a file in your top-level MUSH directory, and do the following: patch -p1 < 1.8.2-patch02 make clean 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. On the off chance they appear not to be, simply rm them and re-run make. Then @shutdown and restart your MUSH. - Ervin/Noltar In this patch: Fixes: * Vector functions with an empty vector didn't return anything. Reported by Talvo. [SW] * Several typos in server messages. Fixed by Sketch, Stoko. * Help fixes by Malix, [GM], Talvo, Sketch, and others. * Crash bug in lmath() fixed. [GM] * Crash bug in list functions fixed. [GM] * list2arr in C now removes markup. list2arr_ansi() was added. [GM] * Compilation problems on IRIX and similar OSes. [SW] * Matcher bug with multiple wildcards fixed. Reported by Ian. [SW] * Garbled output of locks from examine. Reported by Intrevis. [SW]. * regraballi() couldn't use its output seperator argument. Reported by Jules. [SW] * Looking at an object used the looker, not the lookee, as the origin of the name for @ahear/@aahear/@amhear. [SW] * Fixed the distribution of random numbers with a huge range. Reported by Luke. Prereq: 1.8.2p1 *** 1_8_2p1/Patchlevel Sun Nov 26 17:44:53 2006 --- 1_8_2p2/Patchlevel Sat Jan 27 02:20:54 2007 *************** *** 1,2 **** Do not edit this file. It is maintained by the official PennMUSH patches. ! This is PennMUSH 1.8.2p1 --- 1,2 ---- Do not edit this file. It is maintained by the official PennMUSH patches. ! This is PennMUSH 1.8.2p2 *** 1_8_2p1/CHANGES.182 Sun Nov 26 17:44:53 2006 --- 1_8_2p2/CHANGES.182 Sat Jan 27 02:20:54 2007 *************** *** 14,19 **** --- 14,39 ---- ========================================================================== + Version 1.8.2 patchlevel 2 January 27, 2007 + + Fixes: + * Vector functions with an empty vector didn't return anything. + Reported by Talvo. [SW] + * Several typos in server messages. Fixed by Sketch, Stoko. + * Help fixes by Malix, [GM], Talvo, Sketch, and others. + * Crash bug in lmath() fixed. [GM] + * Crash bug in list functions fixed. [GM] + * list2arr in C now removes markup. list2arr_ansi() was added. [GM] + * Compilation problems on IRIX and similar OSes. [SW] + * Matcher bug with multiple wildcards fixed. Reported by Ian. [SW] + * Garbled output of locks from examine. Reported by Intrevis. [SW]. + * regraballi() couldn't use its output seperator argument. Reported + by Jules. [SW] + * Looking at an object used the looker, not the lookee, as the origin + of the name for @ahear/@aahear/@amhear. [SW] + * Fixed the distribution of random numbers with a huge range. Reported + by Luke. + Version 1.8.2 patchlevel 1 November 26, 2006 Fixes: *** 1_8_2p1/game/restart Sun Nov 26 17:44:53 2006 --- 1_8_2p2/game/restart Sat Jan 27 02:20:53 2007 *************** *** 138,143 **** fi DATEMSK="${GAMEDIR}/getdate.template" - export DATEMSK LC_ALL=$LANG LANG=$LANG ./netmush $GAMEDIR/$CONF_FILE & --- 138,142 ---- *** 1_8_2p1/game/txt/hlp/pennattr.hlp Sun Nov 26 17:44:53 2006 --- 1_8_2p2/game/txt/hlp/pennattr.hlp Sat Jan 27 02:20:53 2007 *************** *** 1,3 **** --- 1,44 ---- + & ATTRIBUTE FLAGS + Attribute flags are set on an object's attributes using @set, or applied + to attributes globally using @attrib. Their names (and, when applicable, + the character used in examine as shorthand for the flag) include: + + no_command ($) Attribute will not be checked for '$' commands and + '^' listen patterns. + visual (v) Attribute can be seen by anyone via get(), eval(), + ufun(), zfun(), and similar functions. + no_inherit (i) Attribute will not be inherited by the children of + this object. + no_clone (c) Attribute will not be copied if the object is @clone'd. + regexp (R) Match $-commands and ^-listens using regular expressions. + See 'help regexps'. + case (C) Match $-commands and ^-listens case sensitively. + safe (S) Attribute may not be modified, without unsetting this flag. + mortal_dark (m) Attribute cannot be seen by mortals. This flag can only + be set by royalty and wizards. "hidden" is a synonym. + + Continued in 'help attribute flags2' + & ATTRIBUTE FLAGS2 + noname (N) Attribute won't show name in @o-* messages. + nospace (s) Attribute won't append a space in @o-* messages. + wizard (w) Attribute can only be set by wizards. + This flag can only be set by royalty and wizards. + veiled (V) Attribute value will not be shown on default examine, + but is still otherwise accessible (for spammy attribs). + debug (b) Show debug output when this attribute is evaluated. + nearby (n) Even if this attribute is visual, it can only be + retrieved if you're co-located with the object. + public (p) This attribute can be evaluated by any object, even + if safer_ufun is in use. DANGEROUS! AVOID! + aahear (A) ^-listens on this attribute match like @aahear + amhear (M) ^-listens on this attribute match like @amhear + + Continued in 'help attribute flags3' + & ATTRIBUTE FLAGS3 + prefixmatch When a user attempts to set an attribute using @, + this attribute will be matched down to its unique + prefixes. This flag is primarily used internally. + ` This attribute is a branch. See: help ATTRIBUTE TREES & ATTRIBUTE TREES & ATTR TREES & ATTRIB TREES *************** *** 23,29 **** act as a branch. If you try to create an unsupported leaf, branch attributes will be created as needed to support it. ! See help attribute trees2 for more information and examples. & ATTRIBUTE TREES2 & ATTR TREES2 --- 64,70 ---- act as a branch. If you try to create an unsupported leaf, branch attributes will be created as needed to support it. ! See 'help attribute trees2' for more information and examples. & ATTRIBUTE TREES2 & ATTR TREES2 *************** *** 46,52 **** Branch attributes will be displayed with a ` in the attribute flags on examine. ! See help attribute trees3 for more information and examples. & ATTRIBUTE TREES3 & ATTR TREES3 --- 87,93 ---- Branch attributes will be displayed with a ` in the attribute flags on examine. ! See 'help attribute trees3' for more information and examples. & ATTRIBUTE TREES3 & ATTR TREES3 *************** *** 73,79 **** &CHAR`SKILLS #30 = coding:3 documentation:1 obfuscation:5 ... ! See help attribute trees4 for information about @parent and attribute trees. & ATTRIBUTE TREES4 & ATTR TREES4 & ATTRIB TREES4 --- 114,121 ---- &CHAR`SKILLS #30 = coding:3 documentation:1 obfuscation:5 ... ! See 'help attribute trees4' for information about @parent and attribute trees. ! & ATTRIBUTE TREES4 & ATTR TREES4 & ATTRIB TREES4 *** 1_8_2p1/game/txt/hlp/pennchat.hlp Sun Nov 26 17:44:53 2006 --- 1_8_2p2/game/txt/hlp/pennchat.hlp Sat Jan 27 02:20:53 2007 *************** *** 33,39 **** as normal, preventing user-defined commands like "+last" from being clobbered by the chat system. ! See also: chat, CHAN_USEFIRSTMATCH & CHAN_USEFIRSTMATCH CHAN_USEFIRSTMATCH (any type) --- 33,39 ---- as normal, preventing user-defined commands like "+last" from being clobbered by the chat system. ! See also: chat, CHAN_USEFIRSTMATCH & CHAN_USEFIRSTMATCH CHAN_USEFIRSTMATCH (any type) *************** *** 56,62 **** @nscemit is a wizard-only version that does not include nospoof information in broadcasts. ! See also: chat & @channel @channel/list [] @channel/what [] --- 56,62 ---- @nscemit is a wizard-only version that does not include nospoof information in broadcasts. ! See also: chat & @channel @channel/list [] @channel/what [] *************** *** 80,86 **** @channel/what will show you the channel's name, access information, and a description of the channel's purpose. ! More commands are provided in "help @channel2". See also: chat & @channel2 @channel/who @channel/hide = --- 80,88 ---- @channel/what will show you the channel's name, access information, and a description of the channel's purpose. ! More commands are provided in "help @channel2". ! ! See also: chat & @channel2 @channel/who @channel/hide = *************** *** 149,155 **** @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". --- 151,158 ---- @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. If there are any commas ! in the description, the whole string should be enclosed in {}'s. @channel/rename is used to rename a channel. See "help @channel5" for more. See also "help @clock". *************** *** 334,340 **** With two arguments, sets the lock if you would be able to do so via @clock. ! See also: @clock & CRECALL() crecall([, [, [, [, ]]]]) --- 337,343 ---- With two arguments, sets the lock if you would be able to do so via @clock. ! See also: @clock & CRECALL() crecall([, [, [, [, ]]]]) *************** *** 343,349 **** . If is a true value, the recalled lines will include their timestamps; otherwise, they will not. ! See also: @channel3 & Channel functions Channel functions work with the channel system. --- 346,352 ---- . If is a true value, the recalled lines will include their timestamps; otherwise, they will not. ! See also: @channel3 & Channel functions Channel functions work with the channel system. *** 1_8_2p1/game/txt/hlp/penncmd.hlp Sun Nov 26 17:44:53 2006 --- 1_8_2p2/game/txt/hlp/penncmd.hlp Sat Jan 27 02:20:53 2007 *************** *** 16,21 **** --- 16,23 ---- @-ATTRIBUTES @-BUILDING @-GENERAL @-WIZARD + Commands that can only be used by connected players are listed in + HELP SOCKET COMMANDS. & @-ATTRIBUTES These '@' commands set standard message/action sets on objects. Each comes in 3 versions: @, @o, and @a. Only the *************** *** 300,306 **** @alias has no effect on non-players. ! See also: @name, alias(), fullalias() & @allhalt @allhalt --- 302,308 ---- @alias has no effect on non-players. ! See also: @name, alias(), fullalias() & @allhalt @allhalt *************** *** 446,452 **** don't like @switch. If is given, it is executed instead of the rest of the commands in the current queue. ! @assert does the inverse: stopping execution if evaluse to false. Examples: > @va obj=$testme *:@pemit %#=Before break;@break %0;@pemit %#=After break --- 448,454 ---- don't like @switch. If is given, it is executed instead of the rest of the commands in the current queue. ! @assert does the inverse: it stops execution if evaluates to false. Examples: > @va obj=$testme *:@pemit %#=Before break;@break %0;@pemit %#=After break *************** *** 461,471 **** Third (The @switch is run, which queues 'think Third', think First is run, displaying 'First', command execution is broken (so we never ! think Second, and then the queued 'think Third' is run, displaying Third. If you figured that out, you have a very good understanding of the PennMUSH queue. :) ! See also: ACTION LISTS, QUEUE, BOOLEAN VALUES & @charges @charges = --- 463,473 ---- Third (The @switch is run, which queues 'think Third', think First is run, displaying 'First', command execution is broken (so we never ! think Second), and then the queued 'think Third' is run, displaying Third. If you figured that out, you have a very good understanding of the PennMUSH queue. :) ! See also: ACTION LISTS, QUEUE, BOOLEAN VALUES & @charges @charges = *************** *** 553,562 **** See also: @chzone, ZONES & @clone ! @clone [=] ! @clone/preserve [=] ! For objects, creates an exact duplicate of it and puts it in the current room. For exits, it creates an exact duplicate of that exit, except the clone's source is the current room rather than whatever the original exit's source was. For rooms, creates an --- 555,564 ---- See also: @chzone, ZONES & @clone ! @clone [=] ! @clone/preserve [=] ! For things, creates an exact duplicate of it and puts it in the current room. For exits, it creates an exact duplicate of that exit, except the clone's source is the current room rather than whatever the original exit's source was. For rooms, creates an *************** *** 687,693 **** through '@conformat here = Contents: [iter(%0,name(##))]', for example. More complex things are, obviously, possible. ! See also: @exitformat, @nameformat, @descformat & @invformat @invformat [=] --- 689,695 ---- through '@conformat here = Contents: [iter(%0,name(##))]', for example. More complex things are, obviously, possible. ! See also: @exitformat, @nameformat, @descformat & @invformat @invformat [=] *************** *** 702,708 **** through '@invformat me = You've got: [iter(%0,name(##))]', for example. More complex things are, obviously, possible. ! See also: inventory & @descformat @descformat [=] --- 704,710 ---- through '@invformat me = You've got: [iter(%0,name(##))]', for example. More complex things are, obviously, possible. ! See also: inventory & @descformat @descformat [=] *************** *** 714,720 **** This is useful for things like room parents that enforce a consistent "look" for each room's @desc. ! See also: @exitformat, @nameformat, @conformat, @idescformat & @idescformat @idescformat [=] --- 716,722 ---- This is useful for things like room parents that enforce a consistent "look" for each room's @desc. ! See also: @exitformat, @nameformat, @conformat, @idescformat & @idescformat @idescformat [=] *************** *** 726,732 **** This is useful for things like object parents that enforce a consistent "look" for each object's @idesc. ! See also: @exitformat, @nameformat, @conformat, @descformat & @nameaccent @nameaccent [=] --- 728,734 ---- This is useful for things like object parents that enforce a consistent "look" for each object's @idesc. ! See also: @exitformat, @nameformat, @conformat, @descformat & @nameaccent @nameaccent [=] *************** *** 740,746 **** If a container has both a @nameaccent and a @nameformat, the @nameformat is used. ! See also: accent(), @nameformat & @nameformat @nameformat [=] --- 742,748 ---- If a container has both a @nameaccent and a @nameformat, the @nameformat is used. ! See also: accent(), @nameformat & @nameformat @nameformat [=] *************** *** 754,760 **** Example: Show the room's zone after its name. @nameformat here = %1 [if(isdbref(zone(%0)),<[name(zone(%0))]>)] ! See also: @exitformat, @conformat, @descformat & @cost @cost = --- 756,762 ---- Example: Show the room's zone after its name. @nameformat here = %1 [if(isdbref(zone(%0)),<[name(zone(%0))]>)] ! See also: @exitformat, @conformat, @descformat & @cost @cost = *************** *** 803,818 **** & @create @create [=] ! Creates a thing with the specified name. Creating an object costs a certain amount of MUSH money, which usually defaults to 10 pennies. You can specify a higher cost if you wish, but not a lower one. ! This cost is refunded if you @destroy/@recycle the object. ! Once you have created an object, you can use it as a PUPPET, to store USER-DEFINED COMMANDS, or just as a prop. Some MUSHes choose to limit the number of objects that players can create by setting a QUOTA. ! See also: give, @quota, MONEY & @dbck @dbck This is a wizard only command. It forces the database to perform a --- 805,820 ---- & @create @create [=] ! Creates a thing with the specified name. Creating a thing costs a certain amount of MUSH money, which usually defaults to 10 pennies. You can specify a higher cost if you wish, but not a lower one. ! This cost is refunded if you @destroy/@recycle the thing. ! Once you have created a thing, you can use it as a PUPPET, to store USER-DEFINED COMMANDS, or just as a prop. Some MUSHes choose to limit the number of objects that players can create by setting a QUOTA. ! See also: give, @quota, MONEY & @dbck @dbck This is a wizard only command. It forces the database to perform a *************** *** 999,1006 **** This will do just the same as the above, except it will also create an exit named "Out ;s;south;out;o" coming back from the kitchen to whatever room you are currently in. ! ! See also: @open, @link, EXITS, @create & @doing @doing @doing/header --- 1001,1008 ---- This will do just the same as the above, except it will also create an exit named "Out ;s;south;out;o" coming back from the kitchen to whatever room you are currently in. ! ! See also: @open, @link, EXITS, @create, DBREF & @doing @doing @doing/header *************** *** 1053,1065 **** @drop [=]. can be a thing, player, exit, or room, specified as or # or 'me' or 'here'. Sets the drop message for . The message is displayed when a ! player drops . Without a message argument, it clears the message. On an exit, this message is sent to a player after they pass through the exit. ! See also: drop, @odrop, @adrop. & @dump @dump [/paranoid] [check interval] --- 1055,1067 ---- @drop [=]. can be a thing, player, exit, or room, specified as or # or 'me' or 'here'. Sets the drop message for . The message is displayed when a ! player drops . Without a message argument, it clears the message. On an exit, this message is sent to a player after they pass through the exit. ! See also: drop, @odrop, @adrop. & @dump @dump [/paranoid] [check interval] *************** *** 1083,1089 **** If you have a chair, you could "@ealias chair = sit down" and then just type "sit down" instead of "enter chair" - using the object name is not necessary. Note that the enter alias is checked after normal exits. ! Like an exit, it may have a semi-colon separated list of words, i.e. sit down;sit;sit on chair & @edit & @gedit --- 1085,1091 ---- If you have a chair, you could "@ealias chair = sit down" and then just type "sit down" instead of "enter chair" - using the object name is not necessary. Note that the enter alias is checked after normal exits. ! Like an exit, it may have a semicolon separated list of words, i.e. sit down;sit;sit on chair & @edit & @gedit *************** *** 1160,1166 **** @enable