| 1 | |
|---|
| 2 | This is the most current changes file for the DuneSource version of |
|---|
| 3 | PennMUSH. Please look it over; each version contains new things which |
|---|
| 4 | might significantly affect the function of your server. |
|---|
| 5 | |
|---|
| 6 | Unlike the older CHANGES files, these changes are reported in |
|---|
| 7 | reverse chronological order (most recent first) |
|---|
| 8 | |
|---|
| 9 | ========================================================================== |
|---|
| 10 | |
|---|
| 11 | Version 1.50 patchlevel 10 Dune #2 February 5, 1995 |
|---|
| 12 | |
|---|
| 13 | |
|---|
| 14 | Major changes: |
|---|
| 15 | |
|---|
| 16 | * The server can now dynamically determine what options have been |
|---|
| 17 | added to a database, and will read in all future DuneSource dbs |
|---|
| 18 | correctly, even if the same options aren't set, and write out dbs |
|---|
| 19 | which identify the current compiled options (those which affect |
|---|
| 20 | the db). For example, CHAT_SYSTEM need only be set to 0 or 3 now, |
|---|
| 21 | as the server will autodetect whether the db has chat or not, and |
|---|
| 22 | convert it, if necessary to add (or remove!) the chat field. |
|---|
| 23 | (Ergo, minimal.chat.db.Z is no longer needed or distributed). |
|---|
| 24 | This terrific idea is from Kalkin; however, the DuneSource system |
|---|
| 25 | of db versions is *NOT* compatible with the Kalkin system. |
|---|
| 26 | |
|---|
| 27 | * Flags now have separate permissions for setting and unsetting. |
|---|
| 28 | For example, the DEBUG flag is wiz-settable, but unsettable by |
|---|
| 29 | any player who controls the object. In addition, flags can now |
|---|
| 30 | be made all-visible, owner-visible, admin-visible, or god-visible; |
|---|
| 31 | SUSPECT is no longer a special case, just an admin-visible flag. |
|---|
| 32 | This behavior used to be controlled by the FLAGS_DARK option, but |
|---|
| 33 | is now a permanent change - the option has been removed. |
|---|
| 34 | |
|---|
| 35 | * Extensive warning system for things missing on objects, rooms, etc. |
|---|
| 36 | @warnings command for players to set the level of warnings they want, |
|---|
| 37 | @wcheck[/all] command for players to check an object (checks can also run |
|---|
| 38 | at a God-configurable interval on the whole db), NOWARN flag for objects |
|---|
| 39 | and players. Idea from Kalkin's adaptation of MUSE code, totally |
|---|
| 40 | rewritten. |
|---|
| 41 | |
|---|
| 42 | |
|---|
| 43 | New options (dune.h): |
|---|
| 44 | |
|---|
| 45 | * GUEST_TEXTFILE option enables a textfile (guest.txt by default) |
|---|
| 46 | to be shown to Guests who log in. Idea and source code from Kalkin. |
|---|
| 47 | * PAGELOCK_NOT_USELOCK option causes @lock/use to fail for players, |
|---|
| 48 | requiring them to type @lock/page. The lock itself has not changed, |
|---|
| 49 | just the interface, to remind players of its function. By Ralph Melton. |
|---|
| 50 | * More control over possessive gets with the POSSESSIVE_GET define |
|---|
| 51 | and the POSSGET_ON_DISCONNECTED define. Possessive get can be |
|---|
| 52 | disabled, enabled for all but disconnected players, or enabled |
|---|
| 53 | at all times (the default PennMUSH behavior) |
|---|
| 54 | |
|---|
| 55 | New functions: |
|---|
| 56 | |
|---|
| 57 | * lit() returns its input totally unparsed, and without spaces compressed. |
|---|
| 58 | * t() returns the truthvalue of its input, guarranteed to be either |
|---|
| 59 | 1 or 0. |
|---|
| 60 | * objmem() and playermem() functions, return the memory usage of |
|---|
| 61 | an object or all of a player's objects. Requires search_all power. |
|---|
| 62 | * grab(list,pattern[,delimiter]), returns the first element of list |
|---|
| 63 | which patches the pattern. Patterns are of the match() type. |
|---|
| 64 | From the TinyMUSH 2.2 code. |
|---|
| 65 | |
|---|
| 66 | Minor Changes: |
|---|
| 67 | |
|---|
| 68 | * You must actually own an object (not just control it) or be a |
|---|
| 69 | Wizard in order to set it chown_ok or dest_ok. By Ralph Melton. |
|---|
| 70 | * You can use #$ in the actions in a switch() function |
|---|
| 71 | or @switch/@select statement, and it will be replaced by the switch |
|---|
| 72 | expression before executing or evaluating. This can improve |
|---|
| 73 | efficiency and save space. For example: |
|---|
| 74 | switch(complexfunc(%0),Bob,BobResult,#$) |
|---|
| 75 | is equivalent to: |
|---|
| 76 | switch(complexfunc(%0),Bob,BobResult,complexfunc(%0)) |
|---|
| 77 | but only requires a single evaluation of complexfunc(%0). |
|---|
| 78 | Suggested by Kenric@DuneII. |
|---|
| 79 | * "things" is a synonym for "objects" in @search now. By Ralph Melton |
|---|
| 80 | * Blank lines are no longer squished out of help/news/events when they |
|---|
| 81 | are displayed. |
|---|
| 82 | |
|---|
| 83 | --- Fixes --- |
|---|
| 84 | |
|---|
| 85 | * #-2 is treated as a "0" (false, like #-1) in functions which need a |
|---|
| 86 | logical value for it. Previously, it was treated as -2 (true). |
|---|
| 87 | * @select is now considerably more efficient - it no longer will |
|---|
| 88 | evaluate anything after the matched action. The old behavior |
|---|
| 89 | could well be a bug in the right conditions as well. |
|---|
| 90 | * atr_add now rejects null attribute names, so you probably can't set them |
|---|
| 91 | any more. Suggested by Kalkin, the code's by Mike@StarWars. |
|---|
| 92 | * Players can reset a DARK flag on themselves, but still can not |
|---|
| 93 | set themselves DARK. |
|---|
| 94 | * andflags(me,!Dc) used to return 1 if I am !dark and !connected, |
|---|
| 95 | instead of !D and connected, as the help states. Fix by Ralph |
|---|
| 96 | Melton. |
|---|
| 97 | * Halting an object which is @wait'ing used to fail to decrement |
|---|
| 98 | the owner's queue attrib. Fixed now. Patch by Ralph Melton. |
|---|
| 99 | * set_flag uses strupper instead of upcasestr now, which should fix |
|---|
| 100 | a bug on some systems wherein "cd" command would crash the MUSH and |
|---|
| 101 | a similar bug wherein players connecting would crash the MUSH if |
|---|
| 102 | the ON-VACATION flag was in use. |
|---|
| 103 | * The old channel syntax (@channel foo=command) works again. |
|---|
| 104 | * The RULES option now works. |
|---|
| 105 | * The convtime() has been rewritten to work on NeXT's correctly. |
|---|
| 106 | Previously, its malloc failed and it returned -1. |
|---|
| 107 | * Systems which have getrlimit, but *don't* have RLIMIT_NOFILE, |
|---|
| 108 | are now supported. Notably, Aix 2.x and 3.x. |
|---|
| 109 | * The installation hints for Solaris 2 have been improved. |
|---|
| 110 | WAIT_TYPE is defined as int, and if NBPC can't be found for |
|---|
| 111 | getpagesize(), it'll try PAGESIZE instead. Thanks to Kalkin for these. |
|---|
| 112 | * Installation for AIX has been improved. AIX required inclusion of |
|---|
| 113 | sys/select.h in the IDENT stuff. |
|---|
| 114 | * Various rewrites of tests against NOTHING to use the GoodObject() |
|---|
| 115 | macro instead. Thanks to Ralph Melton for some of these. |
|---|
| 116 | * Got rid of some warnings when compiling mkindx |
|---|
| 117 | |
|---|
| 118 | |
|---|
| 119 | Version 1.50 patchlevel 10 Dune #1 January 5, 1995 |
|---|
| 120 | |
|---|
| 121 | --- Features --- |
|---|
| 122 | |
|---|
| 123 | Major changes: |
|---|
| 124 | |
|---|
| 125 | * When players attempt to log in to a Guest character that is already |
|---|
| 126 | in use, the server tries to find one that isn't, and connects the |
|---|
| 127 | player to that. If it can't, you get the old behavior (two connections |
|---|
| 128 | to the single Guest). |
|---|
| 129 | * Extended @mail system is available with many new mail commands. |
|---|
| 130 | * Sending SIGHUP (kill -1) to the MUSH process can cause it |
|---|
| 131 | to recache text files and reread mush.conf on the fly. |
|---|
| 132 | * Dump warnings 5 minutes and 1 minute before non-forking |
|---|
| 133 | dump, and optional announcement at completion of dump. |
|---|
| 134 | * Guest players may not set attributes. |
|---|
| 135 | * Options to add two new news.txt type files: rules.txt and index.txt. |
|---|
| 136 | * Kill command can be disabled. |
|---|
| 137 | * @aconnect/@adisconnect messages on individual rooms. |
|---|
| 138 | |
|---|
| 139 | New options: |
|---|
| 140 | |
|---|
| 141 | * Many many new options. Read 'dune.h' for information and to choose |
|---|
| 142 | which options you want. Pretty much all of the changes listed here |
|---|
| 143 | can be turned on and off from dune.h, except some fixes. More are |
|---|
| 144 | detailed in dune.h |
|---|
| 145 | |
|---|
| 146 | Changes to commands: |
|---|
| 147 | |
|---|
| 148 | * CD command at connection screen allows Wizards to connect to the game |
|---|
| 149 | DARKly. |
|---|
| 150 | * @sitelock command for on-the-fly sitelocking by Wizards. |
|---|
| 151 | * @dump/paranoid can try to fix the db in memory, too. |
|---|
| 152 | * @decomp/db, produces decomp output using dbref of object instead |
|---|
| 153 | of its name. |
|---|
| 154 | * ex/mortal, shows examine output as if player were mortal. |
|---|
| 155 | * Option to rename @destroy to @recycle, since @dest and @desc are |
|---|
| 156 | easy to confuse. |
|---|
| 157 | * @restart command. Combines an @halt with triggering @startup. |
|---|
| 158 | * @hide now provides feedback when used. |
|---|
| 159 | * @find may be restricted to royalty, the only ones for whom it might |
|---|
| 160 | possibly be useful. |
|---|
| 161 | * @function now lets you know when it updates an @function. |
|---|
| 162 | * The old (pl8?) @channel <channel>=<function> syntax is back, along |
|---|
| 163 | with @channel/<function> <channel>, for those who liked it. |
|---|
| 164 | * @grep can be either case-sensitive or not (the default). |
|---|
| 165 | * If you don't specify the destination attribute in @cpattr, it |
|---|
| 166 | assumes you want the same attrib name as the source attrib. |
|---|
| 167 | * @mvattr, like @cpattr, but removes old attribute. |
|---|
| 168 | * ANSI players now see their @edit additions in bold. |
|---|
| 169 | * Rooms and exits can @emit. Rooms @emit into themselves (like @remit), |
|---|
| 170 | and exits @emit to their source room. |
|---|
| 171 | * @squota can now be given quota levels as +<quota> or -<quota>, to |
|---|
| 172 | increase or decrease a player's quota from its current level. |
|---|
| 173 | |
|---|
| 174 | Changes to functions: |
|---|
| 175 | |
|---|
| 176 | * encrypt() and decrypt() functions. |
|---|
| 177 | * hidden() function for checking if a player is hidden. |
|---|
| 178 | * hastype() function for checking if a thing is a given type. |
|---|
| 179 | * pemit() function sends pemits to a list of objects. |
|---|
| 180 | * lparent() function, returns object's parent, grandparent, etc. |
|---|
| 181 | * quota() function, returns a player's quota. |
|---|
| 182 | * N-dimensional vector arithmetic functions: vadd(), vmul(), vsub(), |
|---|
| 183 | vmag(), vdim(), vunit() |
|---|
| 184 | * haspower() can be restricted to admin. |
|---|
| 185 | * "Lower math" functions: shr(), shl(), inc(), dec() |
|---|
| 186 | * beep() with no arguments produces a single beep. |
|---|
| 187 | * pmatch() will now accept *player or #dbref arguments. |
|---|
| 188 | * lsearchr() function does an lsearch *backwards* through the db. |
|---|
| 189 | |
|---|
| 190 | Changes to flags/powers: |
|---|
| 191 | |
|---|
| 192 | * Flags can be defined as dark (invisible to all but God), |
|---|
| 193 | mdark (invisible to mortals), and odark (invisible to mortals who don't |
|---|
| 194 | own the object) in flags.c. |
|---|
| 195 | * @cemit can be granted as a power |
|---|
| 196 | * The ability to set the DEBUG flags on objects the player controls |
|---|
| 197 | can be granted as a power (idea by Kenric@DuneII) |
|---|
| 198 | * Optional COLOR flag to control reception of ANSI color apart from |
|---|
| 199 | ANSI hiliting. |
|---|
| 200 | * OPAQUE flag on exits. OPAQUE exits in translucent rooms look |
|---|
| 201 | like normal exits in non-translucent rooms. |
|---|
| 202 | * FIXED flag prevents @tel and home. |
|---|
| 203 | * DARK Wizards need not trigger @aenter. |
|---|
| 204 | * The SUSPECT flag is now abbreviated 's'. |
|---|
| 205 | * NO_LEAVE flag on objects prevents 'leave' command from working in them. |
|---|
| 206 | Useful for flying vehicles and the like. |
|---|
| 207 | * UNREGISTERED flag for use with on-line registration. UNREGISTERED |
|---|
| 208 | players can't have @powers set on them. |
|---|
| 209 | |
|---|
| 210 | Minor changes: |
|---|
| 211 | |
|---|
| 212 | * &adestroy attribute triggered when object is dest'd. |
|---|
| 213 | * &amail attribute triggered when admin player receives @mail. |
|---|
| 214 | * Player/room/object names can appear automatically in bold. |
|---|
| 215 | * Dark and Hidden players are distinguished on the admin WHO list |
|---|
| 216 | * Dark and Hidden players are indicated on the admin DOING list |
|---|
| 217 | * ESC characters can not be put in @doing's |
|---|
| 218 | * Wizards who idle are set hidden, not DARK. Same for royalty. |
|---|
| 219 | * DARK wizards enter and leave @chat channels silently. |
|---|
| 220 | * Royalty can now see the Wizard @channel/list |
|---|
| 221 | * The mortal @channel/list lists only public channels. |
|---|
| 222 | * @idle/@haven/@away attribs which evaluate to nothing are not |
|---|
| 223 | sent to the paging player. |
|---|
| 224 | |
|---|
| 225 | |
|---|
| 226 | --- Fixes --- |
|---|
| 227 | |
|---|
| 228 | * TRANSPARENT variable exits don't crash the MUSH when looked at. |
|---|
| 229 | * @channel/delete and @channel/privs take the right number of arguments |
|---|
| 230 | * @decomp now decompiles flags properly. |
|---|
| 231 | * When logins are disabled, players may not create characters. |
|---|
| 232 | * The controls() function is made safer. Defining SAFER_CONTROL prevents |
|---|
| 233 | anyone but God from controlling God, any non-wizard from controlling |
|---|
| 234 | anything with a wizbit, and any non-admin from controlling anything with |
|---|
| 235 | a roybit. |
|---|
| 236 | * Player names are made safer. Defining SAFER_PLAYER_NAMES prevents the |
|---|
| 237 | use of [, ], %, and \ in player names. |
|---|
| 238 | * The strupper() function is made safer. |
|---|
| 239 | * Mortals can remove the DEBUG flag on objects they own. |
|---|
| 240 | * The set functions now take delimiters like they should. |
|---|
| 241 | * Revwords() takes a delimeter, like it should. |
|---|
| 242 | * @config displays whether function side effects are available correctly. |
|---|
| 243 | It used to get it backwards. |
|---|
| 244 | * Some checks against NOTHING have been changed to use the GoodObject() |
|---|
| 245 | macro in look.c and possibly other places. |
|---|
| 246 | * It's more difficult for players to enter themselves. |
|---|
| 247 | * PLAYER_NAME_SPACES works right now, use double-quotes around |
|---|
| 248 | multi-word names. |
|---|
| 249 | * haspower() on unknown powers now returns #-1 NO SUCH POWER instead |
|---|
| 250 | of a null string. |
|---|
| 251 | * replace(|2|3|4,3,foo) now returns |2|foo|4, instead of |2|3|foo |
|---|
| 252 | Patch by Ralph Melton |
|---|
| 253 | * Players must be @elocked before being set ZONE, for security. |
|---|
| 254 | Idea by Kenric@DuneII |
|---|
| 255 | * The mail_init/load_mail stuff in game.c has been revised because |
|---|
| 256 | Irix 5.2 at least does not return NULL when popen'ing uncompress on |
|---|
| 257 | a non-existent file in some cases. |
|---|