Arachnos is an Intermud chat standard utilizing both MSSP and MSDP. For it to
work you need to have an Arachnos spider connect to your MUD. If you're listed
on TMC the spider should find you sooner or later, otherwise shoot me an email.

The Arachnos standard is available here:

http://tintin.sourceforge.net/msdp/arachnos

To get the spider to recognise that you have Arachnos support you should update
MSSP and set the INTERMUD variable to Arachnos. 

By default MTH only includes the basics for a developer channel. In Lola 1.4 the
code for developers to use the channel is as following:

void do_devtalk (CHAR_DATA * ch, char *argument)
{
        DESCRIPTOR_DATA *d;

        if (argument[0] == '\0')
        {
                send_to_char ("Devtalk what?\n\r", ch);
                return;
        }

        for (d = mud->f_desc ; d ; d = d->next)
        {
                msdp_update_var_instant(d, "ARACHNOS_DEVEL", "%c\001%s\002%s\001%s\002%s%c",
                        MSDP_TABLE_OPEN,
                                "MSG_USER", ch->name,
                                "MSG_BODY", argument,
                        MSDP_TABLE_CLOSE);
        }
        return;
}

When an Arachnos DEVEL message is received from a spider the following
code is called:

void arachnos_devel(char *fmt, ...)
{
        PLAYER_GAME *fpl;
        char buf[MAX_STRING_LENGTH];
        va_list args;

        va_start(args, fmt);
        vsprintf(buf, fmt, args);
        va_end(args);

        for (fpl = mud->f_player ; fpl ; fpl = fpl->next)
        {
                if (fpl->ch->level < MAX_LEVEL)
                {
                        continue;
                }
                ch_printf_color(fpl->ch, "{128}%s\n\r", buf);
        }
        return;
}

All other aspects are handled in msdp.c. If you want additional channels you
need to add them yourself and have a spider available to link two or more
MUDs.


In addition Arachnos allows the sending of MUDLIST messages which contain
updates of other MUDs available on the network. This is handled as following
in Lola 1.4:

char *mudlist[50];

void do_mudlist (CHAR_DATA * ch, char *argument)
{
        int i;

        push_call("do_mudlist(%p,%p)",ch,argument);

        ch_printf_color(ch, "{128}%18.18s %14.14s %5.5s %17.17s %17.17s %4.4s\n\r", "name", "host", "port", "last update", "boot time", "#");

        for (i = 0 ; i < 50 ; i++)
        {
                if (mudlist[i])
                {
                        ch_printf_color(ch, "{128}%s\n\r", mudlist[i]);
                }
        }
}

void arachnos_mudlist(char *fmt, ...)
{
        char buf[MAX_STRING_LENGTH];

        int i;
        va_list args;

        va_start(args, fmt);
        vsprintf(buf, fmt, args);
        va_end(args);

        if (mudlist[0] && !strncmp(mudlist[0], buf, 18))
        {
                RESTRING(mudlist[0], buf);
                return;
        }

        STRFREE(mudlist[49]);

        for (i = 1 ; i < 50 ; i++)
        {
                if (mudlist[i] == NULL || !strncmp(mudlist[i], buf, 18))
                {
                        memmove(&mudlist[1], &mudlist[0], i * sizeof(char *));
                        break;
                }
        }

        mudlist[0] = STRALLOC(buf);

        return;
}

What this code does is maintain a list of 50 muds, if a new update is received
the code checks if the mud is already in the list, if so it's removed, and
the new update is placed at the beginning of the list.

MUDs that are no longer connected will move to the bottom of the list.