MUSHclient version 3.03
-----------------------

Released: Wednesday, 9 August 2000


CHANGES


1. Fixed installer bug where the documentation for releases 2.16.13, 2.16.14, 3.01 and 3.02 were placed in the main MUSHclient directory rather than the "docs" subdirectory.

2. Fixed installer bug where you were not asked before overwriting an existing exampscript.pl file.

3. Added comment to start of "names.txt" file telling you where you can find more character name files.

4. Fixed bug where the default "world files directory" was not used if you opened a world *when no other world was open*, or if the activity window was active.

5. Added a help topic on "how to gag players".

6. Updated help files to make it easier to find how to do a spell check.

7. Added a new option for the output window - "un-pause on send". This is for the situation where you have scrolled back (probably with autopause on) to look up something important, (eg. the direction to walk next, a help topic, the name of another player) and now wish to use that information in a new command. With "un-pause on send" set, the output window will automatically un-pause when you send the next command, so you can see the results of doing it.

8. Added new script methods: 

Timers

   AddTimer - add timers from a script.
   DeleteTimer - delete timers from a script.
   IsTimer - see if a named timer exists.
   GetTimerList - get a list of named timers.
   GetTimer -find information about a named timer.
   GetTimerInfo - find more information about a named timer.

Speed-walk queues

   QueueCommand - queues a command for sending at the "speed walk delay" rate.
   DiscardQueue - discards any queued commands.

Character-name generator

   ReadNamesFile - reads in a file for character name generation.
   GenerateName - generates a random character name.

Miscellaneous

   GetUniqueNumber - generates a unique number in the range 0 to 2147483647.
   GetSentBytes - gets the count of bytes sent to the MUD
   GetReceivedBytes - gets the count of bytes received from the MUD.
   GetConnectDuration - gets the number of seconds the world has been connected.
   GetScriptTime - gets the time spent executing scripts.

9. Added new script property: SpeedWalkDelay - change the number of milliseconds between lines sent when speedwalking.

10. If you are viewing the scripting configuration page, and click on "edit script", and "use internal notepad" is checked, then the new notepad window is now "related" to the world that did the editing.

11. You can now specify a "speed walk delay" - this lets you specify a time (between zero and 30 seconds) that will elapse between speed walk directions being sent to the MUD. The speed walk delay can be specified to the nearest millisecond. This is for MUDs that don't allow very rapid walking. In order that MUSHclient doesn't hang while the speedwalk commands are being executed they are actually put in a "pending queue" and then removed from the queue and sent to the MUD at the interval that you designate.

12. Because speed walk commands are now queued (possibly with quite a long delay between each one) you might have the situation where you need to discard the queue. For example, if you typed 40N (go north 40 times) with a 3-second speed-walk delay, then it would take 120 seconds (2 minutes) to send those commands. If you found yourself in a fight, or a conversation, in the meantime, you might want to cancel any outstanding commands. To do this, there is a new menu option: Input -> Discard Queued Commands (Ctrl+D). 

13. Ctrl+D is now the keyboard equivalent for Discard Queued Commands (see previous point) rather than "Drop".

14. When viewing the activity window, you can now save or close the selected world from the File menu.

15. New alias option - "queue command". This lets you specify that an alias is to be queued (like a speedwalk string) rather than sent immediately. This is for aliases that need to send a batch of commands, but not too quickly.

16. New trigger option - "World (speedwalk delay)". This lets you specify that a trigger is to be queued (like a speedwalk string) rather than sent immediately.

17. If you have the focus in the output window, and press a key on the numeric keypad, the focus now shifts to the command window, and the command processed.

18. Fixed a bug where activating a notepad window (with the script function ActivateNotepad), would activate an existing notepad window, rather than returning an error, if the requested window did not exist.

19. Any queued speed walking (or other) commands are now displayed in the status line, so you can see how many are outstanding.

20. An automatic mapping function has been added - see description below.

21. Undid change (6) from version 3.01. This change made the output window unpause when you did a copy, however change (7) from this version makes this a bit redundant. It is actually a bit annoying to have the output window scroll as soon as you do a copy, it is a bit unexpected, and against normal GUI behaviour. Now, if you copy something, and then use the copied text in a command, then *sending the command* will unpause the window, providing you have "unpause on send" checked.

22. Added new script methods for mapping management:

    AddToMapper - adds a mapping direction
    GetMappingCount - gets the count of mapped directions
    GetMappingItem - gets one mapping item
    GetMappingString - gets the entire mapped speedwalk string
    DeleteLastMapItem - deletes the last mapped direction
    DeleteAllMapItems - deletes all mapped directions

23. Added new script properties for mapping management:
   
    Mapping - whether mapping is enabled at present
    RemoveMapReverses - whether backtracks are to be automatically removed

24. Improved detection of bad files when loading in MUSHclient world/trigger/alias (etc.) files, and added better error messages to describe exactly what the problem is when you load such a file (eg. not a MUSHclient file, bad version number, wrong file type).

25. Execution of scripts (VBscript, JScript, PerlScript) is now timed, so you can work out how much time MUSHclient is spending in script routines. See the scripting configuration page for the total time in seconds. The timer uses the inbuilt high-precision timer that is being built into modern chips, and should be very accurate (to the nearest microsecond).

26. Changed uninstaller to read "Remove MUSHclient" rather than "Remove MUSHclient 3.x" to avoid having lots of uninstallers in the program folder (which all do the same thing).


Mapper
------

In response to repeated requests, and also some field testing, an auto-mapper has been added to MUSHclient. This is *not* a GUI mapper (in other words, it doesn't attempt to draw maps on the screen), but is a system for recording the steps you have taken, with a view to re-using them later.

Once activated, it will do the following:

* Automatically record "standard" compass directions. These are defined as:
  n (north), s (south), e (east), w (west), ne, se, nw, sw, u (up) and d (down)
  The directions in brackets are synomyms - either may be used.

* On request, record any other commands which move you around, eg. "teleport", "go portal", "open door", "unlock gate"

* Automatically detect when a direction command fails to move you, and remove the failed direction from the mapping list. This is done by matching on a user-supplied "failure" string, eg. "Alas, you cannot go that way", "You cannot go north", "The gate is locked", "The door is closed". The failure string can be a "regular expression", thus combinations of the above may be expressed, eg. "^(You cannot go that way|The gate is locked)$".

* Automatically (if desired) remove backtracking. For example, if you go North, and then South, you would normally end up back where you started. The auto-mapper will remove such instances, so that the final "direction string" does not contain false starts.

* Convert the recorded directions into a "speedwalk string".

* Also provide a "reverse speedwalk", so you can go back the way you came.

* On request, turn the direction string into an alias. Ditto for the reverse direction.

* You can review the recorded steps at any point, and either keep adding to them, or start a new pathway.

* You can take the reverse route by clicking a single button.

* You can do the above things from a script routine if you want.

The intention of the mapper is that you can use it to generate a speed walk string (for use in an alias), by "teaching" it the way to go, rather than having to record each move you make on a bit of paper. For example, you might start at the city square, and walk around until you find a grocery shop, and then record the steps needed to find it, so you can find it again next time more easily. Also, by generating the reverse steps, you could move back from the grocery shop to the city square very easily.
