| 1 | This version of code is based on the PernMUSH 1.15 code, formerly maintained |
|---|
| 2 | by Moonchilde (JT Traub, jt1o@andrew.cmu.edu). It has been heavily modified |
|---|
| 3 | by me in an attempt to increase compatibility with TinyMUSH 2.0 and to add |
|---|
| 4 | many features. The file which follows is a detailed log of the changes. |
|---|
| 5 | |
|---|
| 6 | This file is current through Release level 1.17 Gamma. Update changes are |
|---|
| 7 | numbered 1.17.01, 1.17.02, etc. The list of update changes in this file |
|---|
| 8 | are compressed into one long list, per major version. This file goes from |
|---|
| 9 | version 1.16 on; prior changes done by Moonchilde can be found in the file |
|---|
| 10 | CHANGES-1. -- Amberyl. |
|---|
| 11 | |
|---|
| 12 | ------------------------------------------------------------------------------ |
|---|
| 13 | January 14, 1992 -- Lydia Leong (lwl@eniac.seas.upenn.edu) Release level 1.16 |
|---|
| 14 | -- Probable last release of the PernMUSH code. The 1.x code family will |
|---|
| 15 | be maintained by T'nor, and will be known as SC-MUSH 1.0. That code |
|---|
| 16 | is based on PernMUSH 1.15, although it incorporates most of the features |
|---|
| 17 | in this release. A similar but different code, which diverged from the |
|---|
| 18 | main PernMUSH line at version 1.13, is Spellbound MUSH 1.0 |
|---|
| 19 | -- New functions |
|---|
| 20 | * CAPSTR() -- returns a string with the first character capitalized |
|---|
| 21 | * FLIP() -- reverses a string |
|---|
| 22 | * HASFLAG() -- checks if an object has a certain flag |
|---|
| 23 | * LCSTR() -- returns a string all in lowercase |
|---|
| 24 | * LNUM() -- creates a number list (i.e. LNUM(4) outputs 0 1 2 3) |
|---|
| 25 | * NEARBY() -- checks to see if two objects are "nearby" each other |
|---|
| 26 | * UCSTR() -- returns a string all in uppercase |
|---|
| 27 | * From the 2.0 code: |
|---|
| 28 | DIST2D() and DIST3D() -- returns the distance between points |
|---|
| 29 | WORDPOS() -- returns the word number a character position occurs |
|---|
| 30 | * LWHO() -- returns a list of connected players' dbrefs. This function |
|---|
| 31 | courtesy of Tim Poe (raven@ccwf.cc.utexas.edu) |
|---|
| 32 | -- New flags |
|---|
| 33 | * IMMORTAL -- wiz-settable flag which prevents objects from being killed |
|---|
| 34 | * NO_TEL -- prevents teleports from a room. Useful for puzzles. |
|---|
| 35 | * SAFE -- prevents destruction of an object. |
|---|
| 36 | * SUSPECT -- wiz-settable flag which reports the connects, disconnects, |
|---|
| 37 | name changes, kills, and attempted kills from a suspect player. |
|---|
| 38 | * TERSE -- suppresses room descriptions and succ/fail messages for |
|---|
| 39 | objects with this flag. Useful for moving through areas quickly. |
|---|
| 40 | -- New commands |
|---|
| 41 | * @nuke -- overrides the SAFE flag. |
|---|
| 42 | * @lemit -- "location emit" which sends a message to the outermost |
|---|
| 43 | container (always a room) of an object. |
|---|
| 44 | * @wallpose and @wallemit -- allow poses and emits in walls. The format |
|---|
| 45 | of @walls has been changed to prepend "Announcement:" to the message. |
|---|
| 46 | @wallpose may be abbreviated to "@wall :<pose>" |
|---|
| 47 | * @decompile -- dumps the sequence of commands needed to create an object. |
|---|
| 48 | * @dolist -- courtesy of Tim Poe (raven@ccwf.cc.utexas.edu - thanks!) |
|---|
| 49 | Repeats commands for a list (see the help for details). |
|---|
| 50 | -- New features |
|---|
| 51 | * @move/@omove/@amove -- attributes executed whenever an object moves. |
|---|
| 52 | * Enter locks -- objects now have a separate lock which governs whether |
|---|
| 53 | or not the object maybe entered. The ENTER_OK flag overrides the |
|---|
| 54 | lock. The @efail/@oefail/@aefail attributes are executed if the |
|---|
| 55 | lock is not passed. These locks are controlled by @elock/@eunlock. |
|---|
| 56 | * Page locks -- players have a page lock. If a target player is pagelocked |
|---|
| 57 | against his pager, he is treated as if he were HAVEN to that player. |
|---|
| 58 | * Page return -- an @idle message is automatically page-returned to a |
|---|
| 59 | successful page. If a player is HAVEN or his pagelock failed, his |
|---|
| 60 | @haven message is sent. If a player is not connected, his @away |
|---|
| 61 | message is sent. |
|---|
| 62 | * Enter/leave aliases -- objects now have @ealias and @lalias attributes |
|---|
| 63 | which do the obvious. So you can have "sit down" instead of |
|---|
| 64 | "enter chair" and "stand up" instead of "leave", etc. |
|---|
| 65 | * Global commands -- objects and exits in a Master Room are treated as |
|---|
| 66 | global. This is compile-time configurable. |
|---|
| 67 | * Lastsite attribute -- keeps track of site player last connected from. |
|---|
| 68 | -- Fixes and changes to old commands |
|---|
| 69 | * Whisper-pose -- "whisper <person>=:<pose>" now works. |
|---|
| 70 | * @ps -- the number of items in the queue is now counted. @ps count" |
|---|
| 71 | displays just the totals. |
|---|
| 72 | * @halt -- fixed to allow wizards to do "@halt <player>", and to allow |
|---|
| 73 | "@halt <object>" to be used as an alias for "@set <object>=HALT". |
|---|
| 74 | * A bunch of fixes to quota |
|---|
| 75 | Fixed @quota so it no longer crashes the MUSH. (Bleah!) |
|---|
| 76 | Fixed @clone so it now checks quotas. |
|---|
| 77 | Rewrote the help (it was inaccurate) |
|---|
| 78 | * Fixed some minor screwups in ROYALTY, and changed it to allow wizards to |
|---|
| 79 | set players royal, and royal players to set their objects royal. |
|---|
| 80 | Did some cleanup work on "do_examine" and related functions so |
|---|
| 81 | examine for ROYALTY actually works. (Grrrr.) |
|---|
| 82 | * Did some cleanup on "kill", fixing some bugs. @death/@odeath/@adeath |
|---|
| 83 | now works properly. |
|---|
| 84 | * Added a "nearby" function to predicates.c which checks if two objects |
|---|
| 85 | are near each other. Fixed LOC() so it works the way the help says. |
|---|
| 86 | * Added a "find_flag" function to predicates.c which compares player |
|---|
| 87 | input to the flag list and comes up with a match. Rewrote "do_set" |
|---|
| 88 | to use this (the new HASFLAG() function also uses it). |
|---|
| 89 | * can't @destroy master room, need to use @nuke to destroy players |
|---|
| 90 | * NO_TEL now checks "absolute" location for NO_TEL flag |
|---|
| 91 | * %p, %s, and %o now return "its/it/it" for no-gender objects |
|---|
| 92 | * @boot now shows that someone kicked you off |
|---|
| 93 | * @shutdown notifies all players that a wizard did a @shutdown |
|---|
| 94 | * @toad command must be typed in full |
|---|
| 95 | * @emit and @oemit no longer show "You emit/You oemit" to the player |
|---|
| 96 | giving the command, but just echo the message |
|---|
| 97 | * Bug fix to do_set so flags which are different for different types |
|---|
| 98 | don't clobber each other |
|---|
| 99 | * Various minor bugfixes |
|---|
| 100 | * "help @-commands" split into several sections. Some cleanup of help. |
|---|
| 101 | -- See "help" for details. If you have problems, contact me (Amberyl) |
|---|
| 102 | or T'nor (raven@ccwf.cc.utexas.edu) on the MUDs or via email. |
|---|
| 103 | ---------------------------------------------------------------------------- |
|---|
| 104 | January 31, 1992 -- Lydia Leong (lwl@eniac.seas.upenn.edu) Release level 1.17 |
|---|
| 105 | -- New functions |
|---|
| 106 | * ART() -- returns the appropriate article "a" or "an" |
|---|
| 107 | * MAIL() -- function to return a mail message |
|---|
| 108 | * MAX() -- returns largest number in list of up to 10 arguments |
|---|
| 109 | * MIN() -- returns smallest number in list of up to 10 arguments |
|---|
| 110 | * OBJ() -- perfoms objective pronoun substitution |
|---|
| 111 | * POSS() -- performs possessive pronoun substitution |
|---|
| 112 | * RNUM() -- like NUM(), but on a remote room. Only defined if the |
|---|
| 113 | master room is configured (for use with globals) |
|---|
| 114 | * SUBJ() -- performs subjective pronoun substitution |
|---|
| 115 | * TYPE() -- returns the type of an object |
|---|
| 116 | * XGET() -- works like get(), but can have nested arguments, and uses |
|---|
| 117 | a comma instead of a slash to separate its arguments. Basically |
|---|
| 118 | this is just a nasty hack to overcome a lousy parser |
|---|
| 119 | -- New flags |
|---|
| 120 | * INHERIT -- restricts @force/@set/@trigger (read the help) |
|---|
| 121 | * VERBOSE -- prints an object's command before executing it |
|---|
| 122 | -- New commands |
|---|
| 123 | * @config: shows configuration parameters for the MUSH |
|---|
| 124 | * DOING: for wizards, gives the player WHO list. @doing messages do not |
|---|
| 125 | show up in wizard WHO, so wizzes don't get spammed by the list. |
|---|
| 126 | * @mail: hardcoded mail, courtesy of Joarm/Spellbound MUSH |
|---|
| 127 | * @poll: sets the @doing poll |
|---|
| 128 | * @rwall/@rwallpose/@rwallemit: allows Royalty to broadcast to wizards |
|---|
| 129 | and royalty, in a fashion similar to @wizwall |
|---|
| 130 | -- New features |
|---|
| 131 | * Uselocks implemented as a superset of pagelocks. The commands have been |
|---|
| 132 | changed to @ulock/@uunlock. A uselock applies to "use" of the object, |
|---|
| 133 | as well as triggering $commands on it |
|---|
| 134 | * @use/@ouse/@ause, triggered by "use", added |
|---|
| 135 | * Old "@use" command changed to "@use-does", for backward compatibility |
|---|
| 136 | * Inactivity timeout, compile-time settable |
|---|
| 137 | * Guest character, who cannot change name or password, or build |
|---|
| 138 | This is compile-time configurable |
|---|
| 139 | * Added %b and %t substitutions (blank space and tab) |
|---|
| 140 | * Attributes may have a ^ pattern similar to $command patterns. These |
|---|
| 141 | act like multiple @listen patterns and are triggered under the same |
|---|
| 142 | criteria as an ahear. For example, @va object=^* has arrived.:"Hi. |
|---|
| 143 | would match "Amberyl has arrived." and the object would say Hi. |
|---|
| 144 | These are only matched if no @listen exists. |
|---|
| 145 | * added announce.c to the distribution package |
|---|
| 146 | -- Changes to existing commands |
|---|
| 147 | * test_set changed to allow '&' to be used for user-defined attributes, |
|---|
| 148 | for compatibility wth 2.0 code |
|---|
| 149 | * @decompile now distinguishes between normal and user-defined attributes, |
|---|
| 150 | and uses '&' for user-defined |
|---|
| 151 | * @search now does a count of objects. |
|---|
| 152 | * changed enterlocks so that to enter an object, you must both pass |
|---|
| 153 | the lock and the object must be enter_ok |
|---|
| 154 | * @pemit and whisper now match objects in the player's possession as |
|---|
| 155 | well as the player's container. |
|---|
| 156 | * need to use @nuke to destroy a wizard object. |
|---|
| 157 | * @doing and @poll now tell you how many characters got truncated from |
|---|
| 158 | your message, if it was too long. |
|---|
| 159 | * @clone will now do exits |
|---|
| 160 | * if a @listen is not found, the game will now check for ^ patterns |
|---|
| 161 | in attributes, which act like an ahear. |
|---|
| 162 | -- Fixes and other sundries |
|---|
| 163 | * fixed a bug which caused a coredump if you attempted to look at a |
|---|
| 164 | TRANSPARENT exit linked to *HOME*. |
|---|
| 165 | * home(exit) now returns that exit's source room |
|---|
| 166 | * examine now reports an exit's source |
|---|
| 167 | * exits linked to home now send an object home |
|---|
| 168 | * new matching functions for remote rooms |
|---|
| 169 | * successfully teleporting something to an exit no longer shows that |
|---|
| 170 | stupid "imposes his will on yours" message |
|---|
| 171 | * fix to ucstr and lcstr to add terminating '\0' (stupid mistake) |
|---|
| 172 | * safe_tel fixed to avoid conflict between BUILDER and KEY, and to avoid |
|---|
| 173 | sending STICKY objects home if their home is the teleporting object |
|---|
| 174 | * @boot fixed so wizards can't boot themselves. |
|---|
| 175 | * THING_SAFE, PLAYER_SUSPECT, and ROOM_NO_TEL moved from 1000000 to |
|---|
| 176 | 4000000, for compatibility with SC-1.0 code. |
|---|
| 177 | * changed do_examine to match exits first, for 2.0 consistency, |
|---|
| 178 | changing it back from an earlier fix. Note that 2.0 plans to |
|---|
| 179 | change the order in the future. This makes examine consistent |
|---|
| 180 | with the other commands which do name-matching. |
|---|
| 181 | * changed do_destroy to always notify player when room is destroyed |
|---|
| 182 | * added a "flag" to unparse_boolexp, so that you can get a "basic" unparse: |
|---|
| 183 | only dbrefs and tokens (i.e. exactly what you'd need to type to lock |
|---|
| 184 | that object to that key). Added the ability to decompile locks, |
|---|
| 185 | and changed LOCK() to use unparse_lock instead of unparse_boolexp |
|---|
| 186 | * @chown now removes the Royalty flag. |
|---|
| 187 | * abilities of royalty expanded to be consistent. They have full wizprivs |
|---|
| 188 | wrt. examining and teleporting but cannot change things - they see |
|---|
| 189 | the wizard WHO (since they can examine a player for Lastsite and |
|---|
| 190 | location anyway), use LWHO(), GET(), V(), LCON(), etc. as if they |
|---|
| 191 | were wizards. New macro added "Hasprivs", which is true for royalty |
|---|
| 192 | or wizard or God, getting rid of most of the #ifdef ROYALTY_FLAGs |
|---|
| 193 | in the code. |
|---|
| 194 | * @newpassword, @boot, @nukes of players, @toad, @pcreate, and all |
|---|
| 195 | all commands from SUSPECT players are logged |
|---|
| 196 | * Log highlights wizard forces of objects they don't own |
|---|
| 197 | * PUPPET is now THING_PUPPET |
|---|
| 198 | * global exits, ealiases, and laliases can be more than one word long |
|---|
| 199 | * NO_TEL is now determined by the location of the victim not the |
|---|
| 200 | location of the player trying to do the teleport |
|---|