In an attempt to make poofs save, I completely mimiced the way titles work.
#define POOFIN(ch) ((ch)->player.poofin) in structs.h, etc...
They -do- save, but whenever a char rents and comes back, the poofin is
what was originally the poofin, PLUS the poofout pasted behind it...
(ie. Havoc appears with an earsplitting bang.Havoc disappears in a puff of
smoke.)
The poofout is just the poofout, and seems to work fine.
I know it's probably something very basic, but I really don't see it.
Any help would be greatly appreciated.
In db.c, I have the following lines:
in store_to_char:
if (*st->poofin == '\0')
ch->player.poofin = NULL;
else
ch->player.poofin = str_dup(st->poofin);
if (*st->poofout == '\0')
ch->player.poofout = NULL;
else
ch->player.poofout = str_dup(st->poofout);
in char_to_store:
if (POOFIN(ch))
strcpy(st->poofin, POOFIN(ch));
else
*st->poofin = '\0';
if (POOFOUT(ch))
strcpy(st->poofout, POOFOUT(ch));
else
*st->poofout = '\0';
in free_char:
if (ch->player.poofin)
free(ch->player.poofin);
if (ch->player.poofout)
free(ch->player.poofout);
and further on in free_char:
if (ch->player.poofin && ch->player.poofin != mob_proto[i].player.poofin)
free(ch->player.poofin);
if (ch->player.poofout && ch->player.poofout !=
mob_proto[i].player.poofout)
free(ch->player.poofout);
I changed do_poofset (act.wizard.c) to be able to see your own poofs:
ACMD(do_poofset)
{
char **msg;
if (!*argument) {
sprintf(buf, "Your current poof%s is:\r\n", (subcmd == SCMD_POOFIN) ?
"in" : "out");
sprintf(buf, "%s%s", buf,
(subcmd == SCMD_POOFIN) ? ((POOFIN(ch)) ? POOFIN(ch) : "$n
appears with an ear-splitting bang.") :
((POOFOUT(ch)) ? POOFOUT(ch) : "$n disappears in a puff of
smoke."));
act(buf, TRUE, ch, 0, 0, TO_CHAR);
return;
}
switch (subcmd) {
case SCMD_POOFIN: msg = &(POOFIN(ch)); break;
case SCMD_POOFOUT: msg = &(POOFOUT(ch)); break;
default: return; break;
}
skip_spaces(&argument);
if (*msg)
free(*msg);
*msg = str_dup(argument);
send_to_char(OK, ch);
}
+------------------------------------------------------------+
| Ensure that you have read the CircleMUD Mailing List FAQ: |
| http://democracy.queensu.ca/~fletcher/Circle/list-faq.html |
+------------------------------------------------------------+
This archive was generated by hypermail 2b30 : 12/15/00 PST