- New subcommands added to liveupgrade: revert and alpha. - Various security exposures mitigated. - Fixed CanGet() bug in LIB_CHAIR (Thanks, K'Azdean). - The new mkdir_recurse() sefun allows liveupgrade to handle recursively creating directories if needed. - Fixed a bug in sample virtual areas that made travel nw, sw, or se take you to the wrong place. - CALL_OUT_LOGGING has been reworked to be less vile and it now breaks few things, if any. - Added an automapper. See: help automap - Added Smaug area conversion utility, found in /secure/obj/converter_smaug.c - A player's start room can now be a virtual room or a cloned object (e.g. a mount). - Fixed a problem with sending a string to eventDie() as an argument. - Beefed up get_stack() sefun. - Added virtual area to wiz labs for mounted combat testing. - Added 3d virtual sky area to mounted combat arena. - Fixed various problems with sky-based 3d virtual areas such as falling through multiple rooms, flying up more than one room, etc. - The "source" command now takes the -q flag to indicate queuing, rather than immediate execution. This allows creators to be subject to the maximum number of commands per second limit but still be able use sourcing. - The object matching code used to step on objects. For example, if your room had a "bar" as a SetItem, and a barstool as an inventory item, and OBJECT_MATCHING was enabled, then "exa bar" would actually return the barstool's long desc. This has now been fixed. - The LastLocation property in players now handles cloned environments (e.g. mounts) and the return command also now deals with them correctly. - Fixed a bug in eventDescribeEnvironment() that prevented riders from seeing living creatures in a room when issuing the command: look - Fixed bug in npc's that made mounted riders hear spoken messages more than once. - Fixed another carry leak in containers. Containers now update their environments' CarriedMass. - Fixed bug in LIB_BONUS that allowed the dropping/putting/getting of the invisible bonus object. - Fixed bug in LIB_POTION that failed to set the effect's duration. - LIB_CLEAN will no longer dest inheritables in the /lib/ directory. This avoids a situation where the inherits() efun returns confusing information. - FILE_D now does a daily recompilation of the mud files list. - Mounts are now set to resist room resets, so that one's loot doesn't get unloaded from memory just because they left their horse alone too long. - The encre command now moves a player's estate to her creator homedir. - The suicide command now removes a creator's directory or a player's estate and moves it to the /secure/save/decre directory. - SetAttackable can now take a function as an argument. See /domains/town/npc/lars.c for an example. - A bug in SetAttackable that allowed players to be attacked when a string was set as an argument is fixed. - A bug in QCS that prevented deleting rooms with relative "customdefs" defines has been fixed. - "restore here" now works. - Fixed typo in Chapter 8 of the Admin Guide. - The display of obvious exits can be over the desc in brackets (default) or under the desc in text form, depending on the NM_STYLE_EXITS setting in config.h. This can be configured with: mudconfig nmexits [on|off] - Added Diku-style equipment (eq) command. - It's now possible to use two-letter emotes on channels, and one may use "channel:" syntax as well as "channelemote", eg: "cre: foo" - Added age check to login for COPPA compliance (Technically this is not necessary since COPPA applies to commercial enterprises, but I'm adding it on general principle). - Fixed nonsensical parsing bug in LIB_COMMAND. - Liveupgrade will now create a dir if necessary. - Rooms missing from /std added. - Improved security in WGET_D. - convert_ascii no longer uses a broken (and slow) lookup table. It also now has a reverse counterpart, convert_into_ascii. - Fixed a null array in LIB_MOUNT that hosed up some non-mount npc's. - Added defaultdomain subcommand to the mudconfig command, so that you can make your new domain the default one for the mud with the command: mudconfig defaultdomain /domains/MySpiffyArea - The domaincreate command now adds all the rooms necessary to make a domain work as a default domain. - Fixed a bug that allowed players to be attacked by other players despite PK and SetAttackable safeguards. - Fixed a broken add_action in jennybot that emulated a broken verb. - The liveupgrade command has been revamped to avoid a crasher (!!!) and no longer requires multiple "liveupgrade all" entries. Just one will do. - WGET_D is now throttled to prevent overwhelming the network. - REMOTEPOST_D is now more aggressive about retiring old failed mail to avoid idle OOB objects from constantly loading. - Fixed bug in goto that broke using a string as an argument. - Further simplified parsing: it is no longer necessary to "put book on table" or "give sword to fighter". You can now "put book table" and "give sword fighter". Added to OLD_STYLE_PLURALS, COMMAND_MATCHING, and OBJECT_MATCHING, you can now issue brutish stuff like: "gi bo 2 fi 3" instead of "give the second book to the third fighter". The older syntax still works, of course. - To emulate Diku behavior, the lib will now accept number.object syntax, eg: "gi 2.bo 3.fi" - Fixed an excessively ugly error message generated by issuing certain non-alphabetic characters as the first char in a command. - Fixed a parsing bug in OLD_STYLE_PLURALS that tried to incorrectly index the command line array. - The commands goto and people have been updated to handle mounted players. - Events that occur on mounts are now properly communicated to the mount's environment, and vice versa. - When your mount engages in combat, the messages are no longer confusing. - Fixed last major obstacle to http liveupgrades. Files should no longer get mangled in-transit. - If OLD_STYLE_PLURALS is defined in config.h, commands will be translated from "drop book 2" format to "drop 2nd book" format automatically. - Added SetNoCondition() to living things. If you don't like indications of health on an npc, make it SetNoCondition(1) and its health status will not report on looking at it. This will also work on players. If you want this to be the default behavior for players, add a call to SetNoCondition in connect.c. - Added Set/GetAttackable to LIB_LIVING, so that npc's can be made immune to players' standard attacks. Note that your mud may still contain special weapons or spells that can trick the npc into fighting, so you may also want to set the npc to not pick fights, using SetPacifist(1) - Names of invis players are now scrambled when they make rwho requests, so that the target mud does not know who has queried it. - Invis admins now correctly receive pings/tells/rwho's/etc. - When mounted, you can now "ride s" rather than "ride south". - The copy verb now deals with custom defines more sanely. - It is now possible to create rooms not linked to anything, with the create command. Example: create room none newroom1.c - The decre command no longer freezes the target. - Ping daemon does not try to ping when intermud is disabled. - Added sefuns: convert_newline, clean_newline_file, to deal with http file corruption. - WGET_D now correctly handles receipt of newlines in files. - The liveupgrade command has a check now so that trying to "liveupgrade apply" while downloads are in progress will fail. - Unique objects are now dropped when a player leaves the game whether or not the mud is set to default inventory retention. - The sefun print_long_string() now deletes its temp file when done. - Mounts updated and improved: short and long descs include riders, room messages are relayed to riders, and riders can be examined, among other enhancements. Some messages, such as combat messages, are still a little confusing. - The initfix verb now fails reasonably for virtual rooms. - Non-meat creatures behave somewhat more sensibly now when shot. - Fixed a null cwd error on first admin login. - It is now possible to force room inventory to respawn every X seconds. By passing an array in SetInventory, an item can be respawned if it is missing. See the example in /domains/default/room/wiz_hall.c , which is set to check every 10 seconds to see if the tree is there. If it is not, it will respawn one copy of it. - The who command no longer counts Pinkfish code in its character count for title length, so you may have a diferent color for every letter of your 50 character long title, if you absolutely positively MUST. - Added a LIB_BANK as a wrapper for tellers, like LIB_SHOP for vendors. It's now possible to just "balance" and "deposit all" rather than "ask zoe for balance" and "ask zoe to deposit all". - Added command "speakcolor" to set the color in which you receive spoken messages (if, for example, you dislike people saying things in cyan). - Fixed runtime in lead/follow code with SetEnters. - Fixed bug that prevented followers from following through a SetEnter. - Made some important changes to the liveupgrade system to handle unusual exceptions. - The liveupgrade command now defaults to http connections to the dead-souls.net site, which is orders of magnitude faster and more secure than oob, as well as more reliable and efficient. - Implemented shutdown packet in router. If the delay time is less than 7 days, it just disconnects the mud. Otherwise it deletes the mud's info. - Router connections with a sufficiently large number of password failures are automatically blacklisted. - Removed muds are now properly synced on IRN. - Intermud passwords now use 9 digits. - Dead Souls now handles Tricky's ping-req and ping-reply packets. - Network room is less spammy on reconnects. - Arch/wiz room intermud status is now updated in realtime. The status indicated is always current. - Fixed chanlist problem in router. - MAX_COMMANDS_PER_SECOND now also applies to creators. - Modified router and router command to add functionality. See: help router - Router now periodically sifts through sockets and discards router sockets not currently associated with a connected mud. - Fixed problem in validate() in PLAYERS_D. - Replying to intermud mail now works. - Fixed spurious error message in mudconfig command. - Added basic Inter Router Networking support to router code. - Fixed bizarre exit message if you're not standing and you go home. - Added intermud mail support. - Fixed $P in prompt. - Added security fixes to router. - Abstracted the connection code from the everything-else code in the router, so that modifications can be made without having to drop muds. - Moved people command to /secure so admins can see each other. - Invis admins no longer generate connection messages when logging in or out. - Fixed mv command. - Creators can now sleep. - Telling to a sleeping person now generates a warning. - Fixed bug that prevented players who idled out while editing from being booted. - Sending a tell to an NPC no longer runtimes. - Closed up various exploit vectors with overrides of efuns. - Null groups no longer hose MASTER_D. - Fixed spurious error message in mv command. - Added the "prompt" command, with which you can now customize dynamic prompts. - Added wimpy status to env command. - Fixed some bugs and an exploit in mail code. - Creators can no longer snoop by default. To make snooping available to a creator, add her to the SNOOPER group. She will then be able to snoop players, but not creators. To let her snoop creators, you'll need to promote her to assistant admin, or edit valid_snoop() in /secure/sefun/sefun.c . - Added inews to the default creator channel list. - Fixed grievous carry leak in containers. - Fixed some null error messages when default parsing is enabled. - Fixed a runtime with default parsing enabled. - Fixed error message when giving something to an overloaded creature. - Added verbs: activate, deactivate, install, uninstall. - Added LIB_ACTIVATE, LIB_INSTALL. - Added wrist computer as an example of an object that has functions added to it without shadows. See /domains/default/armor/wristcomp.c and /domains/default/obj/module_cloak.c - Only one LIB_OOB ob is created for a full liveupgrade. - You can now do a liveupgrade from behind a firewall: opening your oob port is no longer necessary. - Fixed flashlight bug. - Fixed elevator button/dummy object bug. - System channels are added to players on login if they're missing. This corrects a problem with login announcements on upgraded muds. - First admin logins now may choose between four genders. - Shortest command matching is now shortest *unique* command matching, to avoid accidentally executing the wrong command. - Added OBJECT_MATCHING, COMMAND_MATCHING, BARE_EXITS, and LIVEUPGRADE_SERVER to mudconfig command. - The wizlist command generates an updated cre list regardless of whether the mud is upgraded or at its native rev. - Implemented LIB_ROOM fix suggested by Memrosh. - Added OOB support. - Added liveupgrade system. See: help liveupgrade - Fixed null errors in wield verb. - DEFAULT_PARSING now works correctly. If you have two keys and two tables, "put key on table" will put a key on a table without causing an "ambiguous parsing" error. - Added sefuns: atomize_string, atomize_array. - Setting OBJECT_MATCHING in /secure/include/config.h to 1 will enable "shortest matching name" behavior, so that "zap di" is equivalent to "zap dirk". - Setting COMMAND_MATCHING in /secure/include/config.h to 1 will enable "shortest matching command" behavior, so that "upd here" is equivalent to "update here". - Added command: qed. - Setting BARE_EXITS in /secure/include/config.h to 1 will now let you use "north" and "cabin" as valid movement commands, rather than "go north" and "enter cabin". - "afk" property is now removed on login. - Extra description strings from GetAffectLong() no longer duplicate if you're carrying multiples of an item. - Modified races so that non-meat lifeforms don't leave rotting meat corpses. - Added passive-mode support to ftp server ( contributed by Duuk @ Haven ). - Added code to prevent "bad alternate router data" bug that tends to knock muds off the router. - Added "neutral" (aka hermaphrodite, aka intersex) and "none" to user-selectable gender choices (Not applicable to first admin). - Lower case mudlib names now work in mudlist. - Probability lab bugs have been fixed. Charly and Charles now save their persistent data in a sensible way. - "copy /obj/room.c" now works for non-admins. - Fixed up some issues with the dsversion command. - Added sefun: chunk_string(), groups(), query_intermud_ip(). - Added commands: wizlock, wizunlock, wizlist. - Added commands: gag, mute. - Fixed another paradox condition in the router where a mud could be simultaneously connected AND disconnected, causing reconnection problems. A periodic check for this condition will clear it every 15 minutes or so. - Added command: flee. - New creators are polyglottized by default. - inet, ftp, http, and rcp services can now be configured with mudconfig. - The router room is now the server monitoring room. Admins may now use that room selectively to monitor traffic on the following services: ftp, http, rcp, i3 (router). They can be monitored in any combination, and the messages are in different colors to help distinguish between them when multiple service monitoring occurs. - The netstat command now lists the correct FD's. - Reverted default MALLOC to something that fancy new 64 bit computers like. - Retooled inet/server subsystem to accommodate RCP, added creremote and LIB_REMOTE to the extra/ dir of the distribution, as well as instructions. - Recompiled Windows driver to match current unix standard config. - Finally (I hope) nailed that pesky router connection problem. - Fixed bug in LIB_LOCK that prevented carried, lockable objects from working right. - "unsnoop" and "unsnoop all" now work. - Cleaned unwatched players from "snoopreport". - /log/catch messages now have time stamps. - Fixed errors/typos in groupmod and mudconfig help text. - There is an error in the help file for groupmod. It should look like this: Syntax: groupmod [-a|-r] GROUP NAME groupmod [-c|-d] GROUP - Fixed a bug in grep that made it choke and halt on binary files. It still chokes, but it continues grepping after reporting the runtime. - "decre" no longer removes all channels. Note that testing encre and decre repeatedly on the same character will probably generate problems eventually. - Added LOCAL_TIME parameter to config.h. Some OS'es use UTC and offsets for timekeeping, others use a "local time" setting. Rather than try to play offset games and fail miserably, this setting is meant to address that. - Added "mudconfig" command to enable the convenient changing of some config.h parameters. - LIB_CONNECT now checks CFG_IP_UNRESTRICT as well as SAME_IP_MAX to determine if the connection should be permitted. This allows you to specify ip's that are immune from "max connection" restrictions. - LIB_CONNECT now checks each incoming connection to determine whether it is the last known ip of a SECURE user. If it is, the connection is permitted regardless of SAME_IP_MAX. - It is now possible to use the "home" command to go to other creators' workrooms. - GetPlayerList(), GetCreatorList(), and GetUserList() in PLAYERS_D can now be trusted to provide correct information (for new installs). - It is now possible to get player data from users that are logged off, by specifying the variable to the player daemon. For example: eval return PLAYERS_D->GetPlayerData("cratylus","Properties") - Beefed up groupmod to handle group adding/deleting, and enable (some) use by ASSIST. - Added command: groupmod. - Added commands: pause, unpause. Used to remove/restore commands from a player with behavior problems. - Recurring reboots can now be disabled in config.h with DISABLE_REBOOTS. - Added command "chancolors" to toggle seeing colored channel messages. This is to limit the annoyingness of people who add pinkfish color codes to their channel messages. - Fixed a problem in LIB_SHOOT that prevented targeting specific victims, as well as a runtime bug when shooting things in your inventory. - Fixed a runtime in CHAT_D that mishandled unknown chans. - If EVENTS_LOGGING is set in config.h, new events added to the EVENTS_D will be logged to /log/secure/events. - If CALL_OUT_LOGGING is set in config.h, call_outs not created by privileged objects are logged (There shouldn't be any need to log call_outs initiated from within /secure). call_outs originating in /daemon are not logged either, due to the size of the resulting log growing too quickly. - Initiating flight while resting on furniture no longer corrupts a creature's short desc. - Fixed bug where "look at thing on blah" let you look at the thing even if it was invis. - Fixed bug in LIB_NPC that revealed carried invisible objects. - Commented out annoying addr_init error in driver that spams STDERR when running on Solaris. - tc() now also prints to STDOUT. - SetItems() now works properly in tangible items (eg Orcslayer). - Fixed problem with out-of-sequence messages using TalkResponse in sentients. - Fixed incorrect behavior during automated reloads. - Fixed an incorrect inherited call in LIB_CHAIR. - local_options now has "ref" defined as a reserved word. This allows the use of "ref" as a keyword for passing variables by reference, instead of by value. For an example, see /domains/default/obj/pass_example.c - Fixed bug in router code that created problems when muds originating from the same ip connected and reconnected. - Added commands: files, doctool, showfuns, createfix, findfun, pk, find, chanremove, chancreate. - Got rid of confusing null long desc on doors when initfixed or reloaded. - Got rid of a null error message in reply command when the target is missing. - Fixed problem in help daemon that prevented race help from displaying. - Revolvers reimplemented. - Driver options now output verbose warnings about inherited function conflicts and unused variables if you use local_options.debug at compile time. - Eliminated various function conflicts in lib files. - Isolated unused variables in /lib file function arguments with true() and false(). - true() and false() now can take any number of arguments, and always return 1 and 0, respectively. - Fixed bug in "home" command. - mudos.cfg now has a time to swap value of 0, to disable swapping. I've seen now more than one driver crash due to a swap bug, and I'm not sure what the problem is, so until I do know, swapping will be disabled by default. - Added RELOAD_D for objects that need to somehow get themselves reloaded without incurring recursion problems. - ROUTER_D now resets every 25 hours or so. - The banish command now has an "-s" option to banish offensive substrings from names. - Corrected problem in addraces command that distorted which races could be used by players. - Modified make_workroom so that newbie creators who hose their workroom can "restore workroom" without first having backed it up. - Fixed bug in snoop command that caused bizarre situation when snooping yourself using your capitalized name. - "X looks around" and "checks possessions" messages are now suppressed in meeting rooms. - Fixed reporting of object mass so that both the mass of the container and its contents are returned. This corrects a LIB_MOUNT error. - Fixed archaic parse_* lines in some verbs that interfered with VERBS_D. - Fixed "say to". - Added new features to each race file. - The findfun command no longer fails with timeouts and it executes extremely fast due to the use of the new daemons. - Fixed QCS bug that prevented adding includes. - Added features to races: body type, size, average mass, whether they can swim, and what they breathe. - New daemon: FILE_D, traverses the lib hierarchy, compiles a list of all files, and maintains the cached data for querying. Full refreshes of the data happen relatively quickly, in under a minute, and does not lag the mud much. - New daemon: FUNCTION_D, uses FILE_D to determine inheritable lib filenames, then queries each for the names of functions defined. Full refreshes of this data happen slowly, several minutes or longer. However, the mud is not much lagged during this process except while processing very large files (e.g. /lib/body.c). - Fixed "first admin bug" that failed to add channels. - Implemented emotes bugfix provided by Aransus. - Modified the template realm somewhat. There are now flask examples, and each wiz gets their own toychest, rather than using one default file for all. - Added to QCS: Set/AddTerrainType, SetDefaultLanguage. - Added room terrain types. - Non-DS code no longer needs ::create() in the create() fun to work. - Campus meeting room no longer blocks teleports. - Added stable with mountable horse south of the town schoolhouse. "mount horse" and "dismount". - Mounts must now be befriended before being mounted. To end your ownership, "abandon" the mount. - Fixed QCS bug when running in Windows that turned '\n' into '/n' - Added DEFAULT_PARSING to config.h. If this is set to 1, commands that normally fail with an ambiguity error ("Which X do you mean?") will instead default to the first eligible object. - Fixed problem on i3 router that caused muds to share fd's. - Added MAX_COMMANDS_PER_SECOND to config.h to enable a cap on scripters. This affects players only. - Fixed race-based skills. See http://dead-souls.net/ds-creator-faq.html#2.45 - Added LIB_FLASK (for canteens, coffee cups, etc). Flasks can now be filled at the town's riverbank and at the shore. - Added verbs: pour, fill, empty. - Removed encre/decre from admintool. It was goofy and dangerous. - Added SetActionsMap() to LIB_ROOM, to enable room actions with variable frequencies. The old SetAction() method also still works. - Added RETAIN_ON_QUIT define in config.h, and SetRetain() and GetRetain() to LIB_PERSIST. Any object that returns 1 on GetRetain() is retained across logons, regardless of RETAIN_ON_QUIT. Any object that return 0 on GetRetain() is removed on quit, regardless of RETAIN_ON_QUIT. Changing RETAIN_ON_QUIT requires a reload of every object, or a restart of the mud. - Added sample potions to /domains/town/meals and to Oana's magic shop. - Empty bottles now behave properly across logons. - cp and mv now take -f as a flag to force overwriting. - Removed channels (except admin ones) stay removed. - Fixed double-logging in channel messages. - Recompiled windows binary with new options and fixed socket_efuns. - Added well-door system. - Changed stat command to handle economies that do not have gold. - Idle times now report in a human readable format. - SERVICES_D: unk-src error now triggers an INTERMUD_D reload. - Router verified to accept over 400 separate mud connections. - Default connection mud for the telnet room is now Dead Souls Demo. - Added cambot to conference room. - Added commands: files, doctool, showfuns, createfix, findfun, pk. - Fixed a sockets bug in the driver (thanks to Zac@StarMUD) - Removed intergossip as a default enabled channel. Added dchat as a default enabled channel.- Added Nimrod's recursive/numbered grep enhancements. - Added numerous back-compat funs and obs for TMI-2 porting. - Added numerous back-compat funs and obs for Nightmare 3 porting. - Added daemons: ESTATES_D, ALCHEMIST_D (materials properties). - Router admin commands will now also take ip+port. - It is now possible to mudlist, rwho, and tell to a mud using its ip address+port. For example: rwho 71.234.154.99 6666 - The muffing commands now also affect tells. "earmuff Tatianna" will prevent you from hearing channel messages *and* tells from tatianna. You can also muff ip address + port, example: earmuff @194.70.3.211 3000 - "tell history" now provides a limited history of your tell messages. - Fixed a problem adding currencies with admintool when there are fewer than 3 existing currencies. - Reverted to the old Nightmare calendar: mud time of day and sky events should make more sense now. - Added SAME_IP_MAX define in config.h, to help limit bot spam/abuse. Default limit is 4 connections per IP. - Fixed login problems in bots. - Raised ulimit in start script to 1024. - Dying creatures can no longer be observed to remove armor and weapons. - Ludicrously long environment descriptions no longer break when displayed. - "alias foo" no longer removes the "foo" alias, it merely displays it. To remove that alias, the new way is: unalias foo - New players are 100% proficient in the language Common, and it is set as their default language. - You may now "speak in LANGUAGE" to set your default "say" language to what you specify. To make it so that "say foo" comes out in Rigellian: speak in rigellian say foo - Creators don't lose stamina when moving around while invis. - Added sefuns check_string_length and print_long_string to handle Strings Of Unusual Size. - Removed call_outs from PING_D. - Added DeadMan switch to PING_D. - Added logon notification channel . - Added A_CUSTOM as an all-purpose armor type that can be worn on most body parts. - Enhanced channel and event logging to the router. - Fixed potential channel spoof and channel admin problems in the router. - Modified various commands to deal with Load-Addled Game Syndrome. - Modified LIB_BOOK to avoid tedious reload on init(). - Added player bots for load testing (tested on Linux with approx 250 player bots, all active, with no noticeable lag on a crappy 1.2GHz laptop). - Beefed up the router command. - Character creation now does not save the playerfile until the entire creation process has completed. - Made AUTO_WIZzing a choice for the user, rather than truly automatic. - Added privacy field to template workroom. - Added LIB_MESSAGES fix suggested by Memrosh. - Fixed a LastLocation bug in LIB_PLAYER. - Fixed shadow bug in the remote control. - Added catch_tell room to arch area. - Fixed reaper bug that destructed shadows. - Fixed a bug in room messages during eventMoveLiving(). - Added Praxis domain. - Fixed customdefs issue in QCS with files in /domains. - Added FILE_D. - Added LIB_MOUNT, LIB_DOMESTICATE. - Fixed carry leak in arches during shutdown. - Fixed save problem in arches during shutdown. - COMPAT BUSTER: changed GetCustomPath and GetCustomCommand to query_custom_path and query_custom_command. - Cleaned up strange formatting error in old sefun docs. - Added sefun: query_local_functions.