Nevermind. I am an idiot. I should've figured it out by looking at save.c.. particularly here:
for (paf = obj->affected; paf != NULL; paf = paf->next)
{
if (paf->type < 0 || paf->type >= MAX_SKILL)
continue;
fprintf (fp, "Affc '%s' %3d %3d %3d %3d %3d %10d\n",
skill_table[paf->type].name,
paf->where,
paf->level,
paf->duration, paf->modifier, paf->location,
paf->bitvector);
}
In the addapply snippet, new affects have type -1. Oops. Not exactly
permanent.

