For some reason, when I add stuff to a 'friends' field of a player using
strcat, it also adds it to my prompt.
Here's what I mean:

21300> friend Evangelion
Evangelion added to your friend list.

21300>  Evangelion

21300>  Evangelionsay Uhoh!
Huh?

The plan is to add friends with strcat rather than to copy 'friends' to a
temp buf, free the old 'friends', add the new friend to the temp buf, and
str_dup buf back over to 'friends'.

Here's the guts of what 'friend' does:
=========================================================
void do_friend (CHAR_DATA * ch, char *argument)
{
    char buf[MIL];
    static char bufx[42];
    ...
   (acquire victim)

    if (!strstr(ch->pcdata->friends, victim->name))
    {
        sprintf(bufx, " %s", victim->name);
        strcat(ch->pcdata->friends, bufx);
        strcpy(bufx, "");
        sprintf(buf, "{C%s{x added to your friend list.\n\r", victim->name);
        send_to_char(buf, ch);
    }
    else
    {
        send_to_char("That person is already in your friends list.\n\r",
ch);
    }
...
=========================================================

Where have I screwed up?

For the record, I do have 'char *friends' init and clear appropriately, like
how bamfin does.

Recycle.c, in free_pcdata:
    free_string (pcdata->friends); //added 1/2/03

Merc.h, struct pc_data:
    char *          friends; //added 1/2/03

Save.c, func load_char_obj:
    ch->pcdata->friends = str_dup (""); //added 1/2/03


Any ideas?
Thank you for your time.

- Jeremy Hill


Reply via email to