SYNOPSIS
        void tell_room(string|object ob, string str)
        void tell_room(string|object ob, string str, object *exclude)

        void tell_room(string|object ob, mixed *|mapping|struct|object msg)
        void tell_room(string|object ob, mixed *|mapping|struct|object msg
                                       , object *exclude)

DESCRIPTION
        Send a message <str> to all living objects in the room ob. ob
        can also be the name of the room given as a string. If a
        receiving object is not a interactive user the lfun
        catch_tell() of the object will be invoked with the message as
        argument. If living objects define catch_tell(), the string
        will also be sent to that instead of being written to the
        user. If the object is given as its filename, the driver
        looks up the object under that name, loading it if necessary.
        If array *exclude is given, all objects contained in
        *exclude are excluded from the message str.

        If the second arg is an array/mapping/struct/object, catch_msg() will
        be called in all listening livings.

EXAMPLES
        tell_object(environment(this_player()), "Hi!\n");

        Just send a simple "Hi!" to all livings in the current.

        Object 1 (living):
           void catch_tell(string str) {
              write("Received: "+str+"\n");
           }
        Object 2:
           void func() {
              ...
              tell_room(environment(this_player()), "HiHo!\n");
              ...
           }

        This examples shows how tell_room() together with catch_tell() works.

HISTORY
        LDMud 3.3.686 added the use of a mapping/struct/object as second
        argument.

SEE ALSO
        write(E), say(E), tell_object(E), catch_tell(A), catch_msg(A)
