Add Other useful directives
[inform-resources.git] / informqr / informqr.md
index 40a9fadb490523c262f647afef6d9aaa6b836287..fa5f2f26cd5e9f43cd6533d54a6e56a35f79a26d 100644 (file)
@@ -520,4 +520,113 @@ To assign to one of 32 'low string' variables:
 
     string N "string";
     Lowstring string_var "string";
-    string N string_var;
\ No newline at end of file
+    string N string_var;
+
+Verbs and Actions
+-----------------
+
+To specify a new verb:
+
+    Verb 'verb ' 'verb ' ... 'verb '
+         * token token ... token -> action
+         * token token ... token -> action
+         ...
+         * token token ... token -> action;
+
+where instead "`Verb`" can be "`Verb meta`", "*action*" can be
+"`action reverse`"; *tokens* are optional and each is one of:
+
+  ----------------- ----------------------------------------------
+  'word'            that literal word
+  'w1'/'w2'/...     any one of those literal words
+  attribute         an object with that attribute
+  creature          an object with `animate` attribute
+  held              an object held by the player
+  noun              an object in scope
+  noun=`routine`    an object for which *routine* returns `true`
+  scope=`routine`   an object in this re-definition of scope
+  multiheld         one or more objects held by the player
+  multi             one or more objects in scope
+  multiexcept       as multi, omitting the specified object
+  multiinside       as multi, omitting those in specified object
+  topic             any text
+  number            any number
+  routine           a general parsing routine
+  ----------------- ----------------------------------------------
+
+To add synonyms to an existing verb:
+
+    Verb 'verb ' 'verb ' ... = 'existing_verb';
+
+To modify an existing verb:
+
+    Extend 'existing_verb ' last
+         * token token ... token –> action
+         * token token ... token –> action
+         ...
+         * token token ... token –> action ;
+
+where instead "`Extend`" can be "`Extend only`" and "`last`" can be
+omitted, or changed to "`first`" or "`replace`"
+
+To explicitly trigger a defined action (both *noun* and *second* are
+optional, depending on the action):
+
+    <action noun second>;
+
+To explicitly trigger a defined action, then return `true` from the
+current routine:
+
+    <<action noun second >>;
+
+Other useful directives
+-----------------------
+
+To include a directive within a routine definition \[...\], insert a
+hash "\#" as its first character.
+
+To conditionally compile:
+
+    Ifdef name;   ! use any one of these
+    Ifndef name;  !
+    Iftrue expr;  !
+    Iffalse expr; !
+    ...
+    Ifnot;
+    ...
+    Endif;
+
+To display a compile-time message:
+
+    Message "string";
+
+To include the contents of a file, searching the Library path:
+
+    Include "source_file";
+
+To include the contents of a file in the same location as the current
+file:
+
+    Include ">source_file";
+
+To specify that a library routine is to be replaced:
+
+    Replace routine;
+
+To set the game's release number (default is 1), serial number
+(default is today's *yymmdd*) and status line format (default is
+`score`):
+
+    Release expr;
+    Serial "yymmdd";
+    Statusline score;
+    Statusline time;
+
+To declare a new attribute common to all objects:
+
+    Attribute attribute ;
+
+To declare a new property common to all objects:
+
+    Property property;
+    Property property expr;
\ No newline at end of file