home *** CD-ROM | disk | FTP | other *** search
/ The Amiga Game Guide / AmigaGameGuide_CD.iso / Amiga / Tools / GRAC / Docs / commands.doc next >
Text File  |  1977-12-31  |  26KB  |  771 lines

  1.  
  2.                           GRAC V2.0 script commands
  3.                           -------------------------
  4.  
  5.    A GRAC script command has up to two parameters, which can be numbers,
  6. flags, or preset variables. Flags are preceded by the '#' symbol, eg. #15 to
  7. mean flag number 15. The preset variables are:
  8.  
  9.    room        - current room
  10.    item        - selected inventory item
  11.    pc          - player's character
  12.    entrance    - last entrance point
  13.    gtime       - time since the game began, in frames
  14.    rtime       - time since the current room was loaded, in frames.
  15.    current     - background/foreground/inventory item/character associated
  16.                  with the script
  17.    string      - string associated with selected object
  18.    height      - height of the selected object
  19.    
  20.    Most parameters can be set by pressing 'Help' after entering the command,
  21. so there is no need to memorise what they all mean.
  22.  
  23.    To insert a comment into a script, begin the line with a '*' character,
  24. then type in the text.
  25.  
  26.    Some old commands have additional comments for GRAC 2.0. These are marked
  27. with an asterisk (*). Some commands are no longer needed and have been
  28. removed from the list. They are described at the end of this file.
  29.  
  30.    This list contains all commands available in GRAC version 2.0. It isn't
  31. final: the easiest way to expand GRAC is to add new script commands.
  32.  
  33. Script control
  34. --------------
  35.  
  36. Execute          -              -
  37.  
  38.    Used in verb scripts to carry out the script associated with the selected
  39.    object.
  40.  
  41. Script           script         -
  42.  
  43.    Execute the script, then return to the current position.
  44.  
  45. Set mark         mark number
  46.  
  47.    Sets a mark for use with the 'goto mark' command below. There is no
  48.    limit to the number of marks, but once a mark is set it cannot be
  49.    changed within the same script.
  50.  
  51. Goto mark        mark number
  52.  
  53.    Continue execution from the stated mark. Does not return when the
  54.    script ends.
  55.  
  56.    * A computed goto is possible in GRAC 2.0, by using a flag for the mark
  57.      number. This can be very useful.
  58.      This form of goto only allows you to move within the same script. The
  59.      old (GRAC V1) form allowed jumps into different scripts. This is not
  60.      recommended, so the older form has been removed, though it will still
  61.      work if you really need it.
  62.  
  63. Timer            script         delay
  64.  
  65.    The script is executed after a delay of the stated number of frames. All
  66.    activity continues as normal.
  67.  
  68. Timer off        -              -
  69.  
  70.    Don't bother executing the script after all.
  71.  
  72. Pause            delay
  73.  
  74.    An alternative to the 'timer' command. After the specified delay the
  75.    script continues from the next line.
  76.    WARNING! Don't expect to get back to any previous script if this script
  77.    was started using a 'script' command. Also, don't place a pause in the
  78.    middle of a 'for-next' loop or 'if' block. It is really not placing a
  79.    pause in the script but stopping the script and restarting from the next
  80.    line after a delay. You can only have one paused script at a time.
  81.  
  82. Pause off
  83.  
  84.    Cancels the paused script.
  85.  
  86. No default       -              -
  87.  
  88.    As the first line of a script, this stops the verb script from being
  89.    executed. For example, if the verb script tells the character to walk up
  90.    to the object, and you don't want this to happen for a particular object,
  91.    use this command.
  92.  
  93. Compare          value          value
  94.  
  95.    Sets two numbers to be used with the 'if' instruction. Flags can
  96.    be entered using the # symbol, and preset variables can be used.
  97.  
  98. Compare item      flag           value
  99.  
  100.    The current inventory item and either the flag or the value (whichever is
  101.    positive) are set.
  102.  
  103.    * You could just use the compare instruction but then you could not press
  104.      help to choose the item.
  105.  
  106. Compare entry    flag           value
  107.  
  108.    As above, but the point that the player entered the room from is
  109.    compared. This is to have animations etc. dependent on which door the
  110.    player came through.
  111.  
  112.    * You could use the compare instruction but then you could not press help
  113.      to choose the entry point.
  114.  
  115. If               expression     not
  116.  
  117.    The expression compares the two values set with a 'compare' instruction.
  118.    As with all parameters, the expression is represented by a number.
  119.       1 is 'greater than'
  120.       2 is 'greater than or equal to'
  121.       3 is 'equal to'
  122.       4 is 'less than or equal to' 
  123.       5 is 'less than'
  124.    The commands following the 'if' will only be executed if the expression
  125.    is true. If the 'not' parameter is -1 the execution will continue only if
  126.    the expression is false.
  127.  
  128.    This is all a bit complicated so here is an example. Suppose that flag (1)
  129.    holds the value 4 and flag (2) holds 5.
  130.  
  131.    compare           #1       #2
  132.    if                3        0
  133.    bell
  134.    end if
  135.  
  136.    Will the bell ring or not? The answer is no because expression 3 is
  137.    'equal to' and flag (1) is not equal to flag (2).
  138.  
  139.    If the following were used instead the bell would ring.
  140.  
  141.    compare           #1       #2
  142.    if                5        0
  143.    bell
  144.    end if
  145.  
  146. End if           -              -
  147.  
  148.    This marks the end of an 'if block'. An 'if block' begins with the command
  149.    'if' and ends with 'end if'. If blocks within if blocks are allowed.
  150.  
  151. Else if          expression     not
  152.  
  153.    Used within an 'if block'. 'compare' commands are always executed
  154.    regardless of if's, so 'else if' can use a different test to the original
  155.    if.
  156.  
  157. Else             -              -
  158.  
  159.    Used before the end of an 'if block', if no expressions have been true in
  160.    the entire block then execution continues from here.
  161.  
  162. For              flag           start value
  163.  
  164. Next             limit          -
  165.  
  166.    The flag is set to the start value, and the commands between 'for' and
  167.    'next' are repeated, incrementing the flag by one each time, until the
  168.    limit is reached.
  169.    Note that 'flag' is just a number, without a '#'.
  170.  
  171. Wait             frames         -
  172.  
  173.    Wait for the specified number of frames. A frame lasts one tenth of a
  174.    second unless the game is slowed down by too many objects on screen.
  175.  
  176. Wait click       frames         -
  177.  
  178.    Waits for a mouse click, or the specified number of frames, whichever
  179.    comes sooner. If 'frames' is zero, GRAC will wait for a mouse click.
  180.  
  181. End
  182.  
  183.    Ends the current script.
  184.  
  185. Quit
  186.  
  187.    Quits from the game.
  188.  
  189. Screen control
  190. --------------
  191.  
  192. Hide             -              -
  193.  
  194.    Both the mouse pointer and the control panel disappear.
  195.  
  196. Show             -              -
  197.  
  198.    Brings back the control panel and mouse pointer.
  199.  
  200. Show picture     -              -
  201.  
  202.    Loads and displays a picture. This is useful for title screens.
  203.  
  204. Picture off      -              -
  205.  
  206.    Removes a picture displayed using 'Show picture'.
  207.  
  208. Load palette     picture        -
  209.  
  210.    Loads the picture purely to use the palette. It is not displayed, but
  211.    does use memory so it is best to use small screens for this purpose.
  212.  
  213. Control palette  picture        -
  214.  
  215.    As the above command, but the palette will be used for the control panel.
  216.  
  217. Fade             speed          -
  218.  
  219.    Fades into the palette loaded as described above. The fade takes speed*15
  220.    1/50ths of a second.
  221.  
  222. Fade in          -              -
  223.  
  224.    When a startup script begins, the display is not visible until either the
  225.    end of the script, or this command.
  226.  
  227. Fade picture     speed          -
  228.  
  229.    Fades a picture to black.
  230.  
  231. Fade control     speed          -
  232.  
  233.    Fades the palette of the control panel into the one loaded with 'control
  234.    palette'.
  235.  
  236. Flash            colour         string
  237.  
  238.    The string contains information used to change the colour in a rapid
  239.    sequence. Useful for animation effects. The string has the form
  240.  
  241.    (RGB,delay)(RGB,delay)....
  242.  
  243.    RGB sets the red, green and blue components of the colour, from 0 to F
  244.    (This is in hexadecimal, where the sequence of numbers is 0,1,2,3,4,5,6
  245.    7,8,9,A,B,C,D,E,F)
  246.    For example, 000 is black, F00 is bright red, 888 is grey and FFF is
  247.    white.
  248.    Delay sets the time until the colour is changed again, in 1/50ths of a
  249.    second. Therefore, multiply by five to have the delay in frames.
  250.  
  251. Cycle            first colour   last colour
  252.  
  253.    The colours between the two values are cycled, just like the colour
  254.    cycling in Dpaint.
  255.  
  256. Cycle off
  257.  
  258.    Stops colour cycling.
  259.  
  260. Scroll off
  261.  
  262.    Stops automatic scrolling of the screen.
  263.  
  264. Scroll on
  265.  
  266.    Restarts screen scrolling.
  267.  
  268. Scroll           X distance     Y distance
  269.  
  270.    Scrolls a specified distance in the X and Y directions.     
  271.  
  272. Character control
  273. -----------------
  274.  
  275. Go               character      -
  276.  
  277.    Also used by verb scripts to make the character walk to the selected
  278.    object. As with all character parameters, -1 or 'pc' means the player's
  279.    character. If the selected object is a character, the player's character
  280.    will attempt to walk to a point in front of the other character. If an
  281.    object does not have a base, it will be impossible to execute a 'go'
  282.    command.
  283.  
  284. Walk off         -              -
  285.  
  286.    Stops the player from moving.
  287.  
  288. Walk on          -              -
  289.  
  290.    Allows the player to move again following a 'walk off' command.
  291.  
  292. Wait stop        character      -
  293.  
  294.    Wait for the character to reach the point they're heading to. If zero
  295.    (0) is entered as the character number, it will be possible to interrupt
  296.    the walk with a mouse click.
  297.  
  298.    * Previously, if -1 was used to indicate the player's character, the
  299.      movement could be interrupted with a mouse click. In GRAC 2 it is
  300.      possible to have more than one player character, so I had to change
  301.      this. 
  302.  
  303. Stop             character      -
  304.  
  305.    Stops the character moving.
  306.  
  307. Place character  character      point
  308.  
  309.    Puts the character at the point.
  310.  
  311. Hide character   character      -
  312.  
  313.    The character disappears.
  314.  
  315. Walk             character      point
  316.  
  317.    The character walks to the point.
  318.  
  319. Reach            character      height
  320.  
  321.    The character reaches at the chosen height, where 1=low, 2=middle,
  322.    3=high and -1 or 'height' to use the default for the current object.
  323.  
  324. Take             character      foreground object
  325.  
  326.    The character reaches for the object, the object disappears and is added
  327.    to the characters inventory. -1 or 'object' for the object indicates the currently
  328.    selected object. For this to work the object must have a negative flag
  329.    and the 'take' option must be set to the appropriate inventory item.
  330.  
  331.  
  332. Face             character      direction
  333.  
  334.    The character faces the specified direction. 1=right, 2=left, 3=in,
  335.    4=out
  336.  
  337. Add item         item           character
  338.  
  339.    The chosen item is added to the characters inventory.
  340.  
  341. Drop item        item           character
  342.  
  343.    As above, but the item is dropped. Actually it just vanishes.
  344.  
  345. Character frame  character      image
  346.  
  347.    Change the animation frame of a character. The image as grabbed in the
  348.    character editor.
  349.  
  350. Body frame       character      image
  351.  
  352.    As above, but the image should have no head, which will be added
  353.    separately. This is to allow characters to speak when not in a standing
  354.    position.
  355.  
  356. Character change character (a)  character (b)
  357.  
  358.    Character (a) takes on the appearance of character (b). The effect is 
  359.    preserved until the characters are reloaded with a new object bank. This
  360.    command is ideal for changes of clothing etc.
  361.  
  362. Switch           character      -
  363.  
  364.    Puts the player in control of a different character.
  365.   
  366. Say              character      string
  367.  
  368.    The character says the string, which appears above the characters head
  369.    while the characters head is animated. As with print, @ starts a new
  370.    line. The text is also split at full stops, question marks and exclamation
  371.    marks. This is because text looks very odd if it is not split at natural 
  372.    points in the string.
  373.  
  374.    * In GRAC 2 you can animate the character from within the string. Begin
  375.      the string with a '¶' symbol (alt-p), then include the animation
  376.      in the form (frame,delay)(frame,delay)........ where 'frame' is the 
  377.      image number as in the character editor and 'delay' is the number of
  378.      screen updates until the next image. Finish with another '¶' then type
  379.      what the character actually says. You can include animation at the start
  380.      of a new line as well, after the '@'.
  381.  
  382.      eg.  ¶(56,1)(57,1)(58,1)(56,1)(57,1)(58,1)¶I'm waving my arms about.
  383.  
  384. Voice            string         point
  385.  
  386.    The string appears above the point, but it is not necessary to have a
  387.    character there to say it. If 'point' is zero, the coordinates set
  388.    using the 'position voice' command will be used instead. This is to
  389.    allow voices to be used on screens which have no points, such as
  390.    close-ups or picture screens.
  391.  
  392. Set voice        colour         height
  393.  
  394.    This sets the colour of the voice text, and the height above the point,
  395.    in pixels.
  396.  
  397. Position voice   X position     Y position
  398.  
  399.    Sets the position used for voice text.
  400.  
  401. Animation
  402. ---------
  403.  
  404. Object frame     f. object      image
  405.  
  406.    The object's image is changed. Warning: this is not permanent. If the
  407.    player leaves the room and returns, the object will change back to its
  408.    original image. If you don't want this to happen, change the object in
  409.    the room's startup script.
  410.  
  411. Anim             f. object      string
  412.  
  413.    Animates the object according to the contents of the string, which must
  414.    have the following form:
  415.  
  416.    (X position,Y position,image)(X position,Y position,image)....
  417.  
  418.    Amal (see below) can also be used to animate objects. However, I
  419.    reccommend that you use Anim instead. The main advantage over amal is
  420.    that you can create the string using a point-and-click method by pressing
  421.    help. It is also fully compatible with the save/load feature, even if the
  422.    animation doesn't loop. The maximum number of frames is 100. Like
  423.    'object frame', anims have no permanent effect.
  424.  
  425. Amal             f. object      string
  426.  
  427.    The most versatile way to animate an object. If you use AMOS then you
  428.    will probably be familiar with Amal. If not, this is how to use it. I
  429.    can't cover everything; the AMOS manual has an entire chapter on Amal,
  430.    but the basics are as follows:
  431.  
  432.    The object will be animated according to a set of instructions held in
  433.    the string, separated with semi-colons ( ; ). Each instruction is a
  434.    single upper-case letter, followed by some parameters. Any lower case
  435.    letter are optional.
  436.  
  437.    Move across,down,steps
  438.  
  439.       Moves the object across and down the number of pixels specified in the
  440.       number of steps selected. Each step takes one frame to perform.
  441.  
  442.    Anim number,(image+RZ,delay)(image+RZ,delay)....
  443.  
  444.       Animates the object by cycling through the images the set number of
  445.       times. A value of zero for the number means to repeat continuously.
  446.       Delay can be any number greater than zero and is the number of frames
  447.       to wait before moving on to the next image. This command is ideal for
  448.       adding background animations such as dripping taps and flashing lights.
  449.       RZ is a register. Read the note below.
  450.  
  451.    Let register=expression
  452.  
  453.       The register is set according to the expression. The registers are:
  454.       R0 to R9, internal registers which are different for every object,
  455.       RA to RZ, global registers for passing information between objects,
  456.       X, the objects X-position
  457.       Y, the objects Y-position
  458.       A, the objects image. This may be different to the image number used
  459.          by GRAC. To get the actual image, add RZ to GRAC's image number.
  460.  
  461.       Example: L R0=3; sets internal register 0 to a value of 3.
  462.  
  463.    For register=start To end ;.....;Next register
  464.  
  465.       This is a For...Next loop similar to those used in scripts. The
  466.       register begins at <start> and is increased by 1 each loop until it
  467.       reaches <end>.
  468.  
  469.    Jump label
  470.  
  471.       Amal jumps to the specified label. A label is a single capital letter
  472.       followed by a colon ( : ), which can be anywhere in the string.
  473.  
  474.    Pause
  475.  
  476.       Waits for one update.
  477.  
  478.    End
  479.  
  480.       Ends the Amal program.
  481.  
  482.    There are many more Amal commands. Refer to the AMOS manual for details.
  483.    You should really only use repeating strings (with a Jump at the end) or
  484.    continuous Anims to be compatible with the save/load feature. This is 
  485.    because when a game is loaded the Amal string is always started from the
  486.    beginning.
  487.  
  488.    * The Anim command is usually better than Amal. Use it instead if
  489.      possible.
  490.  
  491. Paste            b. object      image
  492.  
  493.    Paste the image over the background object. This method of animation is
  494.    quicker and uses less memory than with foreground objects. However, once
  495.    pasted, the image cannot be deleted except by pasting another image over
  496.    the top. Only one image may be pasted per frame, except in a startup-
  497.    script when the display has not been faded in.
  498.    This is not a permanent effect (see object frame).
  499.  
  500. Freeze           -              -
  501.  
  502.    Stops all animation until an 'unfreeze' command is encountered. Note that
  503.    'wait' allows animation to continue, stopping only the script. This
  504.    command freezes the display and lets the script continue. However, the 
  505.    'paste' command cannot be frozen, only objects and characters.
  506.  
  507. Unfreeze         -              -
  508.  
  509.    See above.
  510.  
  511. Play anim        animation      delay
  512.  
  513.    Plays iff animation, with the delay between frames in 1/50ths of a
  514.    second.
  515.  
  516. Limbo            -              -
  517.  
  518.    Useful when playing large animations, this command clears all non-
  519.    essential data from memory. A 'load room' command is required to
  520.    continue with the game.
  521.  
  522. Sound
  523. -----
  524.  
  525. Bell             -              -
  526.  
  527.    This command makes a bell sound. It is useful mainly when debugging, to
  528.    make sure that part of a script is actually executing.
  529.  
  530. Sound left       sample         frequency
  531.  
  532.    The sample is played through the left speaker (channel 0)
  533.  
  534. Sound right      sample         frequency
  535.  
  536.    As above but uses channel 1
  537.  
  538. Sound centre     sample         frequency
  539.  
  540.    Sound through channels 0 and 1 simultaneously.
  541.  
  542. Sound back       sample         frequency
  543.  
  544.    Sound through  channels 2 and 3, looped. This is intended for background
  545.    noise.
  546.  
  547. Load sample      sample         -
  548.  
  549.    Usually, samples are loaded when they are played. Use this command to
  550.    load a sample in advance. Don't load too many samples as this uses
  551.    memory.
  552.  
  553. Erase sample     sample         -
  554.  
  555.    The sample is erased, saving memory.
  556.  
  557. ST play          pattern        loop
  558.  
  559.    Starts soundtracker music playing from the specified pattern. The music
  560.    will loop indefinitely (unless stated otherwise in the song itself) and
  561.    is fully compatible with samples. Music is suspended on the necessary
  562.    channels until the sample ends. If 'loop' is zero, the music is assumed to 
  563.    be looping continuously and will be restarted if a saved game is loaded.
  564.    Otherwise, the music will not be restarted if a game is loaded.
  565.  
  566. Music stop
  567.  
  568.    Stops the music.
  569.  
  570. Miscellaneous
  571. -------------
  572.  
  573. Load room        room           point
  574.  
  575.    Loads a room and positions the player's character at the specified point.
  576.  
  577. Scale         percentage
  578.  
  579.    Sets the overall scaling factor for all characters in the room, as a 
  580.    percentage of full size. Characters can only be reduced in size, so the 
  581.    percentage must less than 100. There is a minimum scaling factor of 25%,
  582.    because characters drawn smaller than this are just not recognisable.
  583.    Using this command you could have a large scene with tiny characters
  584.    in it (Future Wars style), or even write a computer version of 'The
  585.    Incredible Shrinking Man'. When combined with the 'perspective' command,
  586.    virtually any type of scene could be created.
  587.    One problem I have found is that when animating scaled characters, they
  588.    tend to wobble around a bit unless the animation frames are precisely
  589.    the same size. This applies especially to talking frames. This is not a
  590.    bug but a side effect of the scaling process. The solution is to grab
  591.    the animation frames from within a box the same size for each frame, and
  592.    with the hot spot in the same relative position.
  593.  
  594. Perspective      floor          horizon
  595.  
  596.    Turns on character scaling for the room, dependent on Y position. 'floor'
  597.    and 'horizon' are Y positions on the screen. Below 'floor', characters
  598.    are drawn full size. Above 'horizon' they are drawn at minimum size (1/4
  599.    full size). In between these positions they are scaled proportionally.
  600.    Note that neither 'floor' nor 'horizon' need actually be placed in the
  601.    visible area of the screen, and negative values are allowed.
  602.    The HEIGHT of a zone affects the scaling. Thus you can have a character
  603.    climb up to a higher level without being reduced in size, or put the
  604.    perspective in reverse for weird camera angles.
  605.  
  606. Static         f.object
  607.  
  608.    This command can be used to speed up the screen update in rooms with
  609.    a lot of objects. If an object is never going to move, it can be drawn
  610.    quicker by not replacing the background underneath it. Simply use
  611.    this command in the startup script, before the screen is faded in.
  612.    By making objects static, you can have more of them on screen without
  613.    causing the game to run at a snail's pace.
  614.  
  615. Close up         close up       -
  616.  
  617.    Begins a close up.
  618.  
  619. Exit close up    -              -
  620.  
  621.    Leaves the close up.
  622.  
  623. Choice           string         flag
  624.  
  625.    Adds a choice to the current selection if the flag is true (flag zero is
  626.    always true, remember). The obvious use for this feature is to create
  627.    multiple choice conversations. The maximum number of choices is 10.
  628.    Note that 'flag' is just a number, without a '#'.
  629.  
  630. Choose           flag           character
  631.  
  632.    The player must choose between all available choices by clicking on the
  633.    string which is printed in the text window. The flag is then set to
  634.    whatever choice was made (ie. 1 for the first choice, 2 for the second
  635.    etc.) All choices are then cleared. If the character parameter is not 
  636.    zero, that character will now say the selected string.
  637.    Note that 'flag' is just a number, without a '#'.
  638.  
  639. Set flag         flag           value
  640.  
  641.    Sets the flag to the value. This may cause objects or walk zones to
  642.    disappear if they are dependent on the flag. Any such change is
  643.    permanent (until the flag is changed again).
  644.    Note that 'flag' is just a number, without a '#'.
  645.  
  646. Clear flags      first          last
  647.  
  648.    Sets all flags between the 'first' and 'last' to zero.
  649.  
  650. Toggle flag      flag           -
  651.  
  652.    If the flag is zero, it is set to one. Otherwise it is set to zero.
  653.    Note that 'flag' is just a number, without a '#'.
  654.  
  655. Random           flag           limit
  656.  
  657.    The flag is set to a random number, up to the allowed limit. If the limit
  658.    is negative, the random number may be positive or negative. Otherwise it
  659.    will always be positive.
  660.    Note that 'flag' is just a number, without a '#'.
  661.  
  662. Add              flag           value
  663.  
  664.    Adds the value to the flag.
  665.    Note that 'flag' is just a number, without a '#'.
  666.  
  667. Subtract         flag           value
  668.  
  669.    Subtracts the value from the flag.
  670.    Note that 'flag' is just a number, without a '#'.
  671.  
  672. Flag to string   string         flag
  673.  
  674.    The string is changed to the digits of the flag. See the note for 'Set 
  675.    string' below.
  676.    Note that 'flag' is just a number, without a '#'.
  677.  
  678. Set string       string (a)     string (b)
  679.  
  680.    String (a) is set to string (b). Remember that the string will not
  681.    actually be changed until the game runs and the script is executed.
  682.    With the text editor you set the initial strings. Also, no text strings 
  683.    are saved with saved games, so don't use this command to change strings 
  684.    that you intend to use later, only in the same script.
  685.  
  686. Clear string     string         -
  687.  
  688.    The string is cleared. See the note for 'Set string'.
  689.  
  690. Add string       string (a)     string (b)
  691.  
  692.    String (b) is appended to string (a). See the note for 'Set string'.
  693.  
  694. Print            string         -
  695.  
  696.    The specified string is printed in the text window. Remember that the
  697.    parameter is actually a number, which refers to a text string. -1 or 
  698.    'string' for the string indicates the description of the selected object.
  699.    An '@' character indicates the start of a new line.
  700.  
  701. Save off         -              -
  702.  
  703.    Disables the save game feature.
  704.  
  705. Save on          -              -
  706.  
  707.    Allows games to be saved.
  708.  
  709. Verb off         verb           -
  710.  
  711.    Stops the  verb from being used
  712.  
  713. Verb on          verb           -
  714.  
  715.    Allows the verb to be used.   
  716.  
  717. Restart
  718.  
  719.    Starts the game again from the beginning.
  720.  
  721. Quit
  722.  
  723.    Quits from the game.
  724.  
  725. *****************************************************************************
  726.  
  727. For various reasons, the following commands are now obsolete. They still
  728. work, but only for compatibility with earlier versions of GRAC. You should
  729. never use them.
  730.  
  731. Goto             script         line
  732.  
  733.    Continue execution from any line in any script. Does not return when the
  734.    script ends.
  735.  
  736. Link             script         line
  737.  
  738.    This is not quite the same as goto. The program continues from the stated
  739.    script and line but will do so even if the link is in the middle of an if
  740.    block which is not being executed. This command is used to effectively
  741.    join scripts together to make a longer one.
  742.  
  743. Compare flag     flag (a)       flag (b)
  744.  
  745.    This sets flags (a) and (b) for use with the 'if' instruction.
  746.    WARNING: do not confuse this with 'compare value'.
  747.  
  748. Compare value    flag           value
  749.  
  750.    Similar to the above instruction but sets a flag and a number.
  751.  
  752. Add flag         flag (a)       flag (b)
  753.  
  754.    Flag (b) is added to flag (a).
  755.  
  756. Subtract flag    flag (a)       flag (b)
  757.  
  758.    Subtracts flag (b) from flag (a).
  759.  
  760. Copy flag        flag (a)       flag (b)
  761.  
  762.    Flag (a) is set to the value of flag (b).
  763.  
  764. Med play has been removed, because: 1) it didn't work very well, 2) it was
  765. taking up unnecessary memory when not being used, and 3) as copyrighted
  766. software, it is of dubious legality to distribute the med library.
  767.  
  768. 'Select' and 'End select' never worked in the first place. They were included
  769. in the original documentation by mistake!
  770.  
  771.