Subject: Verbs on Exits?

From: [email-masked] (Jack Eifrig)
Date: Wed, 1 Sep 1993 15:06:35 -0700

An interesting problem came up the other day, in the context of making "door"
type exits:  these should be able to be "open"-ed and "close"-d by a
player.  We'd like to be able to make a generic "door" exit, and use it
wherever.

The most straightforward approach would be to take the $exit and add
"open" and "close" verbs to it (with argument specifiers "this none none").
Unfortunately, this won't work (under the LambdaCore exit scheme), since
the "exit" objects of a room aren't really in the room (but in $nothing
instead).  Thus, the server never gets a chance to match against the exit,
and the "close" verb doesn't run.

One could put the verb on the room, of course, but this isn't very convenient,
since this verb would then have to find the exit to close, and check that it
really *is* a door that can be closed, blah, blah, blah.

Thinking about this problem for a while, it seems that the right thing to
do is to re-implement the "here_huh" verb on $room to try to find a matching
verb on one of the room's exits.  The $match_utils:match_verb() verb is
almost what we want, but that requires that the dobj and iobj's have already
been matched correctly by the server, which obviously hasn't happened.

Has anyone already done the necessary patching, before I start hacking this
up myself?  It sounds really annoying to get exactly right...

	- Jack Eifrig ([email-masked])

---

From: Kent M Pitman <[email-masked]>
Date: Wed, 1 Sep 1993 15:23:00 -0700

Just because it happens to put exits in #-1 doesn't mean you can't move them.
You can @move the exit into the room and call it a door, a window, or whatever.
I do this all the time on LambdaMOO and elsewhere.

You can also separate out the code from $exit so that non-exits can have
exit-like functionality.  I've done this for a private moo of mine and it works
quite well.  I have buildings, lakes, etc. that are all exits.  (This is only
necessary if you need to have the objects inherit from something other than
exit.  As long as your exit isn't very elaborate in scope, you can just have it
inherit from $exit.  But when it needs to exist elsewhere in the inheritance
tree and also be an exit, since there is no multiple inheritance, it helps to
separate the core functionality from the exit.)  If you decide to go this
route, ask me privately and I'll give you some additional tips on how to do it.

I personally don't think that patching any of the huh stuff is the way to go on
this.
 -kmp

---

From: [email-masked]
Date: Wed, 1 Sep 1993 15:44:26 -0700

$room:here_huh calls $match_utils:match_verb.

$match_utils:match_verb won't call a verb unless it is +x.

Cassnak