| 1 | This is a continuation of the change log for PennMUSH, covering Release |
|---|
| 2 | Levels 1.18 and 1.19. |
|---|
| 3 | |
|---|
| 4 | ---------------------------------------------------------------------------- |
|---|
| 5 | February 25, 1992 -- Lydia Leong (lwl@eniac.seas.upenn.edu) Release Level 1.18 |
|---|
| 6 | |
|---|
| 7 | mail.c is problematical. It's an older version of Spellbound mail, and has a |
|---|
| 8 | nasty tendency to crash the MUSH from time to time. It's generally safe to |
|---|
| 9 | use, but if you have a problem with repeated crashes, wipe out the mail |
|---|
| 10 | database. |
|---|
| 11 | |
|---|
| 12 | -- New functions |
|---|
| 13 | * ALPHAMIN() and ALPHAMAX() -- return the smallest/biggest word, |
|---|
| 14 | lexicographically, in a comma-separated list of up to 10 arguments |
|---|
| 15 | * DIE() -- "rolls" an n-sided die m times, simulating things like "2d6" |
|---|
| 16 | * LATTR() -- returns a list of attributes on an object |
|---|
| 17 | * LSEARCH() -- similar to @search, returns a list of dbrefs |
|---|
| 18 | * SECURE() -- smashes dangerous characters in a string |
|---|
| 19 | * SECS() -- returns number of seconds since midnight Jan. 1, 1970 |
|---|
| 20 | * SORT() -- lexicographically sorts a comma-separated list of up |
|---|
| 21 | to ten arguments, returning a space-separated list of words |
|---|
| 22 | * ZONE() -- returns the zone of an object |
|---|
| 23 | -- New commands |
|---|
| 24 | * brief -- like "examine", but does not display attributes |
|---|
| 25 | * @chzone -- change zone of an object |
|---|
| 26 | * @chzoneall -- change zone of all objects belonging to a player |
|---|
| 27 | * @select -- like @switch, but only executes the actions matching the |
|---|
| 28 | first target it finds (like 2.0 @switch/first) |
|---|
| 29 | * think -- send a private message to yourself |
|---|
| 30 | * use -- use an object, triggering @use/@ouse/@ause |
|---|
| 31 | * @zemit: emit to all rooms in a zone |
|---|
| 32 | -- New flags |
|---|
| 33 | * MYOPIC -- player sees everything like he doesn't own it (no dbref |
|---|
| 34 | numbers and flags appear when you look at something) |
|---|
| 35 | * TRANSPARENT on rooms -- does "long format" exit names in the room, like: |
|---|
| 36 | Obvious exits: |
|---|
| 37 | North leads to Joe's room. |
|---|
| 38 | East leads to Kitchens. |
|---|
| 39 | -- New features |
|---|
| 40 | * Uselocks on objects allow only those that pass the @ulock to use |
|---|
| 41 | them. This provides for a secure way to get around the problems |
|---|
| 42 | with INHERIT, and regular security problems, since @ulocks also |
|---|
| 43 | block $commands from unauthorized users. |
|---|
| 44 | * @use/@ouse/@ause attributes added, triggered by "use" command. |
|---|
| 45 | The old "@use/@does" pair is preserved as "@use-does/@does", |
|---|
| 46 | for backward compatibility. |
|---|
| 47 | * Zones implemented. Please see the help for details. |
|---|
| 48 | Anyone who passes the enter lock of a zone object controls all |
|---|
| 49 | objects in that zone - i.e. has the equivalent of wizard privs |
|---|
| 50 | in that zone. |
|---|
| 51 | In addition to regular command matching, you also match commands |
|---|
| 52 | in the zone of your current room, and your person zone. These |
|---|
| 53 | are $commands on the master object for the zone. This matching |
|---|
| 54 | occurs between regular $command matching and global matching. |
|---|
| 55 | * MUCK-style parent rooms implemented as a subset of zones. Parent rooms |
|---|
| 56 | are ZMOs which are rooms. Parent room exits and $commands on objects |
|---|
| 57 | in the parent room are checked before local zone commands. |
|---|
| 58 | * "Events" file, compile-time option, a file like news and help |
|---|
| 59 | * Config options DARK_EXITS, TRANSPARENT_EXITS, and TRANSPARENT_ROOMS, |
|---|
| 60 | which are building defaults. |
|---|
| 61 | * Site lockout has been improved. It now does wildcards, thanks to |
|---|
| 62 | T'nor of SouCon MUSH. It is also possible to do registration on sites |
|---|
| 63 | as well as lockout. |
|---|
| 64 | -- Fixes and other changes |
|---|
| 65 | * the usual minor bugfixes |
|---|
| 66 | * ELOCK() no longer requires player to control either object being |
|---|
| 67 | evaluated by the function. |
|---|
| 68 | * @chown and related commands now remove the INHERIT and ROYALTY flags. |
|---|
| 69 | * @search (and LSEARCH) now allow class restriction "zone". |
|---|
| 70 | * fixed bug which allowed wizards to set objects they didn't own |
|---|
| 71 | WIZARD (this should be a god-only priv) |
|---|
| 72 | * if an object pages a NOSPOOF player, the object's number appears |
|---|
| 73 | before the message, in a fashion similar to NOSPOOF-flagged emits. |
|---|
| 74 | * fixed a coredump bug in "give" which was triggered by a wizard "giving" |
|---|
| 75 | a player extremely large numbers of negative pennies. |
|---|
| 76 | * fixed a typo in game.c in LOG_FAILED_COMMANDS |
|---|
| 77 | * startup sequence now prints warning in log if PLAYER_START, |
|---|
| 78 | MASTER_ROOM, or GUEST_PLAYER are set to invalid values. |
|---|
| 79 | * @config expanded to give more detailed, informative output. |
|---|
| 80 | * cleaned up STICKY code and corrected the help text |
|---|
| 81 | * core dump bug involving rooms and exits trying to execute $commands |
|---|
| 82 | has been fixed (thanks to GlobalMUSH for pointing this problem out). |
|---|
| 83 | * "throw" as an alias for "drop" has been removed |
|---|
| 84 | * others in the room are now notified when someone takes something |
|---|
| 85 | with "<person> takes <object>" (instead of nothing, if no osucc |
|---|
| 86 | message was set). The drop message has been changed to |
|---|
| 87 | "<person> drops <object>", so the verb tenses are the same. |
|---|
| 88 | * say now has a comma (grammar! What a concept!) |
|---|
| 89 | * a small bug involving @clone'ing exits in rooms you couldn't link |
|---|
| 90 | to has been removed |
|---|
| 91 | * you can now link drop-tos in rooms to "home" |
|---|
| 92 | * @search now outputs rooms in a format like things (it shows you |
|---|
| 93 | the owner of the room) |
|---|
| 94 | * NOSPOOF and TERSE are now player flags; the Nospoof/Terseness of an |
|---|
| 95 | object is dependent upon its owner's status. |
|---|
| 96 | * upped MAX_COMMAND_LEN to 1 K (doubled the maximum, in other words). |
|---|
| 97 | BUFFER_LEN is still only 4 K, though. I don't think this should |
|---|
| 98 | break anything. |
|---|
| 99 | * did little tweaks which should remove almost all the compiler warnings |
|---|
| 100 | * some minor bugfixes in bsd.c |
|---|
| 101 | * inactivity_check moved to timer.c, where it's done with db fixups |
|---|
| 102 | * @destroy's output is more informative now |
|---|
| 103 | * you must know a player's password in order to rename him (in the past, |
|---|
| 104 | a wizard could use his password instead, and an object owned by |
|---|
| 105 | the player didn't need a password at all) |
|---|
| 106 | * fixed coredump bug in @clone caused by the function not duplicating |
|---|
| 107 | enter or use locks. |
|---|
| 108 | * alphabetized flag listings somewhat |
|---|
| 109 | * IDESC now does pronoun substitution |
|---|
| 110 | * fixed stupid problem in some call to do_move in game.c - initially |
|---|
| 111 | forgot to pass a type flag, causing problems on some machines |
|---|
| 112 | * quick #ifndef fix to externs.h that should help convince SysV machines |
|---|
| 113 | that they like MUSH. Thanks to Delany for this one. |
|---|
| 114 | * rewrote NOSPOOF code in do_page so it OUGHT to work on all machines |
|---|
| 115 | (certain systems couldn't take the null string at the beginning of |
|---|
| 116 | a call to print, in the original version of this) |
|---|
| 117 | ---------------------------------------------------------------------------- |
|---|
| 118 | May 5, 1992 -- Lydia Leong (lwl@eniac.seas.upenn.edu) Release level 1.19 |
|---|
| 119 | |
|---|
| 120 | -- New flags |
|---|
| 121 | * ANSI_DISPLAY - bold-hilites names of attributes, making it easier |
|---|
| 122 | to read long object listings. |
|---|
| 123 | * AUDIBLE - exits propagate sound to next room. The room must be set |
|---|
| 124 | AUDIBLE in order for checking to occur. @prefix is prepended to |
|---|
| 125 | message. @filter filters out stuff that matches anything in a |
|---|
| 126 | list of comma-separated patterns. |
|---|
| 127 | A similar thing is true of objects set AUDIBLE; messages from |
|---|
| 128 | within them are propagated to the outside world. |
|---|
| 129 | (Re)Setting stuff AUDIBLE causes a "now broadcasting" or |
|---|
| 130 | "no longer broadcasting" message to be emitted. |
|---|
| 131 | * LISTENER - objects which use ^ patterns must now have this set. |
|---|
| 132 | The benefit is some increased speed, and all objects which are |
|---|
| 133 | LISTENER are checked for ^ patterns even if they have a @listen. |
|---|
| 134 | Setting something LISTENER triggers the "grows ears and can now hear" |
|---|
| 135 | message. When an object loses its listen status (not puppet, not |
|---|
| 136 | listener, and has no @listen), it "loses its ears and becomes deaf" |
|---|
| 137 | * MONITOR - wiz-settable flag, notifies player of connects/disconnects |
|---|
| 138 | * STARTUP flag added. Should massively increase efficiency on startup. |
|---|
| 139 | Need to define ADD_STARTUP_FLAG when using this for the first time. |
|---|
| 140 | -- New functions |
|---|
| 141 | * ABS() returns the absolute value of a number. |
|---|
| 142 | * BEEP() -- send up to five "alert" bell characters |
|---|
| 143 | * EVAL() - gets an attribute from an object and does pronoun subst. |
|---|
| 144 | * LOCATE() -- controlled match with respect to a certain object. |
|---|
| 145 | * LSTATS() -- returns a breakdown of player's stuff in list form |
|---|
| 146 | * PMATCH() - partial name-match, returns dbref number of player |
|---|
| 147 | * ROOM() -- returns absolute location of an object. |
|---|
| 148 | * SIGN() returns 0, 1, or -1 depending on the sign of a number. |
|---|
| 149 | * SPACE() -- prints a certain number of spaces |
|---|
| 150 | * STRCAT() concatenates two strings with no space between them. |
|---|
| 151 | * UFUN() -- takes a "function name", which is an arbitrary attribute |
|---|
| 152 | on an object, and arguments, and plugs it through the functions. |
|---|
| 153 | Allows you to define your own functions. |
|---|
| 154 | * ZFUN() -- like UFUN, but reads the attribute from the ZMO. |
|---|
| 155 | -- New features |
|---|
| 156 | * Name lockout -- a file definable in config.h contains a list of |
|---|
| 157 | player names which may not be used. Both player creation and |
|---|
| 158 | player name changes check this (the ok_player_name function |
|---|
| 159 | now calls a new predicate forbidden_name) |
|---|
| 160 | * @map command - takes a list and a function, and maps the function |
|---|
| 161 | onto the list, returning a list. This is basically a variation |
|---|
| 162 | on @dolist. |
|---|
| 163 | * @daytime command - turns off @find, @entrances, @search, and LSEARCH() |
|---|
| 164 | Useful when running on a machine that you don't want to munch a lot |
|---|
| 165 | of CPU time on. |
|---|
| 166 | * Enter and exit aliases can now have semi-colon separated lists |
|---|
| 167 | * Teleport locks added as a subset of enter locks. |
|---|
| 168 | * Wizards that reach IDLE_TIMEOUT and are set UNFINDABLE are automatically |
|---|
| 169 | set DARK. |
|---|
| 170 | * "@uptime" command, gives system uptime. Wizards only. |
|---|
| 171 | * T'nor's improved @halt code added -- allows clearing of a single |
|---|
| 172 | object's wait queue. IMMORTAL flag prevents halting of objects. |
|---|
| 173 | * Chat system! To add new channels or change existing ones, check |
|---|
| 174 | chat.h, look.c, predicates.c, and speech.c (grep for |
|---|
| 175 | CHAT_SYSTEM to find the relevant code) |
|---|
| 176 | * Maximum login limit, automatically turns logins on and off. |
|---|
| 177 | * Global and zone aconnect/disconnects added. |
|---|
| 178 | * Immortal objects no longer use up money. |
|---|
| 179 | * Royalty no longer uses money, nor is it subject to quota or |
|---|
| 180 | BUILDER bit restrictions (i.e.treated like wizards are wrt building) |
|---|
| 181 | * Added '@@' comment signal. |
|---|
| 182 | * Added new match type, match_controlled_absolute(). This allows players |
|---|
| 183 | to match things by number, if they control them. Players can now do |
|---|
| 184 | remote look and get on objects that they own (the new match predicate |
|---|
| 185 | is in other functions as well, but those two are the major ones). |
|---|
| 186 | * Game now tells you the time and place of your last login at connect. |
|---|
| 187 | * Hilites using ANSI control characters have been added, for attribute |
|---|
| 188 | examines. The AUDIBLE flag is overloaded; it's an unpleasant but |
|---|
| 189 | workable kludge. |
|---|
| 190 | -- Fixes |
|---|
| 191 | * added an extern declaration of match_thing to attrib.c so all |
|---|
| 192 | compilers deal with the LATTR code |
|---|
| 193 | * fixed move.c's do_drop to handle dropping of objects in a TEMPLE |
|---|
| 194 | correctly. Based on Jim Miller's patch (retief@iastate.edu) |
|---|
| 195 | I also patched it so everything takes place in a logical order |
|---|
| 196 | and that the stuff which ought to be #ifdef'ed, is. |
|---|
| 197 | * put in the "rob" code again, as a config option (thanks to Jim |
|---|
| 198 | Miller for pointing out that it never got used) |
|---|
| 199 | * STICKY flag split into a thing flag and a room flag (running into huge |
|---|
| 200 | numbers of flags, and therefore making an attempt to compress the |
|---|
| 201 | ones that are only applicable to two or fewer types) |
|---|
| 202 | * fixed ^patterns so %N substitution works properly |
|---|
| 203 | * fixed bug in did_it involving charges. (Sheesh. This bug's been |
|---|
| 204 | around for a _long_ time. Dunno why no one pointed it out before.) |
|---|
| 205 | * recoded FLIP function - now calls a generic utility function which |
|---|
| 206 | reverses a string, using pointers (much cleaner now). |
|---|
| 207 | * parent room checks fixed, thanks to Jim Miller. Another stupid bug. |
|---|
| 208 | * only rooms may have a parent room as their zone |
|---|
| 209 | * added MUSH restart time to the top of the MUSH log, static variable |
|---|
| 210 | start_time added. |
|---|
| 211 | * @version now gives the MUSH name and time of last restart in addition |
|---|
| 212 | to the code version. |
|---|
| 213 | * Behavior of @chzone changed by popular request - any wizard can |
|---|
| 214 | @chzone a player now |
|---|
| 215 | * Kludges to try to prevent crashes caused by huge lock unparses: |
|---|
| 216 | do_lock and unparse_boolexp check for overflowing the buffer length, |
|---|
| 217 | kinda sorta. It's still possible to crash the game, but it's highly |
|---|
| 218 | improbable. A real fix would require dynamically allocating space. |
|---|
| 219 | * Added HP-UX compatibility, thanks to Schlake (craig@minos.nmt.edu) |
|---|
| 220 | Also added his other minor fixes, like properly commenting out |
|---|
| 221 | trailing text after #endifs, etc. |
|---|
| 222 | * Did some minor cleanup using the IS macro instead of a written-out |
|---|
| 223 | type and flag check |
|---|
| 224 | * You cannot see what an OPAQUE object is carrying even if you own |
|---|
| 225 | or control it (this is the way it should have been to begin with) |
|---|
| 226 | * Fixed some more inappropriate calls to toupper() - confuses |
|---|
| 227 | DECs. Used UPCASE macro instead. |
|---|
| 228 | * LINK_OK is now valid for all types (dunno why this was changed |
|---|
| 229 | in the 1.15 code, didn't realize it 'til now) |
|---|
| 230 | * things that are LINK_OK can now be @triggered even if the |
|---|
| 231 | INHERIT check fails. This provides some of the security of |
|---|
| 232 | INHERIT but allows you to avoid clumsy workarounds for |
|---|
| 233 | objects that only need to @trigger something. The control |
|---|
| 234 | checks still apply. |
|---|
| 235 | * Rooms-going-away with the floor falling out from under player |
|---|
| 236 | messages should hopefully be fixed. The exact origin of this |
|---|
| 237 | problem isn't known, but a check in dest_info for NOTHING |
|---|
| 238 | should take care of it. It's a bug dating back to at least |
|---|
| 239 | PernMUSH 1.06, but it seems to have increased in frequency |
|---|
| 240 | with this latest code, for an unknown reason. |
|---|
| 241 | * Fix to display page-returns as 12 hours instead of 24 hours. |
|---|
| 242 | Can #define MILITARY_TIME |
|---|
| 243 | * added macro Mobile(x). This is true if x is type THING or PLAYER. |
|---|
| 244 | ((Typeof(player) == TYPE_PLAYER) || (Typeof(player) == TYPE_THING)) |
|---|
| 245 | is now Mobile(player). |
|---|
| 246 | ((Typeof(player) == TYPE_ROOM) || (Typeof(player) == TYPE_EXIT)) |
|---|
| 247 | is now !Mobile(x). |
|---|
| 248 | * config option PARANOID_NOSPOOF added. If this is defined, nospoof |
|---|
| 249 | also shows the object number of the spoofer. |
|---|
| 250 | * you can no longer link something to itself. |
|---|
| 251 | * added GoodObject(x) macro which checks if x is >= 0 and <= db_top |
|---|
| 252 | * fixed bug in do_trigger which caused crashes if exits linked to home |
|---|
| 253 | attempted to trigger stuff. |
|---|
| 254 | * rewrote raw_broadcast using varargs. |
|---|
| 255 | * prevent people from linking homes to GOING objects |
|---|
| 256 | * atr_comm_match now automagically returns 0 if the checked object is |
|---|
| 257 | HALT, since even if a command were matched, it couldn't execute |
|---|
| 258 | it anyway. |
|---|
| 259 | * Fixed an #ifdef-#endif problem in bsd.c, thanks to Czakari. |
|---|
| 260 | * Changed PMATCH to work exactly like page-matching does. It first checks |
|---|
| 261 | the normal player lookup table; if nothing is found, then it calls |
|---|
| 262 | the connected player partial lookup. The error messages are now |
|---|
| 263 | #-1 NOTHING or #-2 AMBIGUOUS. This is a more useful behavior. |
|---|
| 264 | It notifies of the error, and returns the number. |
|---|
| 265 | * SUSPECT flag is no longer detectable by non-priv'ed players |
|---|
| 266 | * flags are shown if objects are VISUAL or DESTROY_OK, always |
|---|
| 267 | * @poor now gives the player a message |
|---|
| 268 | * fixed check for TEMPLE room so Verbose objects don't count as |
|---|
| 269 | Temples! Bleah! (*sigh* still tracking down all the places |
|---|
| 270 | where the IS macro should be used...) |
|---|
| 271 | * LOC(), HOME() now always works for royalty. (Oversight) |
|---|
| 272 | * @poll changes are logged |
|---|
| 273 | * @chzone on players no longer nukes the W, r, and I flags. |
|---|
| 274 | * checks on GET() and attribute flags changed -- an attribute |
|---|
| 275 | which is flagged AF_DARK is no longer gettable at all |
|---|
| 276 | (like the password! Bleah!) |
|---|
| 277 | * @chownall and @chzoneall now provide object count. |
|---|
| 278 | * the value of a cloned object is now the same as the value of its |
|---|
| 279 | template object |
|---|
| 280 | * fixed immortal/unfindable problem in do_kill with an IS macro |
|---|
| 281 | * @listmotd lists all the motds for royalty. Should have been this way |
|---|
| 282 | before, since royalty get the wizmotd at login. |
|---|
| 283 | * fixed weird bug that caused players to become owned by God. If someone |
|---|
| 284 | tried to call atr_add with thing = 0, the privs were done as GOD |
|---|
| 285 | and the owner of the caller became owned by GOD. Why #0 was treated |
|---|
| 286 | as a special case baffles me. |
|---|
| 287 | * Only objects with the same owner can set each other INHERIT. Helps |
|---|
| 288 | plug a zone-related security hole. |
|---|
| 289 | * Zone control does not extend to objects set INHERIT. |
|---|
| 290 | * Fixed bug in create.c that allowed non-builders to link exits and |
|---|
| 291 | seize unlinked ones, even though they were told they couldn't. |
|---|
| 292 | * Find now returns the number of objects found |
|---|
| 293 | * Newlines and 'alert' bell characters can no longer be in @doings. |
|---|
| 294 | -- Some stuff on versions: |
|---|
| 295 | * DB header line is +V2 for old format (no changes), |
|---|
| 296 | +V258 (256+2) for new locks and zones, |
|---|
| 297 | +V514 for that plus chat system, |
|---|
| 298 | anything else is +V770 (256*3 + 2) |
|---|