tinymush-2.2.4/conf/
tinymush-2.2.4/scripts/
tinymush-2.2.4/vms/
This is an overview of many of the new features in TinyMUSH 2.0 with
respect to the Pern variants of TinyMUSH.  More details can be gotten
from the help files included with the source (and also available on
sites running TinyMUSH 2.0).

Player-level differences:

  @list: Return lots of useful information.  @list with no args tells
     you what args you can use.
  version: display verison and server build date.
  Several commands now have command switches.  The format is
     <command>/<switch> with no spaces around the /.  See @list switches
  VERBOSE flag for debugging MUSH programs.
  NOSPOOF flag for showing (definitively) who is saying/posing/emitting what.
  @switch/first only runs first match, not all matches.
  @clone can clone VISUAL objects owned by others.
  @decompile <obj> - output commands to recreate <obj> (THINGs only)
  @doing <string> - Set Doing string in WHO report.
  @dolist <list> = <command> - Runs command once for each item in list,
     replacing ## with the current item in list.
  Semaphores: @notify <obj>=<count>; @wait <obj>=<command>;
     @wait <obj>/<time>=<command>; and @drain <obj>.
  Emit commands: @emit, @pemit, @oemit, @roomemit.
  INHERIT flag for limiting your objects' ability to @force you.  Set an
     object INHERIT if you want it to be able to @force you, set yourself
     INHERIT to give _all_ your objects this power (the old behavior)
  @femit, @fpose, and @fsay: @force <obj> = @emit/pose/say that doesn't
     require INHERIT.
  @listmotd: display message-of-the-day again.
  @ps/long displays enactor and parameters of queue entries.
  @sweep displays whether object @listen's checks for $-cmds or both.
  examine <obj>/<attr> shows just that attribute.
  LOGOUT disconnects you from your character without breaking the net
     connection.
  There is an idle timeout (default 1 hour).
  HALTED flag split out from HAVEN flag.
  LEAVE and ENTER attribute families are now processed for all object types
     (even rooms).  Also OXLEAVE and OXENTER.
  MOVE attribute family is run on the moving player/object after it moves from
     one place to another.
  EQ, NEQ, GT, GTE, LT, LTE relational funcitons.
  AND, OR, NOT, XOR logical functions.
  OBJ, POSESS, SUBJ pronoun-izing functions.
  DIST2D and DIST3D functions for distance calculations.
  TYPE, FLAGS, HASFLAG, LOCK, ELOCK, HOME, MONEY, NEARBY functions for
     getting info about objects.
  STARTTIME, SECS, VERSION miscellaneous functions.
  LWHO, LEXITS, LCON functions for returning object lists.
  LATTR function for returning the list of attributes on an object.
  BEFORE and AFTER  string-handling functions.
  User-named attributes: Set attributes with &<attrname> <obj>=<value> or
     @set <obj> = <attr>:<value>.  User-named attributes can be read with
     get(), but may NOT be abbreviated.
  Owned attributes.  You can keep ownership of an attribute when someone
     else @chowns the attribute by locking it with @lock <obj>/<attr>.
     Also: @unlock <obj>/<attr> and @chown <obj>/<attr>.  Locked attributes
     may not be changed by anyone.
  Attribute locks: You can lock to any attribute, the lock will FAIL unless
     you own the attribute on the object being tested (unless it is a
     public attribute like sex).  Attribute locks check the object AND its
     contents, only one object needs to satisfy the test.
  $-commands: A number of predefined attributes (like DESC, SUCC, etc) are
     not checked for $-commands.  In addition, there is a command to disable
     the check on a per-attribute basis (@set <obj>/<attr> = [!]no_command).
  Parser improvements: []'s may now be nested, escaping special characters
     ( ie, []();,%{} ) works consistently, and many security holes have
     been plugged.
  %-substitutions now offer all the functionality of the v() function
     except for v(attribute) but with better performance.  There are no
     security issues with %-substitutions as opposed to v().
  ADISCONNECT now gets the reason you disconnected in %0.

Wizard-level differences:

   @motd command for setting player and wizard messages-of-the-day.
   @enable and @disable commands to turn logins, building, and command
      queueing on and off.
   @timewarp and @kick commands for dealing with stuck queues.
   Objects must have the INHERIT flag set to have wizard privileges.
      Non-INHERIT objects cannot modify or trigger INHERIT objects.
      Setting the INHERIT flag on a player gives INHERIT privileges
      to all his/her objects (which is the old behavior).
   @chownall and @toad take an optional argument of who to @chown the
      objects to.
   @mark, @mark_all, @apply_marked commands for doing database-wide
      operations.  @mark has the same syntax as @search, but sets or
      clears the MARKED bit that @apply_marked uses.
   TIMEOUT and ALLOWANCE attributes for setting idle timeout and daily
      allowance values for individual players different from the default.

Maintainer/God-level differences:

   Most things that used to be #define constants in either the code or in
      config.h are now specified in a runtime configuraiton file.  There
      is no more need to recompile to change behavior.
   You can set things up in the configuration file to transmit WHO data
      to a remote RWHO server.
   Command access rights (ie, who may execute what command), and attribute
      access rights (who may see or modify what attribute) may be set
      from the configuration file.  Think long and hard before doing this.
   An optional Master Room, which is checked for exits after checking for
      exits in the current room, and which is checked for $-commands after
      checking for $-commands around the player.  This allows game-wide
      commands to be added easily.
   TinyMUSH 2.0 is able to read TinyMUD, TinyMUSE, TinyMUSH 1.x and PernMUSH
      database files.  PernMUSH files need to have a header line put at the
      beginning of the file identifying them as such.
   A database integrity checker that is much more thorough than sanity-check.c
      (and which works on MUSH databases!) is included.
   The attribute strings are stored in a separate disk-based file and only
      brought into memory when needed.  Recently-accessed attributes are
      cached (cache size is configuragle) to speed access.
   Online database repair is possible with the @fixdb command.
   Site lockout and per-site registration is available.  Individual sites or
      subnets may also be marked suspect, so that connects from them are
      reported to logged-in wizards.
   Players idle for more than one hour (configurable) are automatically
      disconnected, along with players who don't connect within two minutes
      and players who have 3 login failures.
   Most of the linear table scans in the old code have been replaced with
      hash table lookups.