act.wizard.c in the do_wizutil ACMD replace the case SCMD_UNAFFECT with the following:
case SCMD_UNAFFECT:
half_chop(argument, arg, arg2);
bool find = FALSE, found = FALSE;
if (*arg2 && arg2 != NULL)
find = TRUE;
if (vict->affected || AFF_FLAGS(vict)) {
while (vict->affected && found == FALSE) {
/* Ok, we're looking for something, is this it? */
if (find == TRUE && !strcmp(arg2, skill_name(vict->affected->type))) {
if (AFF_FLAGGED(vict, vict->affected->bitvector))
REMOVE_BIT(AFF_FLAGS(vict), vict->affected->bitvector);
affect_remove(vict, vict->affected);
if (!vict->affected->next || !(vict->affected->next->type == vict->affected->type))
found = TRUE;
/* We're looking for somthing and we've cycled all the way through yet been
unable to find it... so we need to break out of the loop */
} else if (!vict->affected->next && find == TRUE) {
break;
/* Not looking for something, so remove them all */
} else if (find == FALSE) {
affect_remove(vict, vict->affected);
}
}
if (find == FALSE) { /* Not looking, we removed all */
AFF_FLAGS(vict) = 0;
send_to_char(vict, "There is a brief flash of light!\r\nYou feel very different.\r\n");
send_to_char(ch, "All spells removed.\r\n");
} else if (found == TRUE) { /* Looking, found, removed */
send_to_char(vict, "There is a brief flash of light!\r\nYou feel slightly different.\r\n");
send_to_char(ch, "The spell %s has been removed.\r\n", arg2);
} else { /* Looking, and couldn't find */
send_to_char(ch, "%s does not seem affected by %s.\r\n", CAP(arg), arg2);
}
} else {
send_to_char(ch, "Your victim does not have any affections!\r\n");
return;
}
break;
And at the top of ACMD(do_wizutil) change:
char arg[MAX_INPUT_LENGTH]; to char arg[MAX_INPUT_LENGTH], arg2[MAX_INPUT_LENGTH];
