Newsgroups: rec.arts.int-fiction
Path: news.duke.edu!newsgate.duke.edu!nntp-out.monmouth.com!newspeer.monmouth.com!news.maxwell.syr.edu!newsfeed.skycache.com!Cidera!vixen.cso.uiuc.edu!news.indiana.edu!hygrade.bluemarble.net!uunet!chi.uu.net!arb.uu.net!nyc.uu.net!world!buzzard
From: buzzard@world.std.com (Sean T Barrett)
Subject: Re: movement restrictions
Message-ID: <G6p6vA.3LK@world.std.com>
Date: Fri, 5 Jan 2001 16:23:34 GMT
References: <bz656.3056$AH6.540979@newsc.telia.net> <t5aep91j6f56ca@corp.supernews.co.uk> <3a557904.625344398@goliath2.usenet-access.com>
Organization: The World Public Access UNIX, Brookline, MA
Lines: 56
Xref: news.duke.edu rec.arts.int-fiction:81958

someone whose name got snipped by bad terminal emulation in win98 telnet wrote:
>Vincent Lynch wrote:
>>Of course, if you're using one of the main IF languages, a lot of this may
>>be done for you.  But certainly not all of it.
>
>Indeed, if you're using an IF language, you're likely to find that
>there's already some kind of built-in touchability check for some
>verbs.  Inform uses a global function called ObjectIsUntouchable  TADS
>seems to use a similar routine called checkReach.  It seems like

Unfortunately Inform verbs do not consistently call this function;
in particular, the "stub verbs" do not. In fact I have a modified library
which lets you use an attribute to specify scenery that is "distant"
which IS checked even by the stubbed verbs; I intend to release the
mod after I release the game involved.

>transparent container

In the same soon-to-be-released Inform game the player gets
"stuck to a desk" by something which really *is* a transparent container
(you couldn't throw a shoe at something outside it), but I was too paranoid
about all the secret voodoo things that might go wrong from actually putting
a transparent container in, and the fact that the stub verbs printed bogus
messages, so I ended up putting a "stuck to desk" object "next" to the
player, and loading it down with "react_before" for every touch-based
verb; stripping out the details:

  ! Man, the following is a hack. I hope it works.
  react_before
  [;
     Drop: "No.";

     Take, Remove, Search, Touch, Pull, Push, Blow, Rub, Probe,
     Squeeze, Open, Close, PushDir, Transfer, Turn, Climb, Swing,
     Blow, Cut, JumpOver, Dig:
        if (~~allowed(noun)) "No.";

     Insert,PutOn,ThrowAt, Lock, Unlock:
        if (~~allowed(second)) "No.";
        if (~~allowed(noun)) "No.";

     Give:
        if (~~allowed(second)) "No.";
        if (~~allowed(noun)) "No.";

     Kiss,Attack:
        if (~~allowed(noun)) "No.";

     Go,Exit,Enter:
        "No.";
   ]

Hmm, it looks like I missed "burn". Maybe one of those "blow"s
was a braino for "burn".

SeanB
