tinymush-3.0b21/game/bin/
tinymush-3.0b21/game/data/
tinymush-3.0b21/src/tools/
If you are converting your game from TinyMUX, upgrading to TinyMUSH
3.0 is just like doing a MUX version upgrade, with some additional
steps. You will need to do the following:

- Flatfile your database using the dbconvert utility from TinyMUX
  (the db_unload script will work -- this is just like doing a normal
  backup of your database).

- Copy that flatfile to some safe place, and save it.

- Edit mush.config and make sure it's correct (it should basically be
  like your old mux.config file).

- If the GAMENAME parameter in your mush.config file is not 'netmush',
  edit your GAMENAME.conf file (substitute whatever you set GAMENAME to
  for GAMENAME). Add 'game_log GAMENAME.log' (again, substitute for
  GAMENAME) to that configuration file.

- Assuming that your flatfile is in the 'game' directory, go into the
  'game' directory ('cd game').

  If you have perl installed on your system, type:

      ./cvtmux.pl < mygame.flat > NEW.flatfile

  If you do not have perl installed on your system, type:

      sed -f cvtmux.sed mygame.flat > NEW.flatfile 

  (Substitute the name of your flatfile for 'mygame.flat'.)
  This will take care of converting function calls to backwards-compatible
  versions, and the '%c' substitution to the '%x' substitution.

- From the game directory, type:  ./Restore NEW.flatfile
  This will unflatfile (load) your database into TinyMUSH 3.0 format.

- From the game directory, type:  ./Backup
  This will back up your datbase in TinyMUSH 3.0 format.
  (This step is not necessary and can be skipped, but it's worthwhile
  doing anyway.)

- Convert your comsys database. You must have perl installed on your
  system. From the game directory, type:

      cp comsys.db comsys.db.save
      ./convert_comsys.pl < comsys.db.save > comsys.db

  Make sure to keep comsys.db.save someplace safe, in case something goes
  wrong in the conversion process.

  If you do not have perl installed on your system, you will not be able
  to import your comsys database. (You could give a copy of the database,
  and the script, to a friend with perl on his system, and have him do
  it for you, though.)  If you can't find a way to convert your comsys
  database, type:  mv comsys.db comsys.db.save

- From the game directory, type:  ./Startmush
  This will start the game.

-----------------------------------------------------------------------------

Compatibility Notes


You will want the following parameters in your conf file, for maximum
TinyMUX compatibility:

	global_aconn_uselocks no
	lattr_default_oldstyle no
	addcommands_match_blindly yes
	addcommands_obey_stop no
	helpfile +help text/plushelp
	helpfile wiznews text/wiznews
	access wiznews wizard

Note that unless you explicitly need the legacy behavior of @addcommand'd
commands (you want no Huh? message generated if an @addcommand is missed,
and you match multiple @addcommands at once), you should probably set
the last parameters to the opposite of their MUX-compatibility defaults.

-----------------------------------------------------------------------------

Altered Behavior


The following are important changes in behavior between MUX and 3.0:

- MUX used '%c' for ANSI color. 3.0 uses '%x' for ANSI color ('%c' is
  the last-command substitution, as it is in PennMUSH and TinyMUSH 2.2.)

- MUX ifelse() conditioned on a non-zero result. 3.0 ifelse() conditions
  on a boolean-true result. To get the old behavior, use nonzero().

- pmatch() now works as documented (i.e., identical to its PennMUSH
  predecessor). To get the old behavior, use pfind().

- Objects are now checked for commands if they are set COMMANDS (instead
  of not being checked for commands if they are set NO_COMMAND).

- ZMOs are now controlled by their ControlLock, not their EnterLock.
  Only objects that are set CONTROL_OK may be controlled according to
  their zone's ControlLock.

Your existing database was converted automatically to take the above
differences into account.

The comsystem has been re-implemented. Some significant differences
include:

- If you are starting a game from scratch, and thus have no comsys.db,
  on startup, the Public and Guests channels are created by default.

- The channel administration commands have been consolidated to a
  single command, @channel, which takes a variety of switches. Channel
  objects are no longer necessary; data from them is automatically
  imported when you load a comsys database of the format generated
  by the convert_comsys.pl script.

- Multiple aliases for a single channel work in a much saner manner.
  Each alias can be associated with a different comtitle.

-----------------------------------------------------------------------------

The following is a list of features/functions that were in TinyMUSH 2.2.5,
but were not in TinyMUX 1.6, and which have become part of 3.0.

For a more general look at TinyMUSH 3.0 changes, see the CHANGES file.

- Quotas by object type supported.

- Added building_limit conf parameter.

- Added player_parent, room_parent, exit_parent, thing_parent conf
  parameters for default parent objects.

- Added log options keyboard_commands and suspect_commands.

- Decent password choices are enforced via safer_passwords.

- Guest can be locked out from sites via the guest_site parameter.

- SIGUSR1 is logged, and the game restarts as GOD, not #1.

- Note is written to log after @startup queue is run.

- Disconnect log includes command count, bytes input, and bytes output.

- New COMMANDS flag, the reverse of the NO_COMMAND flag, which has been
  eliminated.

- New STOP flag, halts matching if a command is matched on a STOP object.
  (Wizard-only.)

- NOSPOOF is only wiz-visible.

- The color substitution is now '%x' rather than '%c'.

- The '%c' substitution returns the last command.

- Added "lag checking".

- Added timechecking.

- @daily is now implemented using the @cron facility.

- @dump/optimize no longer exists, since the database is optimized after
  every dump.

- @doing truncates the minimum possible (i.e., don't truncate for the ANSI
  character unless necessary).

- Added @dolist/notify.

- @enable/@disable now appear in the logfile, like config updates do.

- Added @eval command.

- examine/brief only shows object ownership (2.2 behavior).

- INFO command implemented.

- Added '@list cache'.

- Hash statistics listing shows stats for @function hash table.

- @mvattr no longer clears the original attribute unless it was able
  to copy it at least once.

- @pemit/noeval permits unparsed output.

- @pemit/list now obeys the /contents switch.

- There is a space after the @program prompt (2.2 behavior).

- Added object count to @search.

- @stats shows the next dbref to be created.

- The #$ @switch/switch() token has been added.

- Added @conformat and @exitformat contents and exits formatting.

- Command matches can be done unparsed through no_eval attribute flag.

- New BOUNCE flag acts like equivalent of @listen of '*' without @ahear.

- Added bor(), band(), bnand() functions.

- die() checks its arguments 2.2-style (so 0-100 is valid).

- Added filterbool() function.

- ifelse() now conditions on a boolean, rather than on a non-zero number.

- Added nonzero() function, which behaves like ifelse() used to.

- lastcreate() and the NewObjs attribute keep track of last-created
  objects for a given thing.

- Added lpos() function.

- matchall() returns a null string, not 0, on no match.

- mix() can take up to ten arguments total.

- objeval() now preserves the cause (enactor) in the evaluation, and
  allows the calling object to succeed if its owner is the same as
  the evaluator's owner, instead of needing to _be_ the evaluator's
  owner (2.2 behavior).

- Added programmer() function.

- Added remit() function, like pemit() but does contents.

- restarts() and restarttime() added.

- Added sees() function.

- shl(), shr(), inc(), dec() no longer require inputs to be numbers
  (2.2 behavior).

- Added t() function.

- Added toss() function.

- Vector functions replaced by 2.2 ones, including addition of vdot().
  This means that vector multiplication now works, but it breaks the
  old MUX behavior of vmul().

- Added wipe() function.

- Added xcon() function.

- elements(), filter(), map(), munge(), setunion(), setinter(), setdiff(),
  shuffle(), sort(), sortby(), splice() take output delimiters.