System Details | Table of Contents | Future Development |
A number of bug fixes have been performed in this release, mainly various problems with syntax declarations and named scripts.
A new statement has been introduced. The DEPENDING ON statement is an improved version of the common switch/case statement available in many other languages.
Two new expression types have also been introduced. The CONTAINS expressions performs sub-string containment tests, and the BETWEEN expression makes it easy to test if a value is within a specified, consecutive, range.
SCHEDULE and RANDOM now accepts general expressions instead of only literals.
This version introduces the following radical improvements:
Multiple minor improvements has also been made, e.g. free order of declaration of initial location and names, ',' can now be used as a conjunction in player input, a new RESTART statement, the MESSAGE clause now accepts general statements (not only strings) and named actor scripts.
The 2.6 interpreter will run 2.5 games, but the 2.6 compiler can not generate 2.5 games. So upgrading to 2.6 will create games only playable with 2.6 interpreters, but you can keep old games and still play them.
User definition of run-time messages is now possible.
Removed the indefinite article from the default messages. Instead introduced the ARTICLE slot in objects which will be used (if present) before producing the MENTIONED message (which may be constructed automatically). If no article is declared a default is supplied ("a" if using english). This means that some tricks that have been used to somewhat remedy the article problem ('a' was always used!), don't work any more. Remove all 'a', 'an' etc. from the texts and names in the Alan source (usually in the MENTIONED slot and possibly in the HEADER for containers), and introduce the ARTICLE "an" declaration on objects that require it (those whose name start with a vowel sound). For objects that doesn't need an article define an empty ARTICLE clause.
It also means that their is now a new reserved word ARTICLE .
It is also now possible to define the ARTICLE , MENTIONED and DESCRIPTION on objects in any order.
String quotes (") within strings are now allowed, if doubled (
"Charlie said ""Hello!"""
). The same goes for single quotes (') within quoted identifiers.
(Luis Torres <let@reef.cis.ufl.edu>)
Multiple default attribute sections simplifies using general include files as the default attributes can be distributed across the complete adventure source.
The new VISITS statement replaces the previous option with the same name, allowing setting of the visits variable during run-time.
The compiler now generates completely compatible adventure files, including multi-national character sets which are converted automatically to be presented correctly on any supported platform.
If the interpreter is renamed it will automatically load adventure files (
.acd
and
.dat
) with the same name.
(Jeff Harrison <harrison@mprgate.mpr.ca>)
The
QUIT
statement prints a restart question which may be answered affirmative, in which the game is reloaded and restarted, or negative in which case the adventure is terminated.
(Byron Montgomerie <byron@saturn.cs.mun.ca>)
SAVE
and
RESTORE
now prompts for a file to use so multiple save files can be used by the player.
(Luis Torres <let@reef.cis.ufl.edu>)
Multiplication and division can now be performed using the '*' and '/' operators respectively.
(Robert Yoke-Loong Foo <af685@freenet.carleton.ca>)
Actors may now be containers (allows for making them carry things). The class indications in the syntax declarations have been enhanced to account for this also. You can now restrict parameters to all entities having the container property, only actors having it, or only objects having it (see See Syntax Definitions , and See Containers for details).
String comparison normally ignores the case of characters (the new operator `==' does exact matching) (see See Binary operators ).
The statements to increase or decrease values are now called INCREASE and DECREASE (instead of INCREMENT and DECREMENT ).
An optional description has been introduced on actor scripts, giving a possibility to create descriptions that are directly coupled to the activities of the actor (refer to See Actors ).
The QUIT statement now does not print any scores. This has to be made explicitly. Also the identifier SCORE is now allowed in expressions, representing the current value of scores collected so far.
Containers are now listed in a more natural way, the old format of one item per line has been replaced by concatenating them into a natural sentence, like:
You are carrying a box, a ball and a lightbulb.
This might require a change to the HEADER declaration of containers.
String and integer literals are introduced in the player input and in the syntax declarations. Attributes may now also be strings. No incompatibilities should occur.
In version 2, the concept of syntax is introduced. A programmer may allow different and more complex input from the player, not just the simple verb/object type used in version 1. However, the default mechanism is still this simpler form of input so very little needs to be changed when converting to version 2. This also follows the spirit of Alan, it means that syntax is not strictly necessary unless you want to do something extra. For player input following the simple verb/object syntax there is nothing you have to do.
Another difference is the improvement in the definition of synonyms. First, the order of definition is different, you should now supply all the synonyms first and then the word they are synonyms for. This will probably require some rewriting of your Alan programs, but it is the more logical way to specify synonyms. Also, synonyms are now allowed anywhere in the program, so it is now possible to group global verb definitions, syntax definitions and synonyms for the same verb together (and perhaps place them in a separate include file).
System Details | Table of Contents | Future Development |