
catch_tell()
************


SYNOPSIS
========

   void catch_tell(string)


DESCRIPTION
===========

   When a message is sent to a noninteractive player, via say(),
   tell_object, tell_room(), printf() or write(), it will get to the
   function catch_tell(string). This will enable communications between
   NPCs and from a player to an NPC.

   Also, if an interactive object is being shadowed and the
   shadow has catch_tell() defined, it will receive all output
   that would otherwise be written to the user.

   If a message is sent by an interactive object, catch_tell() is
   not called in that object, to prevent recursive calls. Thus
   catch_tell() in interactive objects can be used to filter the
   output that goes to the users.

   The efun shout() sends to interactive objects only.


SEE ALSO
========

   enable_commands(E), say(E), tell_object(E), tell_room(E),
   write(E), catch_msg(L)
