root/releases/1.6/1p1/CHANGES-5

Revision 22, 17.5 KB (checked in by pennmush, 3 years ago)

PennMUSH 1.50p8 Archival

Line 
1
2The changes in this file begin with PennMUSH 1.50 patchlevel 4 and go
3through patchlevel 7.
4
5   -- Amberyl (lwl@eniac.seas.upenn.edu)
6
7==========================================================================
8 
9Version 1.50 patchlevel 4  #1,  October 23, 1992
10
11--- Features ---
12
13- New additions -
14    * @inprefix and @infilter attributes.
15    * Evaluative locks. @lock foo=atr/val does an evaluation on
16        the ATR attribute on foo (get_eval style). The lock is passed if
17        that equals val.
18
19- Improvements -
20    * Added command count; priv'd WHO changed to reflect this.
21
22- Changes to commands -
23    * @pemit and @remit to players obey pagelocks.
24    * @notify and @drain give player a message.
25
26--- Other changes / bug fixes ---
27
28- Minor changes -
29    * lock() always works for royalty.
30    * Matching for possessive look and get changed somewhat, so possession
31        checks are done _after_ trying to match everything else.
32    * lwho() works for everyone (but does not show dark wizards to mortals).
33    * Ignore "null" commands from non-players.
34
35- Bug fixes -
36    * Changes which made it into 1.50 p3 #2:
37        Checking for valid location done near beginning of command checks.
38        Properly ifdef'ed a clear_mail() in wiz.c
39        Fixed a coredump bug in @search for no arg3 specified.
40    * Wizards and royalty can't unset their own flags. Also, royalty
41        can only roy-bit objects they own. Previously this latter was
42        enforced only via a controls check. This, however, allows royals
43        to roy-bit objects by placing them in a controlled zone; this is
44        not desirable behavior.
45    * @tport and friends work as advertised.
46    * @decompile on players no longer incorrectly sets a @parent field.
47    * 'look here' inside an object now properly displays idesc.
48    * Explicitly prevented non-connected players from being @booted.
49    * Fixed an echo 'bug' with puppets: (more of a 2.0 compat thing)
50         > @fo Puppet=:foofs.
51         Puppet> Puppet foofs.
52         Puppet foofs.
53    * Fixed direct entering of password in @password.
54    * Fixed bug with semaphores caused by not uncompressing semaphore
55        attribute before using it. Premature @notifies to prevent future
56        blocking should now work.
57    * Mail allows "hard" newlines, and now uses standard db-read routines.
58    * Mail sanity checks for bad objects with mail.
59    * atr_comm_match now correctly blocks checking of $commands from the
60        parent. Attributes are entered into the hash table as "checked" even
61        if they're just straight text and don't contain a $command.
62
63
64==========================================================================
65 
66Version 1.50 patchlevel 5  #1,  November 8, 1992
67
68--- Features ---
69
70- New additions -
71    * LOGOUT command. Disconnects you from a character but not the MUSH.
72    * @daytime and @login replaced by generic @enable/@disable command.
73        These can also be used to control logging. Their values are now
74        settable in the config file.
75    * ISWORD(). Returns 1 if every character in a string is a letter.
76    * NO_COMMAND flag, on an experimental basis. An object set NO_COMMAND
77        is not checked for $commands. Pending more profiling data, this
78        flag might stay or go.
79
80- Improvements -
81    * panic() routine now tells connected players the cause of the panic.
82
83- Changes to commands -
84    * @decompile can take a wildcarded attribute pattern.
85    * @search and lsearch() have been fixed to be consistent with 2.0.
86        Also, parameters to them are no longer case-sensitive. In addition,
87        the PARENT class allows you to find all children of an object.
88        Royalty now performs these without restriction (i.e. like wizards).
89        Mortals can no longer get data on objects they don't own (for
90        example, @search flags=Wc no longer works for them.)
91        Fixed problems with "type conflicts" that weren't, and generally
92        robustified this code.
93
94--- Other changes / bug fixes ---
95
96- Minor changes -
97    * The make dependencies in the Makefile have been updated.
98    * @config now takes the switches "costs" and "globals". The latter
99        lists parameters like "logins", "daytime", and the logging stuff.
100        Also, redundant/stupid stuff in the @config listing has been zapped.
101    * All "strcpy(buff, "");" statements in eval.c replaced by an infinitely
102        more sensible "*buff = '\0';"
103    * Default flags set by the conf file are now checked for validity -- i.e.
104        you can't make GOING, STARTUP, and CONNECTED, or type flags, defaults.
105    * Royalty can see the quotas of other players via @quota.
106    * Royalty can always get the zone() of an object.
107    * Royalty can @stats other players.
108    * Removed the @use-does/@does and gripe commands. Nobody uses the first,
109        and there are better ways of communicating (like @mail) than gripe.
110    * Got rid of help.c, having the help functions call do_new_spitfile
111        directly (that function was moved into bsd.c)
112    * Moved all the dead code out of the dist package.
113    * Got rid of the nalloc memory allocation package, and all associated code
114        It's not been supported for close to a year, and nobody uses it.
115    * In hash stuff, malloc calls of the format malloc(sizeof(*ptr))
116        (K&R 2nd-edition how-to-write-hash-stuff standard) to the more
117        common (and sensible) malloc(sizeof(POINTER_TYPE)) format.
118
119- Bug fixes -
120    * Players shouldn't be able to execute commands from Garbage if they
121        need a valid location.
122    * Documented the ISNUM() function (which existed but wasn't in the docs)
123    * Fixed exec() call problem with wrong 'cause' in did_it.
124    * Fixed sort() so it doesn't segfault on an empty list. Also, it no
125        longer uses calloc()  (and thus no longer leaks memory).
126    * Fixed a bug with semaphore execution not copying the stack correctly.
127    * Fixed the attribute lock corruption bug. AUGH.
128    * Logging function is only called for general commands if log_commands
129        is on or the player is SUSPECT.
130    * v() permission check is now correctly AF_MDARK not AF_WIZARD.
131    * find_flag_on_type (the wrapper for find_flag) now returns -1 on error
132        instead of 0, since 0 is the ROOM flag. All calls to these functions
133        have been modified.
134    * Functions are no longer evaluated unless the parser really needs them.
135        This cuts down on some overhead, as well as odd messages for things
136        like "help loc()" or even the nonsense "foo loc()"
137    * Fixed memory leak in page-return, and got rid of pronoun_substitute()
138        function completely (relic of the old parser).
139
140==========================================================================
141 
142Version 1.50 patchlevel 6  #1,  December 14, 1992
143
144--- Features ---
145
146- New additions -
147    * VAL() function. Takes leading numeric prefix from a string.
148    * INDEX() function. Like extract(), but works on arbitrary-length
149        strings, on an arbitrary separator.
150    * WHERE() function. Returns "true" location of an object.
151    * Settable attribute flags have been added (@set obj/atr=flag).
152        There are three such flags, "no_command", "visual", and
153        "no_inherit". The first two are just the old AF_NOPROG and
154        !AF_ODARK flags. The last prevents the inheritance of an
155        attribute by the children of a parent object.
156    * DEBUG flag, on an experimental basis. It is not settable by mortals,
157        and it is computationally expensive. It provides precise output
158        from the parser.
159    * New config directive EX_PUBLIC_ATTRIBUTES added. Examine format for
160        objects you don't control is now 2.0-ish. do_examine rewritten.
161
162- Improvements -
163    * ITER() now works in a much more usable way. It gets its arguments
164        un-eval'ed, and escapes/braces are no longer needed to get it
165        to evaluate in a "normal" way. UFUN() also now works with ITER().
166    * SWITCH() can now take up to 100 arguments, and its arguments are not
167        evaluated until needed.
168
169- Changes to commands -
170    * Royalty can set themselves DARK. This vanishes them from the WHO list
171        but not from the visible room contents.
172    * Royalty can set themselves MONITOR.
173
174--- Other changes / bug fixes ---
175
176- Efficiency -
177    * Major improvements in the efficiency of the game have been made. Most
178        of them are supported by profiling data (some have not been tested
179        under a profiler).
180    * string_compare has been replaced by strcasecmp. The built-in library
181        function is probably optimal.
182    * Got rid of reconstruct_messasge. No more spaces around '=' sign
183        in 'say', '@wizwall', etc, and no more wasted time splicing messages
184        together.
185    * If we match "me", "here", "#dbref", or "*player", we do no further
186        matching.
187    * The construction "<name of nearby object> <command>" as an alias for
188        @force no longer works. "<#dbref> <command>" still works, but the
189        amount of matching caused by the former is insane.
190    * Rewrote spname(). If FULL_INVIS isn't defined, it's the same as the
191        Name() macro. Otherwise, it returns a const char * and doesn't do
192        a strcpy (blech).
193    * hash_fn now uses a bitmask instead of modulus. Hash table sizes have
194        also been increased.
195    * atr_match, atr_get, and atr_add now use all upper-case, eliminating
196        the need for string_compare rather than strcmp (and getting rid of
197        zillions of tolower() calls). Added upcasestr() function, which
198        converts a string to uppercase, in-place. (We convert from lower to
199        uppercase MUCH less frequently than vice versa).
200    * Small text files are now cached. As long as your small text files
201        are small (and they SHOULD be!) the extra memory overhead is not
202        at all significant. This eliminates the several grillion calls to
203        open() and close() caused by players connecting and disconnecting.
204        @readcache command added. (Note that you may have to add a blank
205        line to the end of your small text files, since the new code does
206        not automatically do so.)
207
208- Misc. changes -
209    * Destroying an exit tells you what exit number you destroyed.
210    * Mortals can type "ex *player" (since they can type "ex [num(*player)]")
211    * Added flags.h (split from db.h).
212    * Normal MUSH @shutdown now writes out process statistics.
213    * The TERSE flag now suppresses ONLY auto-look messages.
214    * Things without real locations (like rooms) can once again @trigger.
215    * options.h file has been split from config.h. options.h contains all
216        the compilation directives; config.h contains the miscellaneous
217        configuration-type things which should not be modified.
218    * Commands done in GOING rooms are no longer considered invalid.
219    * @parent <object> with no other args unparents an object.
220    * REPEAT() with 0 repetitions returns a blank string, not an error.
221
222- Code cleanup -
223    * DESC is typedef'ed rather than #define'd in bsd.c.
224    * Added new match predicate, match_nearby(). Like an "everything" match,
225        but does not check "absolute" refs and *player refs for mortals.
226        Cleaned up code to use this where appropriate.
227    * Almost all of the set.c functions now do matching in the standard way.
228    * In various places, checks for strlen(foo) == 0 have been replaced by
229        *foo == '\0'.
230    * addrout() is now hostname_convert() (a more sensible name). Also
231        rewrote it to use the standard conversion routines.
232    * All attribute fetches in eval.c use a consistent form of permission
233        checks. (This has the side-effect of no longer allowing objects
234        to get a ZFUN from a link_ok zmo). Also, Can_Read_Attr macro is
235        now used all over the code.
236    * Some minor cleanup in atr_add.
237    * fun_lcon, fun_lexits, next_con, and next_exit have been rewritten.
238        In addition to being much neater, they now provide more security;
239        you cannot use them remotely on a room you don't control, regardless
240        of whether or not you own any of the objects in it.
241    * The prefix for do_wall is directly assigned instead of being strcpy'ed.
242    * In eval.c, and some other files (partially), db[x].foo references
243        have been replaced by the appropriate macros.
244    * Added where_is function, returning the true location of an object.
245    * can_link and can_link_to are macros.
246    * Added Can_Locate macro.
247    * In eval.c, fun_foo declarations are static void intstead of void.
248    * controls() code now uses a bunch of macros.
249
250- Bug fixes -
251    * Eval locks now work properly, since we no longer clobber the
252        uncompress buffer.
253    * setunion() duplication bug fixed.
254    * edit() recursion bug fixed.
255    * Definition of "nearby" corrected to include exits in the same room.
256    * You can't "kill" yourself.
257    * The lock buffer overflow problem has been fixed the "right" way.
258    * esnotify now uses notify_noecho, so puppets don't get emit repeats.
259    * Fixed coredump bug caused by exits doing certain funtion calls
260        (check was originally for NOTHING rather than GoodObject).
261    * Fixed possible buffer overflow problem in set_interp.
262
263- Compatibility -
264    * The #ifdefs around the rusage stuff have been changed to HAS_RUSAGE.
265        The systems which do and don't have this don't follow any kind of
266        consistent pattern.
267    * Some minor changes to get the code Linux-compatible. The original
268        patches for this were provided by Bob Green (bob@inmos.co.uk).
269        The restart script is now written in sh instead of csh.
270        FNDELAY changed to O_NDELAY (on Suns, they're the same. Hopefully
271        this is true for other systems as well, so things don't break).
272
273==========================================================================
274 
275Version 1.50 patchlevel 7  #1,  January 17, 1993
276
277--- Features ---
278
279- New additions -
280    * Individual powers system. Individual objects and players can be given
281        the ability to do specific things, such as "examine anything",
282        "teleport anywhere", "boot players", etc.  The BUILDER and IMMORTAL
283        flags are now powers, as well.
284    * Expanded flag system. Flag lookups are now hashed. A database conversion
285        is necessary (see ADD_POWERS directive in options.h, which converts
286        a database for both the new flags and the powers system).
287    * There is a "no_clone" attribute flag (do not copy attribute when
288        the object is @cloned).
289    * "@config/functions" lists all functions.
290    * New command "@function" allows the addition of user-defined global
291        functions which behave just like built-in MUSH functions, but
292        can be programmed in MUSH in a UFUN() format.
293
294- New functions -
295    * setq() and r() allow local variables (registers, numbered 0-9),
296        saved through the execution of a command.
297    * squish() removes leading and trailing spaces from a string, and
298        crunches inter-word spaces down to a single space.
299    * filter() returns members of a list for which a user-def'ed function
300        evaluates to true ("1").
301    * fold() recursively evaluates a user-def'ed function and list.
302    * rjust() and ljust() pad strings with spaces (or another fill character)
303    * nsort() sorts a list of numbers.
304    * shuffle() randomizes order of elements in a list.
305    * scramble() randomizes order of characters in a string.
306 
307- Improvements -
308    * cat() can take an arbitrary number of arguments.
309    * conn() and idlesecs() now recognize #dbref and *player. Added alias
310        idle() for idlesecs().
311    * The mail database name is now a config option (if you use @mail, you
312        MUST change your conf file).
313
314--- Other changes / bug fixes ---
315
316- Misc. changes -
317    * "Exits:" line in examine is back.
318    * examine on non-existent attribute(s) returns "No matching attributes."
319    * NO_COMMAND doesn't block ^, since you have to set the LISTENER flag
320        on the object anyway in order to activate ^.
321    * @config shows a couple more options.
322    * The QUIET flag suppresses "Drained.", "Notified.", "Halted."
323    * Logging of database reads at startup is slightly neater.
324
325- Code cleanup -
326    * Database loading routines have been changed. Support for "old-style"
327        MUSH databases has been removed (who USES old-style MUSH databases??)
328        The config directives ADD_PARENTS, ADD_LOCKS, and ADD_ZONES are gone;
329        if you need to convert using them, convert using an older PennMUSH
330        version, then upgrade that database to the present code.
331    * atr_comm_match and list_check stuff in game.c is macro'd and a bit
332        easier to read.
333    * Got rid of some unnecessary tprintfs with notify_noecho.
334    * Prevented buffer overflows with puppet messages.
335    * @switch and related stack-pointer-changing functions no longer keep
336        copying the stack; added local_wild set of functions.
337    * FUNCTION(x) general function declaration macro for eval.c functions.
338    * XFUNCTION(x) macro for functions not declared in eval.c
339    * cat() and strcat() functions use safe_str and friends.
340    * Fixed warnings about assignments being used as truth values.
341    * Recoded sort().
342    * List-handling functions use list2arr where possible (sort, setfuns).
343    * UFUN() code made more generic - addition of parse_attrib() function,
344        splits up something of format "<obj>/<attr>" (returning dbref and
345        pointer to attrib), do_userfn() executes something of UFUN() format.
346    * "channels" field is only in memory if you use chat system.
347
348- Bug fixes -
349    * Debug and Verbose output now call raw_notify instead of notify,
350        so stack pointer doesn't get clobbered.
351    * switch() and iter() arguments are evaluated properly (small change
352        made so nesting of these within other functions works sensibly).
353    * Players cannot enter arbitrary objects (by dbref) remotely.
Note: See TracBrowser for help on using the browser.