Hello,
I've recently completed the memorize code for spells and with the code I
added a forget command which will enable you to forget certain spells you
have mem'd. Everything with forgetting spells that are memmed works good,
but forgetting things that are in your re-mem list doesn't appear to be as
easy. For some reason (the lines marked) won't work:
ACMD(do_forget)
{
int spell, i;
struct SpellMemData *smd;
skip_spaces(&argument);
spell = find_spell_num(argument);
if (!*argument) {
send_to_char("Syntax: Forget <spell> | all\r\n", ch);
return;
} else if (!str_cmp(argument, "all")) {
for (i = 1; i <= MAX_SPELLS; i++) {
if (GET_SPELL(ch, i) > 0)
GET_SPELL(ch, i) = 0;
}
ch->MemList = NULL;
send_to_char("You forget everything!\r\n", ch);
return;
} else if ((spell < 1) || (spell > MAX_SPELLS)) {
send_to_char("You don't have that spell memorized.\r\n", ch);
return;
} else {
if (GET_SPELL(ch, spell) > 0)
GET_SPELL(ch, spell)--;
else {
for (smd = ch->MemList; smd; smd = smd->next) { // Here
if (smd->spell == spell) // Here
DeleteMemorieSpell(ch, smd); // Here
}
}
sprintf(BufOne, "You purge '%s' from your thoughts.\r\n",
spell_info[spell].name);
send_to_char(BufOne, ch);
}
}
if I only have one spell in my re-mem list is returns a 0x000... on
ch->MemList other wiz if there are more it returns 0x000.... on ch, its
quite odd and I don't understand why this simple thing wont work. below is
DeleteMemorieSpell():
void DeleteMemorieSpell(struct char_data *ch, struct SpellMemData *smd)
{
struct SpellMemData *temp;
if (!ch->MemList || !smd)
return;
if (smd == ch->MemList) {
ch->MemList = smd->next;
} else {
for (temp = ch->MemList; temp && (temp->next != smd); temp =
temp->next);
if (temp)
temp->next = smd->next;
}
FREE((char *) smd);
smd = NULL;
}
Any thaughts or help would be greatly appreciated.
Thanks,
Dave
--
+---------------------------------------------------------------+
| FAQ: http://qsilver.queensu.ca/~fletchra/Circle/list-faq.html |
| Archives: http://post.queensu.ca/listserv/wwwarch/circle.html |
| Newbie List: http://groups.yahoo.com/group/circle-newbies/ |
+---------------------------------------------------------------+
This archive was generated by hypermail 2b30 : 06/25/03 PDT