Changeset 527
- Timestamp:
- 08/16/06 03:11:42 (2 years ago)
- Files:
-
- 1.8.1/CHANGES.181 (modified) (2 diffs)
- 1.8.1/Makefile.SH (modified) (1 diff)
- 1.8.1/Patchlevel (modified) (1 diff)
- 1.8.1/game/aliascnf.dst (modified) (1 diff)
- 1.8.1/game/mushcnf.dst (modified) (1 diff)
- 1.8.1/game/txt/hlp/pennchat.hlp (modified) (2 diffs)
- 1.8.1/game/txt/hlp/penncmd.hlp (modified) (9 diffs)
- 1.8.1/game/txt/hlp/pennconf.hlp (modified) (8 diffs)
- 1.8.1/game/txt/hlp/pennfunc.hlp (modified) (15 diffs)
- 1.8.1/game/txt/hlp/penntop.hlp (modified) (4 diffs)
- 1.8.1/game/txt/hlp/pennv181.hlp (modified) (3 diffs)
- 1.8.1/game/txt/hlp/pennvOLD.hlp (modified) (1 diff)
- 1.8.1/hdrs/attrib.h (modified) (1 diff)
- 1.8.1/hdrs/copyrite.h (modified) (1 diff)
- 1.8.1/hdrs/dbdefs.h (modified) (1 diff)
- 1.8.1/hdrs/externs.h (modified) (1 diff)
- 1.8.1/hdrs/lock.h (modified) (1 diff)
- 1.8.1/hdrs/version.h (modified) (1 diff)
- 1.8.1/src/atr_tab.c (modified) (2 diffs)
- 1.8.1/src/attrib.c (modified) (1 diff)
- 1.8.1/src/bsd.c (modified) (7 diffs)
- 1.8.1/src/command.c (modified) (3 diffs)
- 1.8.1/src/destroy.c (modified) (1 diff)
- 1.8.1/src/extchat.c (modified) (1 diff)
- 1.8.1/src/function.c (modified) (8 diffs)
- 1.8.1/src/fundb.c (modified) (2 diffs)
- 1.8.1/src/funlist.c (modified) (10 diffs)
- 1.8.1/src/funstr.c (modified) (6 diffs)
- 1.8.1/src/funtime.c (modified) (2 diffs)
- 1.8.1/src/game.c (modified) (3 diffs)
- 1.8.1/src/lock.c (modified) (1 diff)
- 1.8.1/src/look.c (modified) (7 diffs)
- 1.8.1/src/move.c (modified) (2 diffs)
- 1.8.1/src/notify.c (modified) (1 diff)
- 1.8.1/src/parse.c (modified) (6 diffs)
- 1.8.1/src/wiz.c (modified) (2 diffs)
- 1.8.1/win32/funs.h (modified) (1 diff)
Legend:
- Unmodified
- Added
- Removed
- Modified
- Copied
- Moved
1.8.1/CHANGES.181
r525 r527 14 14 15 15 ========================================================================== 16 17 Version 1.8.1 patchlevel 8 June 3, 2006 18 19 Attributes: 20 * New 'AAHEAR' and 'AMHEAR' attribute flags, when set on an 21 ^listen attribute, cause it to behave like @aahear or 22 @amhear respectively, instead of like @ahear. Suggested by 23 Jules@M*U*S*H. Patch by Talvo@M*U*S*H. 24 * New UNIMPLEMENTED_COMMAND command handles commands that 25 are known but not implemented (currently just @SQL). By default, 26 produces a standard message, but can now be @hooked, etc. 27 Suggested by Talvo@M*U*S*H. [TAP]. 28 * @conformat and @invformat are now passed a |-delimited list 29 of object names, unparsed in the default fashion, as %1. Patch 30 by Talvo@M*U*S*H. 31 Functions: 32 * default() can now take any number of obj/attr cases. Suggested 33 by Nathan Baum, patch by Talvo@M*U*S*H. 34 * lwhoid(), mwhoid(), xwhoid(), xmwhoid() work like lwho(), etc. 35 but return objids instead of dbrefs. Patch by Talvo@M*U*S*H. 36 * stringsecs() converts timestrings to seconds. Patch by Talvo@M*U*S*H. 37 Minor changes: 38 * %u is now set to the evaluated typed $command (when a $command 39 is matched) and is available to locks. Suggested 40 by Jules@M*U*S*H, patch by Talvo@M*U*S*H. 41 * Rooms reachable from FLOATING rooms are now considered topologically 42 connected, just like rooms reachable from the base room. 43 Patch by Nathan Baum. 44 * %i0-%i9 evaluates to itext(0)-itext(9) for convenience in iter(). 45 Suggested by Nathan Baum. Patch by Talvo@M*U*S*H. 46 * When safer_ufun is on, you must control an object to @function 47 an attribute on it. This prevents, e.g., mortals with @function power 48 from making attributes on wizard objects into @functions. 49 Suggested by Talvo@M*U*S*H. 50 * Internal eval_lock_with function added to support passing special 51 %0/%1 values to lock evaluations. Suggested by Malix@8bit. 52 * Improved @uptime display by Ambrosia@M*U*S*H. 53 * Players may @search a ZMP if they pass the zone lock. Patch by 54 Talvo@M*U*S*H. 55 Fixes: 56 * cbuffer() crash fixed. Report by qa'toq@ST:Foundations. [GM] 57 * regex crash bug fixed. [GM] 58 * insert() added an extra delimiter when inserting at end of list. 59 Report by Sangman. [SW] 60 * make distclean is more thorough. Patch by Ranmir@M*U*S*H. 61 * EQSPLIT commands with no equal sign that were hooked were passed to the 62 hook attribute with an equal sign (and nothing to the right). 63 Fixed. Suggested by Talvo@M*U*S*H. 64 * zwho/zmwho can now be used by see_all players on any zone. 65 Suggested by Talvo@M*U*S*H. 66 * crecall() now accepts 1 or 2 arguments, as promised. Report by 67 Sketch@M*U*S*H. 68 * attrib_set(obj/attr,) sets the attribute to a single space 69 when EMPTY_ATTRS is off. Patch by Talvo@M*U*S*H. 70 * Portability fix in fun_speak. [EEH] 71 * Fix to TZ parsing in src/funtime.c by Jules@M*U*S*H. 72 * Fix to speak() for fragments of speech by Talvo@M*U*S*H based on 73 report by Trelane@M*U*S*H. 74 * Typo fixes in game/aliascnf.dst by Talvo@M*U*S*H. 75 * Help fixes by Talvo@M*U*S*H, Sketch@M*U*S*H. 76 16 77 17 78 Version 1.8.1 patchlevel 7 March 21, 2006 … … 41 102 * unique() function removes contiguous duplicates in lists. [SW] 42 103 * nextdbref() returns the next dbref on the free list. 43 Patch by Talvo@M*U*S*H.104 Suggested by Jules@M*U*S*H. Patch by Talvo@M*U*S*H. 44 105 * Specifying more than one type to locate() now makes each of them 45 106 preferred (not just the last one). Suggested by Anyasha@ST:Foundations. 1.8.1/Makefile.SH
r525 r527 221 221 222 222 distclean: 223 (cd src; make distclean) 224 (cd hdrs; rm -f *.orig *~ \#* *.rej *.bak funs.h cmds.h) 225 (cd utils; rm -f *.orig *~ \#* *.rej *.bak) 223 (cd hdrs; rm -f *.orig *~ \#* *.rej *.bak funs.h cmds.h buildinf.h patches.h) 224 (cd utils; rm -f *.orig *~ \#* *.rej *.bak mkcmds.sh) 226 225 (cd game; rm -rf *.log netmush info_slave *.orig *.rej *~ *.bak mush.cnf) 227 226 (cd os2; rm -rf *.rej *.orig *~ *.bak) 227 (cd src; make distclean; rm -f Makefile) 228 228 (cd game/txt; make clean) 229 (rm -rf .config Makefile config.h config.sh options.h) 229 230 230 231 totallyclean: distclean 1.8.1/Patchlevel
r525 r527 1 1 Do not edit this file. It is maintained by the official PennMUSH patches. 2 This is PennMUSH 1.8.1p 72 This is PennMUSH 1.8.1p8 1.8.1/game/aliascnf.dst
r525 r527 61 61 function_alias xthings xobjects 62 62 function_alias xvthings xvobjects 63 funct oin_alias atrlock attrlock63 function_alias atrlock attrlock 64 64 65 65 # For rhost compatibility 1.8.1/game/mushcnf.dst
r525 r527 85 85 86 86 # The master room. Exits here are global, as are commands on 87 # objects here. This only is used if globals is set to "yes".87 # objects here. 88 88 master_room 2 89 89 1.8.1/game/txt/hlp/pennchat.hlp
r525 r527 287 287 prepended to the message, behaving like @cemit/noisy. 288 288 & CFLAGS() 289 & CLFLAGS() 289 290 cflags(<channel>) 290 291 cflags(<channel>,<object>) … … 348 349 349 350 cbuffer() cdesc() cemit() cflags() channels() 350 clflags() clock() cmsgs() cowner() c status()351 c title() cusers() cwho()351 clflags() clock() cmsgs() cowner() crecall() 352 cstatus() ctitle() cusers() cwho() 1.8.1/game/txt/hlp/penncmd.hlp
r525 r527 398 398 @attribute/access adds a new standard attribute into the table, 399 399 associating it with the given space-separated list of full flag names. 400 See 'help @set' for possible flags. A flag list of "none" removes400 See 'help attribute flags' for possible flags. A flag list of "none" removes 401 401 all flag associations. 402 402 If the /retroactive switch is added, the flags are assigned to every copy … … 612 612 613 613 /noparse : The command does not evaluate arguments passed to it. 614 /eqsplit : The parser parses leftside and rightside 614 /eqsplit : The parser parses leftside and rightside around = 615 615 /lsargs : Comma-separated arguments on the left side are parsed. 616 616 /rsargs : In conjunction with eqsplit, the right-side arguments, … … 681 681 The objects that the looker would normally be able to see is passed 682 682 as a dbref list in %0; all contents can be acquired through 'lcon(me)'. 683 A |-delimited list of all the unparsed object names is passed 684 in %1 (so iter(%1,itext(0),|,%r) produces the standard list) 683 685 684 686 One could change the format to 'Contents: Object1 Object2 Object3' … … 694 696 as if it were a description or other similar message on the object. 695 697 The objects carried are passed as a dbref list in %0. 698 A |-delimited list of all the unparsed object names is passed 699 in %1 (so iter(%1,itext(0),|,%r) produces the standard list) 696 700 697 701 One could change the format to 'You've got: Object1 Object2 Object3' … … 1153 1157 & @enable 1154 1158 & @disable 1155 @enable <parameter> 1156 @disable <parameter> 1157 1158 These are wizard commands that allow certain parameters of the game to 1159 be changed at runtime. The values of these parameters are listed by the 1160 "@config" command. Common parameters and their effects are as follows: 1161 1162 logins -- When logins are disabled, only wizards and royalty may 1163 log into the game. Mortals attempting to log in will be 1164 given the down text, as well as the @rejectmotd. 1165 guests -- When guests are disabled, players can not log in as 1166 guest characters. 1167 pueblo -- Turns on HTML output for the Pueblo client. 1168 log_commands -- When this is enabled, all commands are logged. 1169 log_huhs -- When this is enabled, all commands that produce a "Huh?" 1170 are logged. 1171 log_forces -- When this is enabled, @forces done by wizards are logged. 1172 log_walls -- When this is enabled, @walls are logged. 1173 1174 Actually, any boolean (Yes/No) runtime option can be enabled or 1175 disabled with these commands, as a shortcut for @config/set. 1159 @enable <option> 1160 @disable <option> 1161 1162 These wizard-only commands allow for any boolean @config options to 1163 be changed (see "help @config paramaters" for a list). 1176 1164 1177 1165 @enable <option> is the same thing as @config/set <option>=yes 1178 1166 @disable <option> is the same thing as @config/set <option>=no 1167 1168 See also: @config 1179 1169 & @zenter 1180 1170 & @ozenter … … 1522 1512 & @function2 1523 1513 <object> can be anything that the player using the @function command 1524 controls. <function name> must be 30 characters or less. 1514 controls (if safer_ufun is enabled) or can examine (if not). 1515 <function name> must be 30 characters or less. 1525 1516 1526 1517 A function defined using @function works just like any of the normal … … 2981 2972 2982 2973 For the class TYPE=PLAYER, and for PLAYER=<player-name>, anyone may 2983 obtain information on any player. In all other cases, only wizards may 2984 obtain information about other players. This is computationally 2974 obtain information on any player. In all other cases, wizards may 2975 obtain information about other players, and players who pass a ZMP's 2976 zone-lock may obtain information about the ZMP. This is computationally 2985 2977 expensive, costing 100 pennies. It is generally faster than @find. 2986 2978 … … 3074 3066 public (p) This attribute can be evaluated by any object, even 3075 3067 if safer_ufun is in use. DANGEROUS! AVOID! 3068 aahear (A) ^-listens on this attribute match like @aahear 3069 amhear (M) ^-listens on this attribute match like @amhear 3070 3071 Continued in 'help attribute flags3' 3072 & attribute flags3 3076 3073 prefixmatch When a user attempts to set an attribute using @<attrib>, 3077 3074 this attribute will be matched down to its unique … … 3097 3094 @shutdown[/panic][/reboot][/paranoid] 3098 3095 3099 @shutdown shuts down the game. It may only be used by Wizards and 3100 must be typed in full. 3096 @shutdown shuts down the game. It may only be used by Wizards. 3101 3097 3102 3098 @shutdown/panic performs a panic shutdown of the game, using a seperate 1.8.1/game/txt/hlp/pennconf.hlp
r463 r527 6 6 7 7 Attribs Chat Cmds Cosmetic Costs 8 Db Dump F uncs Limits Log9 NetTiny8 Db Dump Flags Funcs Limits 9 Log Net Tiny 10 10 11 11 The categories and groups are the same as those used by @config/list. 12 12 Values must be of the listed type for each option. They include: 13 13 <number>, <dbref>, <boolean> (Yes/No), <time>, or <string>. 14 15 Options which take a <time> will accept either a number of seconds 16 or a combination of numbers followed by 's' for seconds, 'm' for 17 minutes or 'h' for hours, making 1h30m and 5400 equivalent. 18 19 <dbref> options can be given with or without the leading '#', so 20 '1' and '#1' are the same. 21 14 22 & @config attribs 15 23 These options control some attribute behavior. … … 20 28 player_ahear=<boolean>: Is @ahear triggered on players? 21 29 room_connects=<boolean>: Are @aconnect and @adisconnect triggered on rooms? 22 global_connects=<boolean>: Are @aconnect and @adisconnect triggered on23 objects in the master room?24 30 read_remote_desc=<boolean>: Can anyone remotely retrieve @descs? 31 startups=<boolean>: Are @startup triggered at restart? 32 empty_attrs=<boolean>: Can attributes be set to an empty string? 25 33 & @config chat 26 34 These options control chat system settings. … … 28 36 chan_cost=<number>: How many pennies a channel costs to create. 29 37 max_channels=<number>: How many channels can exist total. 30 max_player_channels= >number>: How many channels can each non-admin38 max_player_channels=<number>: How many channels can each non-admin 31 39 player create? If 0, mortals cannot create channels. 32 40 & @config cmds 33 41 These options affect command behavior. 34 42 35 globals=<boolean>: Is the master room checked for commands and exits?36 43 noisy_whisper=<boolean>: Does whisper default to whisper/noisy? 37 44 possessive_get=<boolean>: Does "get container's object" work? … … 39 46 link_to_object=<boolean>: Can exits have objects as their destination? 40 47 owner_queues=<boolean>: Are command queues kept per-owner, or per-object? 41 restricted_building=<boolean>: Does it take the builder @power to build?42 free_objects=<boolean>: If restricted_building is on, can @create be used43 without the builder @power?44 48 full_invis=<boolean>: Should say by a dark player show up as 45 49 'Someone says,'? 46 50 wiz_noaenter=<boolean>: If yes, dark players don't trigger @aenters. 47 player_locate=<boolean>: Can mortals find the locations of remote players?48 cemit_power=<boolean>: Should the cemit @power control @cemit?49 51 really_safe=<boolean>: Does SAFE prevent @nuking? 50 hate_dest=<boolean>: Does @destroy work?51 52 destroy_possessions=<boolean>: When a player is destroyed, are their objects 52 53 as well? … … 58 59 player_name_spaces=<boolean>: Can player names have spaces in them? 59 60 ansi_names=<boolean>: Are names in look hilighted? 60 ansi_justify=<boolean>: Do ljust() and rjust() take ansi codes into61 account?62 61 float_precision=<numbers>: How many digits after the decimal point in 63 62 floating point numbers are kept when formatting the result of a … … 108 107 These are database options. 109 108 110 player_start=<dbref>: What room newly created players are in. 111 master_room=<dbref>: The location of the master room. 112 ancestor_room=<dbref>: If set to a good object, this is considered a global 113 parent for all rooms. If -1 or a nonexistant object, then disabled. 114 ancestor_exit=<dbref>: As ancestor_room for exits. 115 ancestor_thing=<dbref>: As ancestor_room for things. 116 ancestor_player=<dbref>: As ancestor_room for players. 117 base_room=<dbref>: The starting room used to determine if other rooms 118 are disconnected. 119 default_home=<dbref>: The room to send things to when they're homeless. 120 exits_connect_rooms=<boolean>: Is a room with any exit at all in not 121 considered disconnected for FLOATING checks? 109 player_start=<dbref>: What room newly created players are in. 110 master_room=<dbref>: The location of the master room. 111 ancestor_room=<dbref>: If set to a good object, this is considered a global 112 parent for all rooms. If -1 or a nonexistant object, then disabled. 113 ancestor_exit=<dbref>: As ancestor_room for exits. 114 ancestor_thing=<dbref>: As ancestor_room for things. 115 ancestor_player=<dbref>: As ancestor_room for players. 116 base_room=<dbref>: The starting room used to determine if other rooms 117 are disconnected. 118 default_home=<dbref>: The room to send things to when they're homeless. 119 exits_connect_rooms=<boolean>: Is a room with any exit at all in not 120 considered disconnected for FLOATING checks? 121 zone_control_zmp_only=<boolean>: Do we only perform control checks on ZMPs, 122 or do we check ZMOs and ZMRs too? 122 123 & @config dump 123 124 These options affect database saves and other periodic checks. 124 125 The ones that take times will accept the time as either a126 plain number, or a number with a suffix 's' for seconds or 'm' for127 minutes or 'h' for hours.128 125 129 126 forking_dump=<boolean>: Does the game clone itself and save in the … … 137 134 purge_interval=<time>: Seconds between automatic @purges. 138 135 dbck_interval=<time>: Seconds between automatic @dbcks. 136 & @config flags 137 These options set the default flags for newly-created objects and channels. 138 139 player_flags=<string>: List of flags to set on newly created players 140 room_flags=<string>: List of flags to set on newly created rooms 141 thing_flags=<string>: List of flags to set on newly created things 142 exit_flags=<string>: List of flags to set on newly created exits 143 room_flags=<string>: List of flags to set on newly created rooms 144 channel_flags=<string>: List of flags to set on newly created channels 139 145 & @config funcs 140 146 These options affect the behavior of some functions. 141 147 142 haspower_restricted=<boolean>: Is haspower() available only to objects143 with see_all?144 safer_ufun=<boolean>: Are objects stopped from evaluting attributes on145 objects with more privileges than themselves?148 safer_ufun=<boolean>: Are objects stopped from evaluting attributes on 149 objects with more privileges than themselves? 150 function_side_effects=<boolean>: Are function side effects (functions which 151 alter the database) allowed? 146 152 & @config limits 147 153 Limits and other constants. 148 149 The ones that take times will accept the time as either a150 plain number, or a number with a suffix 's' for seconds or 'm' for151 minutes or 'h' for hours.152 154 153 155 max_dbref=<dbref>: The highest dbref an object can have. If 0, … … 198 200 use_quota=<boolean>: Controls if quotas are used to limit the number 199 201 of objects a player can own. 202 203 Continued in help @config limits4 204 & @config limits4 205 Limits and constants, continued 206 207 max_aliases=<number>: The maximum number of aliases a player can have. 208 keepalive_timeout=<time>: How often should an 'Are you still there?' query 209 be sent to connects, to stop players' routers booting idle connections? 210 max_parents=<number>: The maximum number of levels of parenting allowed. 211 call_limit=<number>: The maximum number of times the parser can be called 212 recursively for any one expression. 200 213 & @config log 201 214 These options affect logging. 202 215 203 216 log_commands=<boolean>: Are all commands logged? 204 log_huhs=<boolean>: Are commands that produce Huh? messages logged?205 217 log_forces=<boolean>: Are @forces of wizard objects logged? 206 log_walls=<boolean>: Are @walls logged?207 218 & @config net 208 219 Networking and connection-related options. 1.8.1/game/txt/hlp/pennfunc.hlp
r525 r527 110 110 cmds() conn() doing() height() hostname() 111 111 hidden() idle() ipaddr() lports() lwho() 112 mwho() nmwho() nwho() ports() pueblo() 113 recv() sent() ssl() terminfo() width() 114 xmwho() xwho() zmwho() zwho() 112 lwhoid() mwho() mwhoid() nmwho() nwho() 113 ports() pueblo() recv() sent() ssl() 114 terminfo() width() xmwho() xmwhoid() xwho() 115 xwhoid() zmwho() zwho() 115 116 & Dbref functions 116 117 Dbref functions return a dbref or list of dbrefs related to some value … … 215 216 convsecs() convutcsecs() convtime() ctime() etimefmt() 216 217 isdaylight() mtime() restarttime() secs() starttime() 217 time() timefmt() timestring() utctime()218 stringsecs() time() timefmt() timestring() utctime() 218 219 219 220 & Utility functions … … 888 889 889 890 & DEFAULT() 890 Function: default([<obj>/]<attr>, <default case>)891 892 This function returns the value of <obj>/<attr>, as if retrieved via893 the get() function, if the attribute exists and is readable by you.894 Otherwise, it evaluates the default case, and returns that.895 Note that the default case is only evaluated if the attribute does896 not exist or cannot be read. Note further than an empty attribute897 counts as an existing attribute.898 891 Function: default([<obj>/]<attr>,[[<obj>]/<attr>,..]<default case>) 892 893 This function returns the value of the first possible <obj>/<attr>, 894 as if retrieved via the get() function, if the attribute exists and 895 is readable by you. Otherwise, it evaluates the default case, and 896 returns that. Note that the default case is only evaluated if the 897 attribute does not exist or cannot be read. Note further than an empty 898 attribute counts as an existing attribute. 899 899 900 This is useful for code that needs to return the value of an attribute, 900 901 or an error message or default case, if that attribute does not exist. … … 1814 1815 & ITEXT() 1815 1816 & INUM() 1817 & %i 1816 1818 ilev() 1817 1819 itext(<n>) 1820 %i<n> 1818 1821 inum(<n>) 1819 1822 … … 1821 1824 of ## (itext) or #@ (inum), with reference to the nth more outermost 1822 1825 iter(), where n=0 refers to the current iter(), n=1 to an iter() 1823 in which the current iter() is nested, etc. ilev() will return the 1824 current nesting depth, or -1 if it is outside an iter(). Thus, 1825 itext(ilev()) will return the ## of the outermost iter(). 1826 in which the current iter() is nested, etc. %iX is shorthand for itext(X) 1827 (up to itext(9). ilev() returns the current nesting depth, or -1 1828 if it is outside an iter(). Thus, itext(ilev()) will return the ## 1829 of the outermost iter(). 1826 1830 1827 1831 > say [iter(red blue green,iter(fish shoe, #@:##))] … … 1834 1838 You say, "1:fish 2:shoe 1:fish 2:shoe 1:fish 2:shoe" 1835 1839 1836 > say [iter(red blue green,iter(fish shoe, [itext(1)]:[itext(0)]))]1840 > say [iter(red blue green,iter(fish shoe, %i1:%i0))] 1837 1841 You say, "red:fish red:shoe blue:fish blue:shoe green:fish green:shoe" 1838 1842 & IPADDR() … … 2305 2309 object. You must be in the object or control it to use this function. 2306 2310 & LWHO() 2311 & LWHOID() 2307 2312 lwho() 2308 2313 lwho(<viewer>) 2309 2310 This returns a list of the dbref numbers for all currently-connected 2314 lwhoid(<viewer>) 2315 2316 lwho() returns a list of the dbref numbers for all currently-connected 2311 2317 players. When mortals use this function, the dbref numbers of DARK 2312 2318 wizards or royalty do NOT appear on the dbref list. … … 2315 2321 DARK and Hidden players, lwho() returns the output of lwho() from 2316 2322 <viewer>'s point of view. 2323 2324 lwohid() returns a list of objid's instead. 2317 2325 2318 2326 See also: mwho(), nwho(), xwho() … … 2575 2583 See also: anonymous attributes 2576 2584 & MWHO() 2585 & MWHOID() 2577 2586 mwho() 2578 2579 This returns a list of the dbref numbers for all current-connected, 2587 mwhoid() 2588 2589 mwho() returns a list of the dbref numbers for all current-connected, 2580 2590 non-hidden players. It's exactly the same as lwho() used by a 2581 2591 mortal, and is suitable for use on privileged global objects who 2582 2592 need an unprivileged who-list. 2593 2594 mwhoid() returns a list of objids instead. 2583 2595 & ALIAS() 2584 2596 alias(<player>[,<new alias>]) … … 3589 3601 <speech> <speaker's name> says, "<speech>" 3590 3602 3591 The conf parameter say_uses_comma is respected (using "says," or "says").3592 3603 If <say string> is specified, it is used instead of "says," / "says". 3593 3604 … … 4251 4262 You say, "00d 00h 05m 01s" 4252 4263 4264 See also: stringsecs() 4265 & STRINGSECS() 4266 stringsecs(<timestring>) 4267 4268 The stringsecs() function takes a string of the form produced by 4269 timestring() and converts it back into seconds. 4270 4271 Example: 4272 > say [stringsecs(5m 1s)] 4273 You say, "301" 4274 4275 See also: timestring(), etimefmt() 4253 4276 & TR() 4254 4277 tr(<string>,<find>,<replace>) … … 4775 4798 See also: nthings(), lthings(), lvthings() 4776 4799 & XWHO() 4800 & XWHOID() 4777 4801 & XMWHO() 4802 & XMWHOID() 4778 4803 xwho(start,count) 4779 4804 xmwho(start,count) 4805 xwhoid(start,count) 4806 xmwhoid(start,count) 4780 4807 4781 4808 xwho() fetches <count> or fewer player dbrefs from the list of connected … … 4787 4814 xmwho() is identical, except it is limited to non-DARK and non-HIDE 4788 4815 players. 4816 4817 xwhoid() and xmwhoid() return objids instead of dbrefs. 4789 4818 4790 4819 See also: lwho(), mwho(), nwho() … … 4797 4826 It's exactly the same as zwho() used by a mortal, and is suitable for 4798 4827 use on privileged global objects who need an unprivileged zwho-list. 4828 The viewer must either have see_alll privileges or pass the zone 4829 lock of the zone to use the function. 4799 4830 4800 4831 See also: zwho() … … 4806 4837 players within a location belonging to the specified zone. When mortals 4807 4838 use this function, the dbref numbers of DARK wizards or hidden royalty 4808 do NOT appear on the dbref list. 4839 do NOT appear on the dbref list. The viewer must either have see_all 4840 privileges or pass the zone lock of the zone to use the function. 4809 4841 4810 4842 If <viewer> is given by a privileged user, zwho() returns a dbref list 1.8.1/game/txt/hlp/penntop.hlp
r525 r527 226 226 227 227 filter() filterbool() fold() foreach() map() 228 mix() munge() sortby() s tep()228 mix() munge() sortby() sortkey() step() 229 229 & ATTRIB-OWNERSHIP 230 230 ATTRIBUTE OWNERSHIP … … 552 552 553 553 Special game commands: WHO, QUIT, etc. 554 Single-token commands: ", :, ;, + 554 Single-token commands: ", :, ;, +, \, # 555 555 Exits in the room 556 @-commands 556 @-commands and &attribute setting 557 557 Regular game commands: get, inventory, etc. 558 558 Enter aliases … … 805 805 (continued in help listening3) 806 806 & LISTENING3 807 Please note that an object CANNOT trigger its own ^-patterns, so they 808 work like @ahear rather than @aahear or @amhear. (Note that the 809 triggering object is whatever happens to be %#, so, for example, when 810 you @set an object MONITOR, you are %# with regard to the 807 By default, ^-patterns work like @ahear. To have them work like 808 @amhear, set the AMHEAR attribute flag on the attribute; to have 809 them work like @aahear, set the AAHEAR attribute flag on the attribute 810 (Note that the triggering object is whatever happens to be %#, so, for 811 example, when you @set an object MONITOR, you are %# with regard to the 811 812 "Object is now listening" message, and this message can be picked up 812 813 with an ^pattern.) … … 1621 1622 %L = the dbref of the ENACTOR's location. 1622 1623 %c = text of the last command, _before_ evaluation. 1624 %u = text of the last $command, after evaluation, available to locks. 1623 1625 %? = The current function invocation and depth counts. 1624 1626 %+ = The number of arguments passed to the current ufun. 1.8.1/game/txt/hlp/pennv181.hlp
r525 r527 1 & 1.8.1p 71 & 1.8.1p8 2 2 & changes 3 3 This is a list of changes in this patchlevel which are probably of … … 12 12 be read in 'help patchlevels'. 13 13 14 Version 1.8.1 patchlevel 8 June 3, 2006 15 16 Attributes: 17 * New 'AAHEAR' and 'AMHEAR' attribute flags, when set on an 18 ^listen attribute, cause it to behave like @aahear or 19 @amhear respectively, instead of like @ahear. Suggested by 20 Jules@M*U*S*H. Patch by Talvo@M*U*S*H. 21 * New UNIMPLEMENTED_COMMAND command handles commands that 22 are known but not implemented (currently just @SQL). By default, 23 produces a standard message, but can now be @hooked, etc. 24 Suggested by Talvo@M*U*S*H. [TAP]. 25 * @conformat and @invformat are now passed a |-delimited list 26 of object names, unparsed in the default fashion, as %1. Patch 27 by Talvo@M*U*S*H. 28 Functions: 29 * default() can now take any number of obj/attr cases. Suggested 30 by Nathan Baum, patch by Talvo@M*U*S*H. 31 * lwhoid(), mwhoid(), xwhoid(), xmwhoid() work like lwho(), etc. 32 but return objids instead of dbrefs. Patch by Talvo@M*U*S*H. 33 * stringsecs() converts timestrings to seconds. Patch by Talvo@M*U*S*H. 34 Minor changes: 35 * %u is now set to the evaluated typed $command (when a $command 36 is matched) and is available to locks. Suggested 37 by Jules@M*U*S*H, patch by Talvo@M*U*S*H. 38 * Rooms reachable from FLOATING rooms are now considered topologically 39 connected, just like rooms reachable from the base room. 40 Patch by Nathan Baum. 41 * %i0-%i9 evaluates to itext(0)-itext(9) for convenience in iter(). 42 Suggested by Nathan Baum. Patch by Talvo@M*U*S*H. 43 * When safer_ufun is on, you must control an object to @function 44 an attribute on it. This prevents, e.g., mortals with @function power 45 from making attributes on wizard objects into @functions. 46 Suggested by Talvo@M*U*S*H. 47 * Internal eval_lock_with function added to support passing special 48 %0/%1 values to lock evaluations. Suggested by Malix@8bit. 49 * Improved @uptime display by Ambrosia@M*U*S*H. 50 * Players may @search a ZMP if they pass the zone lock. Patch by 51 Talvo@M*U*S*H. 52 Fixes: 53 * cbuffer() crash fixed. Report by qa'toq@ST:Foundations. [GM] 54 * regex crash bug fixed. [GM] 55 * insert() added an extra delimiter when inserting at end of list. 56 Report by Sangman. [SW] 57 * make distclean is more thorough. Patch by Ranmir@M*U*S*H. 58 * EQSPLIT commands with no equal sign that were hooked were passed to the 59 hook attribute with an equal sign (and nothing to the right). 60 Fixed. Suggested by Talvo@M*U*S*H. 61 * zwho/zmwho can now be used by see_all players on any zone. 62 Suggested by Talvo@M*U*S*H. 63 * crecall() now accepts 1 or 2 arguments, as promised. Report by 64 Sketch@M*U*S*H. 65 * attrib_set(obj/attr,) sets the attribute to a single space 66 when EMPTY_ATTRS is off. Patch by Talvo@M*U*S*H. 67 * Portability fix in fun_speak. [EEH] 68 * Fix to TZ parsing in src/funtime.c by Jules@M*U*S*H. 69 * Fix to speak() for fragments of speech by Talvo@M*U*S*H based on 70 report by Trelane@M*U*S*H. 71 * Typo fixes in game/aliascnf.dst by Talvo@M*U*S*H. 72 * Help fixes by Talvo@M*U*S*H, Sketch@M*U*S*H. 73 74 75 & 1.8.1p7 14 76 Version 1.8.1 patchlevel 7 March 21, 2006 15 77 … … 38 100 * unique() function removes contiguous duplicates in lists. [SW] 39 101 * nextdbref() returns the next dbref on the free list. 40 Patch by Talvo@M*U*S*H.102 Suggested by Jules@M*U*S*H. Patch by Talvo@M*U*S*H. 41 103 * Specifying more than one type to locate() now makes each of them 42 104 preferred (not just the last one). Suggested by Anyasha@ST:Foundations. 1.8.1/game/txt/hlp/pennvOLD.hlp
r525 r527 4418 4418 type 'help <version>p<patchlevel>'. For example, 'help 1.7.2p3' 4419 4419 4420 1.8.1: 0, 1, 2, 3, 4, 5, 6, 7 4420 1.8.1: 0, 1, 2, 3, 4, 5, 6, 7, 8 4421 4421 1.8.0: 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12 4422 4422 1.7.7: 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 1.8.1/hdrs/attrib.h
r523 r527 105 105 #define AF_NONAME 0x8000000 /* No name in did_it */ 106 106 #define AF_NOSPACE 0x10000000 /* No space in did_it */ 107 #define AF_MHEAR 0x20000000 /* ^-listens can be triggered by %! */ 108 #define AF_AHEAR 0x40000000 /* ^-listens can be triggered by anyone */ 107 109 108 110 /* external predefined attributes. */ 1.8.1/hdrs/copyrite.h
r525 r527 171 171 * Past and present PennMUSH development team members: 172 172 * T. Alexander Popiel, Ralph Melton, Thorvald Natvig, Luuk de Waard, 173 * Shawn Wagner, Ervin Hearn III, Alan "Javelin" Schwartz 173 * Shawn Wagner, Ervin Hearn III, Alan "Javelin" Schwartz, Greg Millam 174 174 * Past and present PennMUSH porters: 175 175 * Nick Gammon, Sylvia, Dan Williams, Ervin Hearn III 1.8.1/hdrs/dbdefs.h
r523 r527 172 172 #define AF_Nearby(a) ((a)->flags & AF_NEARBY) 173 173 #define AF_Public(a) ((a)->flags & AF_PUBLIC) 174 #define AF_Mhear(a) ((a)->flags & AF_MHEAR) 175 #define AF_Ahear(a) ((a)->flags & AF_AHEAR) 174 176 175 177 /* Non-mortal checks */ 1.8.1/hdrs/externs.h
r523 r527 207 207 dbref cplr; /**< initiating player */ 208 208 char ccom[BUFFER_LEN]; /**< raw command */ 209 char ucom[BUFFER_LEN]; /**< evaluated command */ 209 210 int break_called; /**< Has the break command been called? */ 210 211 char break_replace[BUFFER_LEN]; /**< What to replace the break with */ 1.8.1/hdrs/lock.h
r525 r527 61 61 void free_locks(lock_list *ll); 62 62 int eval_lock(dbref player, dbref thing, lock_type ltype); 63 int eval_lock_with(dbref player, dbref thing, lock_type ltype, dbref env0, 64 dbref env1); 63 65 int fail_lock(dbref player, dbref thing, lock_type ltype, const char *def, 64 66 dbref loc); 1.8.1/hdrs/version.h
r525 r527 1 1 #define VERSION "1.8.1" 2 #define PATCHLEVEL " 7"3 #define PATCHDATE "[0 3/21/2006]"4 #define NUMVERSION 100800100 72 #define PATCHLEVEL "8" 3 #define PATCHDATE "[06/03/2006]" 4 #define NUMVERSION 1008001008 1.8.1/src/atr_tab.c
r521 r527 56 56 {"noname", 'N', AF_NONAME, AF_NONAME}, 57 57 {"nospace", 's', AF_NOSPACE, AF_NOSPACE}, 58 {"amhear", 'M', AF_MHEAR, AF_MHEAR}, 59 {"aahear", 'A', AF_AHEAR, AF_AHEAR}, 58 60 {NULL, '\0', 0, 0} 59 61 }; … … 81 83 {"noname", 'N', AF_NONAME, AF_NONAME}, 82 84 {"nospace", 's', AF_NOSPACE, AF_NOSPACE}, 85 {"amhear", 'M', AF_MHEAR, AF_MHEAR}, 86 {"aahear", 'A', AF_AHEAR, AF_AHEAR}, 83 87 {NULL, '\0', 0, 0} 84 88 }; 1.8.1/src/attrib.c
r523 r527 1254 1254 continue; 1255 1255 *s++ = '\0'; 1256 if (type == '^' && !AF_Ahear(ptr)) { 1257 if ((thing == player && !AF_Mhear(ptr)) 1258 || (thing != player && AF_Mhear(ptr))) 1259 continue; 1260 } 1256 1261 1257 1262 if (AF_Regexp(ptr)) { 1.8.1/src/bsd.c
r525 r527 2458 2458 global_eval_context.cplr = d->player; 2459 2459 strcpy(global_eval_context.ccom, command); 2460 strcpy(global_eval_context.ucom, ""); 2460 2461 2461 2462 /* Clear %0-%9 and r(0) - r(9) */ … … 2469 2470 send_suffix(d); 2470 2471 strcpy(global_eval_context.ccom, ""); 2472 strcpy(global_eval_context.ucom, ""); 2471 2473 global_eval_context.cplr = NOTHING; 2472 2474 } else { … … 3789 3791 int start, count; 3790 3792 int powered = (*(called_as + 1) != 'M'); 3793 int objid = (index(called_as, 'D') != NULL); 3791 3794 3792 3795 if (!is_strict_integer(args[0]) || !is_strict_integer(args[1])) { … … 3814 3817 safe_chr(' ', buff, bp); 3815 3818 safe_dbref(d->player, buff, bp); 3819 if (objid) { 3820 safe_chr(':', buff, bp); 3821 safe_integer(CreTime(d->player), buff, bp); 3822 } 3816 3823 } 3817 3824 } … … 3842 3849 dbref victim; 3843 3850 int powered = ((*called_as == 'L') && Priv_Who(executor)); 3851 int objid = (index(called_as, 'D') != NULL); 3844 3852 3845 3853 first = 1; … … 3868 3876 safe_chr(' ', buff, bp); 3869 3877 safe_dbref(d->player, buff, bp); 3878 if (objid) { 3879 safe_chr(':', buff, bp); 3880 safe_integer(CreTime(d->player), buff, bp); 3881 } 3870 3882 } 3871 3883 } … … 4069 4081 } 4070 4082 4071 if (!GoodObject(zone) || !eval_lock(victim, zone, Zone_Lock)) { 4083 if (!GoodObject(zone) 4084 || (!Priv_Who(executor) && !eval_lock(victim, zone, Zone_Lock))) { 4072 4085 safe_str(T(e_perm), buff, bp); 4073 4086 return; 1.8.1/src/command.c
r525 r527 349 349 /* A way to let people override the Huh? message */ 350 350 {"HUH_COMMAND", NULL, cmd_huh_command, 351 CMD_T_ANY | CMD_T_NOPARSE | CMD_T_INTERNAL, 0, 0}, 352 353 /* A way to let people override the unimplemented message */ 354 {"UNIMPLEMENTED_COMMAND", NULL, cmd_unimplemented, 351 355 CMD_T_ANY | CMD_T_NOPARSE | CMD_T_INTERNAL, 0, 0}, 352 356 … … 1152 1156 } 1153 1157 if (cmd->type & CMD_T_EQSPLIT) { 1154 safe_chr('=', commandraw, &c2); 1155 if (cmd->type & CMD_T_RS_ARGS) { 1156 int rsa_index; 1157 /* This is counterintuitive, but rsa[] 1158 * starts at 1. */ 1159
