William Tell: the end is nigh
===============================
-.. highlight:: inform6
+.. highlight:: inform
.. epigraph::
- | *Q was a queen, who wore a silk slip;*
- | *R was a robber, and wanted a whip.*
+ | |CENTER| *Q was a queen, who wore a silk slip;*
+ | |CENTER| *R was a robber, and wanted a whip.*
.. only:: html
.. image:: /images/picQ.png
:align: left
-.. raw:: latex
-
- \dropcap{q}
-
-uite a few objects still remain undefined, so we'll talk about them first.
-Then, we'll explain how to make additions to Inform's standard repertoire
-of verbs, and how to define the actions which those verbs trigger.
+|Q|\uite a few objects still remain undefined, so we'll talk about them
+first. Then, we'll explain how to make additions to Inform's standard
+repertoire of verbs, and how to define the actions which those verbs
+trigger.
The marketplace
===============
sensible to write a routine to do the job. Which we'll do shortly -- but
first, a general introduction to working with routines.
+.. _working-with-routines:
+
A diversion: working with routines
==================================
better approach might be to rework our ``BeenHereBefore`` routine so that
it does both jobs, but we somehow need to tell it which variable's value is
to be checked. That's easy: we design the routine so that it expects an
-**argument**::
+:term:`argument`::
[ BeenToBefore this_room;
if (this_room has visited) return true;
which it knows as ``this_room``, and which it then uses to test for the
``visited`` attribute. On the second line we supply ``location`` as the
argument, but the routine just sees another value in its ``this_room``
-variable. ``this_room`` is called a **local variable** of the
+variable. ``this_room`` is called a :term:`local variable` of the
``BeenToBefore`` routine, one that must be set to a suitable value each
time that the routine is called. In this example routine, the value needs
to be a room object; we could also check an explicit named room::
``rfalse`` statement, or by the the ``]`` marking the routine's end (in
which case the default STEF rule applies: Standalone routines return
True, Embedded routines return False). We gave this example of an
- embedded routine in "Adding some props" on page 81. The ``return
- false`` statement is redundant: we could remove it without affecting the
- routine's behaviour, because the ``]`` acts like a ``return false``::
+ embedded routine in :ref:`adding-props`. The ``return false`` statement
+ is redundant: we could remove it without affecting the routine's
+ behaviour, because the ``]`` acts like a ``return false``::
found_in [;
if (location == street or below_square or south_square or
========================= ===========================
For full details on which library property values can be embedded routines,
-and which return values are significant, see "Object properties" on page
-266 and Appendix §A2 of the *Inform Designer's Manual*.
+and which return values are significant, see :ref:`object-props` and
+:dm4:`Appendix §A2 <sa2.html>` of the |DM4|.
Return to the marketplace
=========================
a whole load of new nouns and adjectives to the game's dictionary, but no
verbs. That's the final task.
+.. _verbs:
+
Verbs, verbs, verbs
===================
already catered for, either by the interpreter doing something useful, or
by explaining why it's unable to. Nevertheless, most games find the need
to define additional actions, and "William Tell" is no exception. We'll be
-adding four actions of our own: ``Untie``, ``Salute`` (see page 113),
-``FireAt`` (see page 115) and ``Talk`` (see page 116).
+adding four actions of our own: ``Untie``, ``Salute``, ``FireAt`` and
+``Talk``.
.. rubric:: Untie
anything to say".
That's the end of our little fable; you'll find a transcript and the full
-source in "William Tell" story on page 219. And now, it's time to meet --
-Captain Fate!
+source in :doc:`/appendices/c`. And now, it's time to meet -- Captain
+Fate!