CONCEPT
        intermud

DESCRIPTION
        There are several intermud protocols which define how (players on)
        different muds can communicate with each other. The protocols are
        in general not muddriver or mudlib dependant, though the number of
        implementations is limited.

        This text is about the rather old widely spread 'Zebedee Intermud',
        which is also called 'Intermud 2' altough it differs quite a lot
        from the real Intermud 2 protocol.

        Full information on the newer Intermud 3 could be found on the
        web at http://www.imaginary.com/protocols/intermud3.html so there
        is no discussion here - the following is just about Zebedee Intermud
        (aka Intermud 2).

        Zebedee Intermud communication is handled by the /secure/inetd
        object, originally written by Nostradamus for Zebedee with some
        extensions that are discussed in inetd(C). How the data is
        actually sent across the network is described in intermud.basic(C).

SERVICES
        Note that the fields "NAME" and "UDP_PORT" should be present in
        every message. Very common are the fields "ID" (used whenever an
        reply is expected) and "SND" (the sender: he should receive the
        reply). These fields will not be mentioned in the list below.

        Request types are listed on the leftmost row (e.g. "REQ=channel"),
        associated header are listed indented.

        "channel"
            The channel-request is used for sending a message on any
            channel. The "CMD" field is optional and may be omitted for
            normal messages. Note that you should not send an history or
            list request to _all_ known muds!

            "CHANNEL"
                The channel on which a message is send (the standard
                channels are "intermud", "intercode", "interadm", "d-chat",
                "d-code" and "d-adm"; on the d-channels German is spoken)

            "DATA"
                The message to be send (not used with history/list request)

            "CMD"
                The body of this header may be:
                ""        for normal intermud messages,
                "emote"   if the message is an emote/gemote,
                "history" for an history request: the last 20 lines of
                          this channel will be shown.
                "list"    to list all remote users listening to this channel

            "EMOTE"     (optional)
                The body is 1 if the message is an emote.
                The body is 2 if the message is a gemote.

        "finger"
            Retreive information about a player or creator on a remote mud.

            "DATA"
                The player of whom information is requested

        "locate"
            Check whether a certain player is logged on at a remote mud.
            This request is usually send to all known muds at the same time.

            "user"
                Name of the person who requests the information.
                This is used by the sending mud only and has to be included
                in the reply.

            "vbs"
                The verbose option has only two pre-defined values:
                1 Even report when the result was negative
                2 Don't do timeouts, but keep waiting
                This is used by the sending mud only and has to be included
                in the reply.

            "fnd"
                The found option is only used in the reply and it's value
                is either 1 (success) or 0 (failure). The absence of a
                found parameter indicates failure as well.

            "DATA"
                The player to find.

        "man"
            Retreive a manual page from a remote mud. Many muds don't
            support this feature...

            "DATA"
                The name of the requested manual page

        "mail"
            An extension to the standard protocol, by Alvin@Sushi. This is
            used to send mails from one mud to another.

            "udpm_status"
                This field should only be used in the reply and indicates
                how mail is handled. Currently there are four pre-defined
                values for the status field:
                0 time out
                1 delivered ok
                2 unknown player
                3 in spool (will be delivered later)

            "udpm_writer"
                Name of the person who wrote this mail

            "udpm_spool_name"
                Should be returned as sent, this value is used to remove
                the mail from the spool directory after it has been
                delivered (or refused)

            "udpm_subject"
                Subject of the mail message

            "DATA"
                The body of the mail (the actual message)

        "ping"
            A ping request has only the standard fields, the reply is
            usually a short string like " is alive."

        "query"
            Get standard information about another mud. This is the only
            command of which the reply may not include a load of rubbish,
            but should only hold the requested information, so that it can
            be parsed by the server.

            "DATA"
                The following queries are pretty much standard:
                "commands" List all commands that are supported by the inetd
                "email"    The email-address of the mud administrator(s)
                "hosts"    A listing of all hosts in a special format [t.b.d.]
                "inetd"    The version number of the inetd used
                "list"     The list of all items which can be queried
                "info"     A short human-readable string with practically
                           "query" information
                "mud_port" The portnumber that players connect to on login
                "time"     The local time for this mud
                "users"    A list of the people that are active in this mud
                "version"  The version of the mud-driver (and library)
                "www"      The URL of the mud's web page (e.g.
                           http://mud.stack.nl/)

        "reply"
            This request method is used for _all_ replies.

            "DATA"
                A human-readable string, containing the reply to a given query

            "RCPNT"
                The same name as in the "SND" field or the query; Usually
                this is the name of the player who initiated the query

            "QUERY"
                This field is only used in a response to a "query" request
                and should be equal to the "DATA" field of that request

            "vbs"
                This field is only used in a response to a "locate" request
                and should be equal to the "vbs" field of that request

            "user"
                This field is only used in a response to a "locate" request
                and should be equal to the "user" field of that request

            "fnd"
                This field is only used in a response to a "locate" request
                and should be 1 if the player was located and 0 otherwise

        "tell"
            Say something to a player on another mud.

            "RCPNT"
                Name of the player to whom you are talking

            "DATA"
                Whatever you wish to say to this person

            Optional emote-tos are handles are also handled as tells, so
            muds without emote-to support display them as reasonable readable
            tell message.

            "RCPNT"
                Name of the player to whom you are talking

            "METHOD"
                The body of this header may be:
                "emote"   if the message is an emote
                "gemote"  if the message is a genitiv emote

            "DATA"
                The text to be emoted prepended with "*" and appended
                with "* ". If you display the emote you have to cut the
                stars off. Muds that do not process emote-tos display the
                emote as tell message with the stars as indication of
                the message's emote meaning.

        "who"
            List the people that are active on a remote mud. The anwer
            usually contains some active information about the players,
            like titles, levels or age.

            "DATA"
                Not supported by many muds. Introduced August 1997.
                Additional switch(es) (blanc separated) that change the
                appearence of the resulting list. The switches normally
                resemble the switches used inside of that mud for the 'who'
                command.  Typical values include:
                "short" "s" "-short" "-s" "kurz":
                    Return a concise listing.
                "alpha" "a" "alphabetisch" "-alpha" "-a"
                    Sort the players alphabetically.

AUTHOR
        Information taken from Outerspaces documentation to be found
        on http://mud.stack.nl/intermud/

SEE ALSO
        inetd(C), intermud.basic(C), imp(C)
