The tutorial system is a Nasal script that runs tutorials defined by a set of properties under /sim/tutorial. The tutorials are automatically picked up by the GUI, and can be found under the Help menu item. Tutorials are typically tied to specific aircraft and defined in a separate XML file as follows: Each tutorial is defined by a "tutorial" leaf under /tutorial, and consists of the following elements. name - The name of the tutorial, used in the GUI description - A plain-text description of the tutorial, displayed in the GUI. audio-dir - (Optional) The directory (relative to FG_ROOT) to pick up any wav files used. timeofday - (Optional) .Time of day (morning, noon, evening...). Used to set the initial tutorial state. presets - (Optional) Properties to be set under /sim/presets, followed by a presets-commit command. Used to set the initial tutorial state. e.g. airport-id, runway, heading-deg init - (Optional) Initial tutorial state properties to set. Consists of one or more set nodes (see below for details). step - A tutorial step (see below for details) endtext - Text to display at the end of the tutorial endtext-voice - .wav filename to play at the end of the tutorial endtext-tts - Text to send to text-to-speech engine at the end of tutorial The bulk of the tutorial definition consists of step definitions. These are discreet stages within the tutorial lasting at least 5 seconds. Typically the consist of an instruction from the FG instructor, some exit criteria used to check that the user has performed the step correctly and can move to the next step, and a series of error conditions to check the user isn't deviating. Each step consists of the following elements: instruction - Text to display to the user when they enter the step, and when they have still to fulfill the exit criteria instruction-tts - text to send to the text-to-speech (TTS) engine instruction-voice - .wav filename to play set - (Optional) properties to set when entering the step. May be more than one. error - Error conditions, consisting of one or more check nodes with messages (see below) exit - Exit criteria, consisting of one or more check nodes without messages. Set nodes consist of prop - The property name to set val - The value to set. For example /controls/engines/engine/throttle 0.5 Check nodes consist of a property to check, a single operator, and (for error nodes) a message to display if the check evaluates to true. prop - The property to check lt - the value to check the property is less than gt - the value to check the property is greater than eq - the value to check the property is equal to. msg - (error node only) text message to display msg-tts - (error node only, optional) message to send to TTS engine msg-voice - (error node only, optional) .wav filename to play For example: /controls/engines/engine/throttle 0.95 Apply full throttle for take-off.