Alice 1.1
=========

What is Alice?
--------------
Alice is Skotos Tech's ActiveX client for use with Internet Explorer on
Windows. The Alice ActiveX control is designed to reside in the middle of a
standard web page. It provides a connection to the Skotos game servers as
well as resolving special commands sent by the server to make changes to
underlying the web page, such as changing map images, client graphics, etc.

Though Alice works on earlier versions of IE, we recommend that you at least
use versions of IE 5.0 or higher.

Notices
---------
Alice is (c) 2000-2001 Skotos Tech Inc. All Rights Reserved.

Portions of Alice are (c) 1998 Andromedia Incorporated. All Rights Reserved.

Alice is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY KIND,
either express or implied.

Portions of Alice were built using a subset of the Open Source program
called Pueblo, which was developed by Chaco Communications and is now
copyright Andromedia. As Open Source, the license used to publish Pueblo
demands that we, Skotos, in turn make available any modifications we've made
to the Pueblo source. These files can be downloaded as a gzipped tar file here.

The open-source license for Pueblo is officially located here but as this site is
unavailable it is also mirrored here at the MozDev Pueblo Development Site.

At this time, these modifications to the Pueblo source code do not compile,
as there are large portions of Alice that are not derived from Pueblo and
which we do not wish to make available at this time. However, the changes we
have made would be useful to someone desiring to make Pueblo re-entrant. We
hope to release a full distribution of Alice at some point in the future,
along with our Java client.


Bug Fixes from Version 1.0
--------------------------
   * There was the issue of the server sending multiple SKOOT messages at
the same time (used for such things as map changes) where the client would
only correctly process one and not display the rest. Multiple commands sent
by the server will now be honoured.

   * Some nasty memory leaks were squashed. Most were associated with games
other than Castle Marrach.

   * Control-C now copies to the clipboard properly when you have selected
text in the text pane.


Known Bugs
----------
   * Multiple instances of Alice running at the same will be unstable as
soon as any one of them is closed. Alice remains a militantly
single-instance program as of this point.

   * Web Proxy & SOCKS are not yet supported.


Display & Keyboard Enhancements
-------------------------------
   * The characters '<' and '&' can now be used in Alice without getting
mangled on the display into "<" and "&" respectively.

   * Control-U clears the input area.



Logging Enhancements
--------------------
   * A new option has been added permitting you to append text to an
existing file instead of having to overwrite or select a new file.

   * The character sequence "%CHAR%" used in a log file name or in the
directory path leading to the file name will be expanded into the name of
the currently logged in character.  For example, when playing the character
Daris, the file name "%CHAR%.txt" will get expanded to daris.txt while
"C:\Logs\%CHAR%\Log.txt" will get expanded into "C:\Logs\daris\Log.txt".

   * The character sequence "%DATE%" used in a log file name or in the
directory path leading to the file name will be expanded into the current
date in YYYY-MM-DD format.  For example, when playing on the 11th of April,
2001, the file name "%DATE%.txt" will get expanded to 2001-04-11.txt while
"C:\Logs\%DATE%\Log.txt" will get expanded into
"C:\Logs\2001-04-11\Log.txt".

   * For each game, Alice will now remember your last log file settings and
present these to you next session.


Macro Processing
----------------
Macros have been added to Alice.  Macros define a single word of text which
will be replaced by an arbitrary string of text when encountered in user
input.  There are several macro commands in Alice:

   * MACRO LOAD -- This command will load the macros stored in the registry
for a specific combination of world and character.  Every character in every
world has its own set of macros.  MACRO LOAD is executed when you first log
in, but has its uses in overwriting macro changes you have made that you do
not wish to keep.

   * MACRO STORE -- This command will take all in-memory macros and write
them to the registry for the current world and character (deleting any
macros currently in storage).  ANY CHANGES OR ADDITIONS MADE TO MACROS WILL
NOT BE REMEMBERED FOR THE NEXT SESSION UNLESS THIS COMMAND IS ISSUED.  By
making the storage of macros separate from the creation and deletion of
macros, it is possible to set up task-specific macros without having macro
clutter at a later date.

   * MACRO ADD -- This command associates a single word with an arbitrary
block of text.  For example:

    MACRO ADD lmsr long may She reign

   This command will define a macro such that any time the word "lmsr" is
seen in the input text, it will be replaced with "long may She reign".  For
example:

    say "Her Majesty, lmsr, is truly a beauteous woman."

expands to:

    say "Her Majesty, long may She reign, is truly a beauteous woman."

The name of a macro can have any combination of uppercase and lowercase
letters, numbers and the underscore "_" and single quote "'" character.
Macro names are case-insensitive, so "lmsr", "LMSR" and "LmSr" are the same
macro.

Macro replacement is done on whole words only.  The above macro would not
expand the text "Gooberlmsr" into "Gooberlong may She reign" for example.

Keep in mind that MACRO ADD will only add a macro to memory.  MACRO STORE
will have to be used to make the macro stick around across sessions.

   * MACRO REMOVE -- This command will remove a macro from memory.  For
example:

    MACRO REMOVE lmsr

deletes the macro we defined above from memory.  As always, MACRO STORE will
have to be used to cause permanent deletion across sessions.

   *  MACRO REMOVEALL -- This command deletes all macros currently active in
memory.  Again, MACRO STORE is needed to make the changes permanent.

   * MACRO LIST -- This command lists all macros currently defined in
memory. This list is provided in alphabetical order.  If an optional string
is provided afterwards, the list will be pruned to show only those macros
which begin with that string.  The following command, for example, will only
list the macros beginning with the letters "Ab":

    MACRO LIST Ab


Advanced Macro Features
-----------------------
   * Macros which contain macros in their expansion text will further expand
these macros.  Consider the following macros:

    MACRO ADD bowp bow politely

    MACRO ADD nodp nod politely

    MACRO ADD greetr bowp women
    nodp men

(You would use Ctrl-Enter to accomplish the multi-line macro.)  If you used
the macro "greetr" on the command line, the text would expand to the
following two lines in the entry field:

    bow politely to women
    nod politely to men

   * Words contained in curly brackets will have one member of the list
randomly selected.  Consider the following macros:

    MACRO add polite0 {politely|courteously|cordially}

    MACRO ADD bowp bow polite0

    MACRO ADD nodp nod polite0

    MACRO ADD greetr bowp women
    nodp men

Typing "bowp Launfal" will expand, at random into any of the following three
command lines:

    bow politely Launfal
    bow courteously Launfal
    bow cordially Launfal

Typing "greetr" could expand to, among others, the following pairs of
commands:

    bow courteously women
    nod cordially men

    bow politely women
    nod politely men

    bow cordially women
    nod courteously men

Note how having macros that expand to macros can combine with selection
lists in interesting ways to make characters more lifelike and believable
(and less repetitious) without straining your typing fingers.

   * The character "%" followed by any digit between 1 and 9 inclusive will
look forward in the input text that many words and replace the %-sequence
with the found word.  Consider the following example:

    MACRO ADD bogus say "A bogus %1 %2 %3 %4 %5 %6 %7 %8 %9 test with

Typing the following at the command line:

    bogus 1st 2nd 3rd 4th 5th 6th 7th 8th 9th added junk

will result in the following text being generated:

    say "A bogus 1st 2nd 3rd 4th 5th 6th 7th 8th 9th test with added junk

Note that the %-sequences don't have to show up in numerical order.

Consider this macro:

    MACRO ADD bogus2 say "Bogus %3 %1 %2 test."

Typing "bogus2 1st 2nd 3rd" will expand to:

    say "Bogus 3rd 1st 2nd test."

Also note that you don't have to actually use all the arguments given to a
macro.  If the highest-numbered %-sequence in your macro text is, say, %3,
the next three words are considered arguments EVEN IF YOU DON'T USE THEM!

Consider:

    MACRO ADD bogus3 say "Bogus %3 test with added junk:

Typing "bogus3 1st 2nd 3rd Cirrus Socrates Pelican" will result in the
following text:

    say "Bogus 3rd test with added junk: Cirrus Socrates Pelican

The strings "1st" and "2nd" will be swallowed up and ignored in this case.

Again, as with selection lists, expanded macros can contain macro
invocations of their own.  Indeed it is possible to create very complex sets
of macros which include arguments and selection lists both to do many
wonderful things with the system.  Let your imaginations run free while you
experiment with the new, powerful macros.


External File Execution
-----------------------
Two new commands have been added to ease the workload in some repetitious
tasks.  The first of these, CD, works in tandem with the second, EXEC.

   * CD: This command either reports your currently-active directory or it
changes your currently-active directory to one you specify.  For example,
typing:

    CD

could result in the response:

    The current directory is C:\Junk\Stuff

Typing instead:

    CD ..\Other Stuff

could result in the response:

    The current directory is C:\Junk\OtherStuff

The CD command was designed to work in roughly the same way as the
equivalent command on the Windows command line.  Thus "." refers to the
current directory (C:\Junk\Stuff in the first example) and ".." refers to
the parent directory (C:\Junk in both examples).

   * EXEC: Paired with the CD command is the EXEC command.  The EXEC command
opens a named file and treats its contents (almost) as if it were typed at
the command line.  Any commands, including macros, can be contained within
the file and will be executed except for the following:

    CD
    EXEC
    MACRO [LOAD STORE ADD REMOVE REMOVEALL LIST]


Reporting Bugs
--------------
As you use Alice 1.1 you will undoubtedly come across bugs or ideas for
improvement.  Please submit these as you come across them, classifying them
as follows:

FATAL BUG: Anything that prevents you from playing the game at all. This
would include fatal crashes or things that somehow cause disconnects from
Skotos' servers.  Please be very specific in describing the steps leading up
to such a fatal bug.  The more information we have, the better we can
diagnose and fix the problem.

BUG: Anything that doesn't work as documented (for what little documentation
you've received).  Again, please be very specific in describing the bug.

CHANGE REQUEST: If something works in a way that really bugs you, submit a
change request describing how the current mechanism causes problems for you
and what you'd like to propose in its place.  Specific and thorough change
requests will be considered before vague ones.

ENHANCEMENT REQUEST: If you can think of a way to improve or add upon
current functionality, pitch it to ce@skotos.net. Specific and thorough
enhancement requests will be considered before vague ones.

The best way to send these is in an email to ce@skotos.net with "ALICE
1.1: CHANGE REQUEST" or the like in the subject header.