root/releases/1.6/0p2/CHANGES-6

Revision 28, 18.3 KB (checked in by pennmush, 3 years ago)

PennMUSH 1.50p10dune1 Archival

Line 
1
2This is the most current changes file for PennMUSH. Please look it over;
3each version contains new things which might significantly affect the
4function of your server.
5
6==========================================================================
7 
8Version 1.50 patchlevel 8  #1,  April 21, 1993
9
10--- Features ---
11
12- New additions -
13    * TINY_ATTRS option imitates 2.0 examine attribute format.
14    * Player ZONE flag and ZoneMaster control for "safe" zones.
15    * @hide command hides player from WHO list.
16    * Compression program can be set in conf file (recommended: gzip)
17    * @oemit can now take the format "room/player".
18    * AF_MDARK and AF_WIZARD are now settable attribute flags by priv'd
19        players. They're 'm' and 'w' in the attribute flags list.
20    * @pcreate power added.
21    * @motd/full and full.txt displayed when game is full.
22    * Added channel-wipe.
23    * Added @alias.
24 
25- New functions -
26    * VISIBLE() - can one object examine another object or attribute?
27    * ITEMS(), ELEMENT(), DELETE(), REPLACE, INSERT() - arbitrary-separator
28        functions which operate on lists.
29    * ORFLAGS(), ANDFLAGS() - check existence of muliple flags.
30    * FULLNAME() - returns the full name of something.
31    * Big pile of floating-point functions added.
32
33- Improvements -
34    * LATTR() takes an <obj>/<wildcard attr> pattern.
35    * @prefix and @inprefix do pronoun substitution.
36    * @search takes an 'eval' parameter.
37    * Failing to give a second arg to @lock or @link unlocks/unlinks.
38    * MAIL() can now retrieve messages owned by other players, and count
39        the number of messages a player has.
40    * Log formats should be a bit more consistent. For the connect log,
41        all messages should show hostname and descriptor.
42    * The new config option SINGLE_LOGFILE dumps all error messages to
43        stderr, freeing up some file descriptors.
44    * New conf option enables/disables logging of @wizwalls.
45    * AIX port done, some other config defs fixed.
46    * SORT() now 'autodetects' the sort type. NSORT() is no longer
47        necessary and has been removed.
48
49--- Other changes / bug fixes ---
50
51- Minor changes -
52    * decompile_atrs() and attribute text lock checking use local instead
53        of regular wild_match.
54    * strdup() uses bcopy() for speed.
55    * Examining an Opaque object doesn't show you the contents unless
56        you control the object.
57    * Rewrote atr_complete_match(). Also fixed the case-sensitivity
58        problem with attribute locks.
59    * Main command loop no longer checks to make sure that everything God
60        does is caused by God (so @adesc, etc. works).
61    * GET_EVAL() is now an alias for U() rather than EVAL().
62    * Parameter order of exec() changed to match 2.0's.
63    * All conf parameters now have default values.
64    * (Dis)connects of hidden players do show up on priv'd channels.
65    * Non-listening objects trigger @aenter and @aleave (but not the
66        messages, since that's annoying.)
67    * @search, @find, and examine always ignore the MYOPIC flag.
68    * Queue stuff is now refunded at startup.
69    * PID printed to log at startup.
70
71- Bug fixes -
72    * Lots of screw-ups with flag sets fixed.
73    * Conf file sets of flags now work properly.
74    * #def's of FUNCTION and XFUNCTION changed so Ultrix compiler
75        doesn't complain.
76    * LSEARCH() uses safe_str and safe_chr. Also fixed a problem with
77        a variable being used before being initialized, and a problem
78        with searching on powers.
79    * parse_dbref no longer ignores trailing garbage. "#123's foo" no
80        longer equates "#123".
81    * extra_arglist() obeys nesting (and fixes SWITCH() problem).
82    * convert_flags() handles 'E' flag properly.
83    * Fixed a parser bug in attribute sets which truncated at a '/'.
84    * Fixed some coredump bugs caused by not checking for HOME.
85    * dup_bool() error fixed (added BOOLEXP_OWNER case).
86    * db_free() frees enter and use keys (fixes potential memory leak).
87    * Prevented overwrites of built-in functions via @function.
88    * Fixed null-message-repeat chat bug.
89    * Fixed negative semaphore timeout problem.
90    * WORDS() uses ' ' instead of isspace().
91    * REMOVE() no longer screws up on things like 'remove(#434 #43 #22,#43)'
92    * Rewrote the setfuns 2.0-style. No more buffer overflows.
93    * Fixed problem with INDEX() and friends choking on null separators.
94    * Fixed function recursion bug caused by erroneous decrementation of
95        the function invocation counter. Took out redundant recursion
96        checks in the ufuns.
97    * Fixed coredump bug with closing null pointer to mail db.
98    * Login limit works properly.
99    * @scan takes the correct args and should no longer choke on '='.
100    * Bits of code cleanup in do_set(). @listen and @startup get handled
101        properly when lowercased.
102    * SQUISH() trims leading spaces properly.
103    * NO_TEL works correctly again.
104    * upcasestr() doesn't gag on NULL.
105    * 'visual' attribute flag saves/loads properly.
106    * Null names no longer kill @find.
107    * Null names get checked at startup and fixed if necessary.
108    * 'no_inherit' attribute flag works properly.
109
110==========================================================================
111 
112Version 1.50 patchlevel 9  #1,  December 11, 1993
113
114--- Features ---
115
116- New additions -
117
118  * "Quiet" channels added. They don't show connect/disconnect, joined/left,
119     and, in general, are good for mass-emit stuff.
120  * @cemit command emits to a channel.
121  * '%c' returns the current command.
122  * @dolist/notify  executes a '@notify me' at the end of the list. Excellent
123    for figuring out when you're done with your @dolist'ed commands.
124  * @pemit/list  pemits to a list of dbrefs. No more @dolist/@pemits needed!
125
126- New functions -
127
128  * CWHO() returns the names of players on a channel.
129  * OBJEVAL() evaluates an expression from another object's viewpoint.
130  * CENTER() centers text on a field.
131  * SQRT() takes the square root of a number.
132  * MAP() is like ITER() over a user-defined function.
133  * MUNGE() is a list-combining function to do things like conversion sorts.
134  * MIX() is like MAP(), but combines two lists.
135  * TRIM() trims characters at the beginning and/or end of strings.
136  * ISDBREF() checks if something's a valid dbref.
137
138- Improvements -
139
140  * @wipe can take an object-attribute pattern.
141  * 'l' parameter to locate() checks object location (container).
142  * Added starting_quota as a conf option.
143  * Shortened @grep output format.
144  * Made EOL for socket output \r\n instead of \n.
145  * ADD(), MUL(), AND(), and OR() can take up to 100 args.
146
147--- Other changes / bug fixes ---
148
149- Minor changes -
150
151  * @link can link already-linked exits.
152  * All channel commands now are switch-form.
153  * channel_name is now a macro, not a function.
154  * Setfuns and SORT() now have a maximum sort size definable (hardcoded).
155  * DEBUG output no longer prints things which evaluate to the same thing,
156    saving on spam. Single safe_str call, tprintf buffer increased to
157    BUFFER_LEN*3.
158  * Auto-unlimit of file descriptors at startup.
159  * Minor cosmetic cleanup in do_convtime.
160  * Added NVAL typedef (double or int, depending on config).
161  * For 2.0 compatibility, listening objects DO trigger all enter/leave
162    messages in DARK rooms now.
163  * Default interface.h input-length def changed to 2K (from 1K).
164  * Added match_objects(), like match_everything() without the exits.
165    Added match_limited(), used by wiz.c.  Fixed lots of files to use
166    consistent matching.
167  * Added varargs_preamble macro.
168  * @remit now obeys SILENT_PEMIT, and gives normal emit-style message to
169    player if player is in the room.
170  * Player is informed when he's @toaded.
171
172- Efficiency improvements -
173
174  * SORT() no longer performs conversions for every comparison.
175  * Removed redundant check in do_itemfuns.
176  * Matching is only done on exits if there is no exact match after
177    trying all other possibilities.
178
179- Compatibility changes -
180
181  * For AIX, include sys/select.h instead of manually defining the
182    bit-twiddling stuff. The system apparently defines _AIX.
183  * Changed HPUX defines to SYSV, made some fixes for Linux.
184  * Incorporated Anskiere's Solaris compat mods.
185  * Fixed floating points on NeXT by adding "double atof();"
186  * Made fix to dbdefs.h to compile on Sun cc; don't declare malloc fns.
187  * Made various fixes to get smooth compilation on Iris.
188  * Added ESC_CHAR and BEEP_CHAR defines to handle weird non-ANSI systems.
189  * Got getrusage() on HP-UX working (brain-damaged syscall. Thanks, Talek.)
190
191- Bug fixes -
192
193  * Setfuns no longer choke on huge sets (wrong defined sizes for arrays).
194  * DELETE(foo%b,1) and DELETE(foo,1) now return the same result.
195  * @mail doesn't clobber @listen's uncompress buffer.
196  * REPLACE(foo%b,1,Test) and REPLACE(foo,1,Test) now return the same result.
197  * Huh? log with bad location no longer causes a coredump (augh).
198    Fixed MAX()/MIN() bug with printing double as int.
199  * Fixed coredump bug on VISIBLE() on non-existent attributes.
200  * Fixed problem with VISIBLE() on non-existent objects returning 1, not 0.
201  * Enactor (%#) in idesc evals to player, not object.
202  * CONTROLS() now obeys the inherit flag.
203  * Taking from an object now accepts controls() as well as enter_ok.
204  * ANSI '\x' control sequence is stripped by the parser.
205  * You can enter raw encrypted passwords if NOCRYPT is defined.
206  * Fixed empty-list coredump bug in SORT().
207  * Fixed coredump bug in @verb caused by non-existent victim.
208  * Corrected order of statements in do_lock so @lock foo/va works again.
209  * Fixed coredump bug in player.c (make sure LAST attribute exists before
210    decompressing it. Bleah.)
211  * SUSPECT can't be found by mortals using ANDFLAGS() or ORFLAGS().
212  * Non-Inherit things can no longer @parent things which are Inherit.
213
214==========================================================================
215 
216Version 1.50 patchlevel 10 Gamma,  June 22nd, 1994
217
218--- Features ---
219
220Major changes:
221
222  * Guest is now a power. Set it on a player to restrict its command set.
223  * New power Announce, which controls the ability to @wall.
224  * Incorporated Talek's wild.c, a much-faster replacement for the old.
225  * Incorporated Talek's patches for clearing %0-%9 properly (removing an
226      ancient security hole), and preserving r()-values across the queue.
227  * Incorporated Talek's new compress.c. Better but slower compression.
228  * Incorporated Talek's '#@' list-place code for iter() and @dolist.
229  * Incorporated Paul@Dune's mkindx.c for multiple topic headers.
230  * There is now a global variable 'mudtime' on which timers, functions
231      such as time() and secs(), and connect timestamps operate on.
232  * The wait queue and some of the timers now operate on absolute time.
233      This prevents lag from grossly changing the interval values.
234  * Checks of $commands now obey parent uselocks. This is a 2.0 convention,
235      and one that generally proves useful.
236  * Variable exit destinations. When you attempt to go through one of these
237      exits, it evaluates the exit's DESTINATION attribute as a U-function,
238      and uses the result accordingly. The exit destination dbref is marked
239      as #-2 (the ambiguous marker).
240  * Rooms can now be set LISTENER. The flag name has been changed to MONITOR
241      (which is what it's called in 2.0), with LISTENER as an alias. (Thus
242      the MONITOR flag on things/rooms and on players mean different things.)
243
244New options:
245
246  * New compile-time option, EXTENDED_ANSI. Enables the ansi() function,
247      allowing ANSI control codes to be used. This, unfortunately, also
248      requires stripping the codes for non-ANSI players, in raw_notify.
249      Uses the ANSI codes provided by Czakari, and functions provided by
250      Paul@Dune, with modifications.
251  * New parameters queue_chunk and active_queue_chunk control the number of
252      commands run from the queue when there isn't and is net activity,
253      respectively. This is supported by do_top() now taking an argument
254      (number of commands to try to execute), and returning the number
255      of commands executed. @kick has also been modified to use this.
256  * Added config directives for function recursion and invocation.
257  * New compile-time option, PLAYER_NAME_SPACES. Allows player names to
258      be more than one word long. This option has not be more than _very_
259      casually tested. Caveat emptor.
260
261Changes to commands:
262
263  * Incorporated Talek's @log command, with minor modifications.
264  * @config shows many more options to priv'd players.
265  * @oemit now takes its target location from the person to exclude, not
266      the person who is doing the @oemit (consistent with 2.0 behavior,
267      and more flexible).
268  * @ps now follows the 2.0 syntax. Items deleted from the queue are now
269    counted, and the entire thing calls a single generic routine.
270
271Changes to functions:
272
273  * New substitution: %qN is equivalent to r(N)  (also twiddled v() slightly)
274  * More functions take delimiters. The newly-modified ones are:
275      extract(), filter(), first() fold(), iter(), match(), member(), munge(),
276      rest(), revwords(), setdiff(), setinter(), setunion(), shuffle(),
277      sort(), splice(), wordpos(), words()
278  * Incorporated Talek's function side effects. link(), set(), parent(),
279      lock(), and clone().
280  * name() can now rename, if function side effects are allowed.
281  * controls() has been tweaked so it returns '#-1 <error message>' on invalid
282      objects, for consistency with other functions and with 2.0.
283  * delete() is now ldelete(). The new delete() function deletes characters
284      from a string. This is change to be consistent with 2.0.
285  * findable(). Can <a> locate <b>? Useful for those WHO-list-type globals.
286  * foreach(). Works basically like MAP(), but on strings.
287  * haspower(). Like hasflag(), but for powers.
288  * lcon() is now consistent with the 2.0 convention -- no more partial lists;
289      either you can get the entire list, or you can't get it at all.
290  * locate() has some new parameters: 'c' matches 'carried exits', supported
291      by match_carried_exit(). Exit matching now calls match_exit_internal().
292      'X' allows random choice if the result is ambiguous (#-2).
293  * lsearch() now takes an EVAL class.
294  * objeval() evaluates its first argument.
295  * owner() now can take an object/attribute pair.
296  * ports(). Returns the network descriptors a player is connected to.
297  * rloc(). Returns an object's location at a variable level.
298  * sort() autodetects for floating point, and uses qsort.
299  * sortby(). Sorts a list by an arbitrary u-function.
300  * stripansi(). Strips the ANSI codes from a string.
301  * User-defined functions, such as U(), now return an empty string, rather
302     than #-1 SOME ERROR MESSAGE, because 2.0 behavior is to return an empty
303     string, and, generally, the empty string is easier to handle.
304
305--- Fixes ---
306
307  * and() and or() are now logical, not bitwise. They stop when a conclusion
308      is made (i.e. when the result is inevitably true or false).
309  * Only God can @edit himself.
310  * @channel/delete args are passed correctly from game.c
311  * new_connection() error no longer causes the game to shut down.
312  * con() and next() cope with permission checks.
313  * Trying to set a non-wizard player Dark now returns an error, and doesn't
314      set the flag (even though it doesn't do anything).
315  * Removed a superfluous uncompress() in cque.c.
316  * Prevent players from setting flags on attributes that they can't set.
317  * Error logging in process_command calls do_log(), not fprintf().
318  * HugeQueue is now QUEUE_QUOTA + db_top.
319  * TEMPLE is once again only wiz-settable.
320  * Fixed an unused variable warning in player.c.
321  * Fixed a few warning messages about long ints being printed as ints.
322  * Fixed a few warning messages about discarding 'const' declarations.
323  * Removed bigrams stuff from the distribution.
324  * Removed obsolete ALLOW_RPAGE config directive.
325  * Fixed a small bug which resulted in a slight amount of extra
326      computation when the function invocation limit was exceeded.
327  * Fixed a bug in the checking of ZMO locks in the game's internal controls().
328      The privs parameter to eval_eboolexp() needs to be the ZMO in question,
329      rather than the object itself, in order for attribute locks to work as
330      would seem logical (the object being checked shouldn't even factor into
331      the equation, since by definition zone control is based solely upon
332      the ZMO's enter lock).
333  * Because people seem to want it back, the "pose" command is back, together
334      with a /nospace switch.
335  * Fixed "look" so "l/outside" works as an abbreviation.
336  * Added support for multi-word player names.
337  * The definition of an ok_name() has been tightened up, and the acceptable
338      characters in player names have been changed to be sonsistent with
339      the 2.0 definition of this. Furthermore, player name length now needs
340      to be _less than_, not _less than or equal to_, PLAYER_NAME_LIMIT.
341      Previous behavior was buggy.
342   * TRACE is now an alias for the DEBUG flag.
343   * lookup_player() now succeeds on the dbrefs of players. This allowed some
344       calls to match_absolute() to be removed, and is consistent with 2.0's
345       behavior.
346
347
348==========================================================================
349
350patchlevel 10 release Gamma #2
351
3526/23  Problem in cque.c, with @ps/all working for everyone, not just wizards.
353      Repeated attempts to fix. Finally got it right (no typos, etc.)
3546/23  Fixed problem with owner() returning wrong values.
3556/23  Quiet channel con/disconn messages fixed (used 'chan' instead of 'mask').
356
357==========================================================================
358
359patchlevel 10 release Gamma #3
360
3616/23  De-ANSIfied compress.c and wild.c.
3626/23  Correctly defined OLD_ANSI in the Sun cc compile line in the Makefile.
363      Got rid of Makefile redundancies for K&R compilers as well.
364
365==========================================================================
366
367patchlevel 10 release Gamma #4
368
3696/29  Fixed a parser bug incorrectly interpreting spaces in &-sets:
370      '&TEST-[xget(me, va)]' no longer boofs.
3717/1   find_flag's name parameter changed to 'char *' from 'const char *'
372      (upcasestr was trying to work on the thing, and causing core dumps
373      as a result on machines with compilers that enforce that sort of
374      thing. Nifty, eh?)
3757/1   extract() no longer coredumps if given less than 3 args (blah).
376
377==========================================================================
378
379patchlevel 10 release Gamma #5
380
3817/1   lookup_player() correctly returns dbrefs now. Dammit.
3828/24  NOCRYPT status is displayed in @config.
3838/26  Added identd support.
38410/22 revwords() should take varargs.
Note: See TracBrowser for help on using the browser.