//	ALAN source comments for the Annotated Adventure

var c01 = '-- introduces a comment, which extends to the end of the line.';
var c02 = 'Alan language "keywords" are highlighted in uppercase for this example. This formatting is often used but isn\'t necessary in real Alan code.';
var c03 = 'Compile-time directive which includes another source file into the game being compiled.';
var c04 = '<b>std.i</b> is a collection of Alan source code for commonly used player verbs, etc.';
var c05 = 'Starts a room or location definition.';
var c06 = 'The name by which the location is known within the game source code.';
var c07 = 'Optional location name to display to the game player.';
var c08 = 'Text to display when the player enters the location.';
var c09 = 'Defines a direction a player can move from this location.';
var c10 = 'The word that the player can type to move this way.';
var c11 = 'The name of the location to move the player to.';
var c12 = 'Starts an (optional) block of programming code to change the default behaviour of the EXIT.';
var c13 = 'An object defined elsewhere in the game.';
var c14 = 'A default "container" which holds items the player picks up.';
var c15 = 'Moves an actor or object to the specified location.';
var c16 = 'Default name used to refer to the player character within the program code.';
var c17 = 'Starts a conditional test.'
var c18 = 'If the proceeding statement is true the following code is executed.';
var c19 = 'If the previous IF statement was not true the following code is executed.';
var c20 = 'Example of a simple exit definition.';
var c21 = 'An empty "CHECK" statement disables this exit and just displays the following text.';
var c22 = 'Marks the end of the LOCATION definition.';
var c24 = 'Marks the end of the definition of this EXIT.';
var c25 = 'The cloakroom definition is typical of a simple location with just a description and a list of basic EXIT definitions.';
var c26 = 'Starts the definition of a game object.';
var c27 = 'The name by which the object is known within the game source code.';
var c28 = 'Optional name or phrase used by the game player to refer to this object. You can define multiple name phrases.';
var c29 = 'The player can use one or more of the adjectives <b>small</b>, <b>brass</b> as well as actual object name <b>hook</b>.';
var c30 = 'The name the player can use to refer to this object. The player can optionally also precede name with one or more adjectives <b>small</b>, <b>brass</b>.';
var c31 = 'Specifies the initial location of the object when the game starts.';
var c32 = 'Name of a location defined elsewhere in the program code.';
var c33 = 'Defines an attribute for the object which can be checked by other code - e.g. TAKE verb checks if an object is "takeable".';
var c34 = 'Makes an attribute off or false.';
var c35 = 'An attribute can be defined by simply naming it in an IS clause. This example attribute - "takeable" - is actually defined for all objects in <b>std.i</b>; it is redefined here to make the value false for this object.';
var c36 = 'A blank object description is defined in this object as the hook is already mentioned by the location description.';
var c37 = 'A verb definition within an object alters the default global definition for that verb when the player refers to this object.';
var c38 = 'EXAMINE and LOOK_AT are verbs defined in <b>std.i</b>.';
var c39 = 'ONLY means execute just the following object-specific code, over-riding the default definition for this verb.';
var c40 = 'Checks the state of an attribute specially defined within the definition of the cloak object.';
var c41 = 'Specifies one or more words (that a player might type) that will be treated as equivalent to a word defined elsewhere in the program.';
var c42 = 'Player-entered word which will be treated as equivalent to the following word.';
var c43 = 'A word defined in the program - could be a verb, objectname, adjective, etc.';
var c44 = 'Defines an attribute for the object and sets it to some value (used for attributes that can have many values, IS used for on/off attributes).';
var c45 = 'Displays the text defined in the specified location or object\'s DESCRIPTION clause.';
var c46 = 'A utility object - never seen by the player. Demonstrates a technique to avoid repeating blocks of code in different parts of a program by instead storing the code in an object\'s DESCRIPTION clause and simply putting the short phrase <b>DESCRIBE <i>object</i></b> elsewhere in the program. (Same idea as subroutines or functions in other languages.)';
var c47 = 'Used to refer to an attribute of an object when the attribute can have multiple values (an on/off attribute referred to by phrase <b><i>object</i> IS [NOT] <i>attribute</i></b>).';
var c48 = 'Used to refer to an attribute of an object which is either on or off (also called a boolean or true/false attribute).'
var c49 = 'Increases the player\'s score by the specified value. (The Alan program will execute this command only once even if the block of code is executed many times during the play of the game.)';
var c50 = 'Example of embedded formatting codes - <b>$p</b> means start a new paragraph by printing a blank line on screen; <b>$t</b> means tab the text by printing four blank spaces.';
var c51 = 'When not followed by a number, SCORE displays the player\'s current score on screen. (When it is followed by a number SCORE increases the player\'s score by that amount.)';
var c52 = 'Ends execution of the game.';
var c53 = 'Defines an imaginary location where all normal player verbs are disabled. The player is sent here when tries to enter the bar while carrying the black cloak.';
var c54 = 'Adds the specified amount to the value of the specified attribute.';
var c55 = 'The normal definition of the specified verbs is over-ridden by the DOES ONLY clause in these verb definitions, so only the block of code in the dark_warning DESCRIPTION clause is executed when the player tries to use these verbs.';
var c56 = 'Example showing that an object\'s description can be changed depending on the current state of object attributes.';
var c57 = 'Determines whether a specified condition is met before executing a verb DOES clause.';
var c58 = 'If a CHECK condition is not passed the text following the ELSE clause is displayed and the rest of the verb definition is not executed.';
var c59 = 'Multiple CHECKs can be strung together with AND. All the specified check conditions must be passed before the verb DOES clause will be executed.';
var c60 = 'Sets a true/false (ie on/off) attribute to "true". To make an attribute off (or false) use phrase <b>MAKE <i>object</i> NOT <i>attribute</i></b>.';
var c61 = 'Refers to the character representing the player in the game.';
var c62 = 'The player character is referred to as the <b>hero</b> in an Alan game and is automatically defined. As here, additional attributes and features can be added to the player character by explicitly defining an ACTOR hero.';
var c63 = 'Begins the definition of a character in the game. ACTOR definitions use statements very similar to the OBJECT definitions used to define inanimate things.';
var c64 = 'The START clause specifies the beginning location for the game and displays opening text such as game title, etc. Can also be used to initialise timed events (not used in this example game).';
var c65 = 'who not only programmed the game, but also very kindly produced these annotations, to Roger Firth\'s enormous delight and gratitude.';

