X-Git-Url: https://jxself.org/git/?a=blobdiff_plain;f=chapters%2F05.rst;h=f1342a93da49ccf5d25a9e1639482f13a5552793;hb=a94081289bc21041a8daac44d8c8b6714a831281;hp=87b89887f52b37394bf204c21bfe7f89c197005e;hpb=56fc4ded640e53427a37c9d4fb783bd95ba310c3;p=ibg.git diff --git a/chapters/05.rst b/chapters/05.rst index 87b8988..f1342a9 100644 --- a/chapters/05.rst +++ b/chapters/05.rst @@ -7,7 +7,16 @@ | *I was an innkeeper, who loved to carouse;* | *J was a joiner, and built up a house.* -In even the simplest story, there's bound to be scope for the player to +.. only:: html + + .. image:: /images/picI.png + :align: left + +.. raw:: latex + + \dropcap{i} + +n even the simplest story, there's bound to be scope for the player to attempt activities that you hadn't anticipated. Sometimes there may be alternative ways of approaching a problem: if you can't be sure which approach the player will take, you really ought to allow for all @@ -55,7 +64,7 @@ LISTEN TO NEST or LISTEN TO TREE, but fairly inappropriate here; we really need to substitute a more relevant response after LISTEN TO BIRD. Here's how we do it: -.. code-block:: inform6 +.. code-block:: inform Object bird "baby bird" forest with description "Too young to fly, the nestling tweets helplessly.", @@ -124,7 +133,7 @@ false`` then the interpreter carries on to perform the default action as though it hadn't been intercepted. Sometimes that's what you want it to do, but not here: if instead we'd written this: -.. code-block:: inform6 +.. code-block:: inform Object bird "baby bird" forest with description "Too young to fly, the nestling tweets helplessly.", @@ -171,7 +180,7 @@ might lead her to believe that she can go inside: Again, that isn't perhaps the most appropriate response, but it's easy to change: -.. code-block:: inform6 +.. code-block:: inform Object before_cottage "In front of a cottage" with description @@ -212,7 +221,7 @@ receives the obviously nonsensical reply "You can't see any such thing". That's easy to fix; we can add a new ``cottage`` object, making it a piece of ``scenery`` just like the ``tree``: -.. code-block:: inform6 +.. code-block:: inform Object cottage "tiny cottage" before_cottage with description "It's small and simple, but you're very happy here.", @@ -235,7 +244,7 @@ response: The situation here is similar to our LISTEN TO BIRD problem, and the solution we adopt is similar as well: -.. code-block:: inform6 +.. code-block:: inform Object cottage "tiny cottage" before_cottage with description "It's small and simple, but you're very happy here.", @@ -252,7 +261,7 @@ This time, however, we've done it using one statement rather than two. It turns out that the sequence "``print`` a string which ends with a newline character, and then ``return true``" is so frequently needed that there's a special statement which does it all. That is, this single statement (where -you'll note that the string doesn't need to end in ``^``):: +you'll note that the string *doesn't* need to end in ``^``):: print_ret "It's such a lovely day -- much too nice to go inside."; @@ -273,7 +282,7 @@ currently gives the completely misleading response "I don't think much is to be achieved by that"). Yet another opportunity to use a ``before`` property, but now with a difference. -.. code-block:: inform6 +.. code-block:: inform Object tree "tall sycamore tree" clearing with description @@ -337,7 +346,7 @@ interception not on an object-by-object basis, as we have been doing so far, but instead for every ``Drop`` which takes place in our troublesome ``top_of_tree`` room. This is what we have to write: -.. code-block:: inform6 +.. code-block:: inform Object top_of_tree "At the top of the tree" with description "You cling precariously to the trunk.", @@ -418,7 +427,7 @@ Of course, you might think that the standard message "Dropped" is slightly unhelpful in these non-standard circumstances. If you prefer to hint at what's just happened, you could use this alternative solution: -.. code-block:: inform6 +.. code-block:: inform Object top_of_tree "At the top of the tree" with description "You cling precariously to the trunk.", @@ -445,7 +454,7 @@ nest, or vice versa. It would be better not to end the game until we'd checked for the bird actually being in the nest; fortunately, that's easy to do: -.. code-block:: inform6 +.. code-block:: inform Object branch "wide firm bough" top_of_tree with description "It's flat enough to support a small object.", @@ -458,7 +467,7 @@ The extended ``if`` statement:: if (bird in nest && nest in branch) deadflag = 2; should now be read as: "Test whether the ``bird`` is currently in (or on) -the ``nest``, and whether the ``nest`` is currently on (or in) the +the ``nest``, *and* whether the ``nest`` is currently on (or in) the ``branch``; if both parts are ``true``, set the value of ``deadflag`` to 2; otherwise, do nothing".