[1336] in Coldmud discussion meeting

root meeting help first first in chain previous in chain previous next next in chain last in chain last

Re: [COLD] Exit announcements (anomaly?)

daemon@ATHENA.MIT.EDU (Thu Aug 21 22:33:58 1997 )

Date: Thu, 21 Aug 1997 20:24:22 -0600 (MDT)
From: Brandon Gillespie <brandon@roguetrader.com>
To: Chris Williams <psion@geekspace.com>
cc: "Luther, Clay" <clay@selsius.com>,
        "'coldstuff@cold.org'" <coldstuff@cold.org>
In-Reply-To: <33FCD494.81F95966@geekspace.com>

On Thu, 21 Aug 1997, Chris Williams wrote:

> Maybe this should be handled by whatever's handling the CML? Like, as
> part of the CML-frob, you give it meta-information about which messages
> should be dispatched in what sequence, 

It already is a CML frob :)

And different messages are used depending upon the object receiving the 
messages--this is the whole underlying design to messages (via @msg).

Michael Loftis <mjl@tcbbs.net>

> Sounds like we need one more function, one to test if you can move... 
> Itd do like:: 
> 
> test_move_to()
> move_to()
> announce_move_to()
> get_prose() (Or whatever it is that gets the room name/descript --  I'm
> a little fuzzy right now)(

It already does--but inside .move_to()--read the code :)

However, I forgot to mention in my initial reply--I fixed the bug at that
time.  To explain.  When a user object is moved, it will automatically
'look' at the new location (see $user.did_move()).  This is not a problem,
this is an intentional feature coded into the core of the move_to system. 
You can disable it if you personally dislike it--for yourself--by changing
the 'auto-look' setting. 

The problem with the movement messages is that when I switched to the new
messaging system I simply decided to let the location where the moved
person is at forward the message to them (trying to save a method
call--talk about over-optimizing :)   I forgot to consider that the
message would be out of order.  To explain better, the sequence of calls
(listed in $exit.invoke) was:

     user.move_to(dest);
     dest.announce(message);
     source.announce(message);

Since it is a Ctext message, the same message will print the right
information for everybody in either location, depending upon their role in
the message (i.e. everybody on the source see's the user leave, everybody
in the dest see's them arrive, and the user is notified that they took the
exit).

And like I said, I just forgot to consider it would be out of order.  This
is fixed by simply excluding the user from the dest announce and
explicitly sending them the message first, ala:

    user.tell(message);
    user.move_to(dest);
    dest.announce(message, user);
    source.announce(message);

And everything works as one would expect it :)

-Brandon Gillespie