Saving the game while punished, not carrying the attached ball,
and while swallowed by a purple worm resulted in losing the
ball and chain.
Since the required information was not being written to the
save file at all, I couldn't come up with a clean way to do this
for the branch, and preserve save file format. I could think
of lots of kludgy ways to do it (insert ball and chain into
the hero's inventory prior to saving, and remove it on restore, etc.)
uball->nobj = uchain;
uchain->nobj = (struct obj *)0;
saveobjchn(fd, uball, mode);
+ } else {
+ int minusone = -1;
+ if (perform_bwrite(mode))
+ bwrite(fd, (genericptr_t) &minusone, sizeof(int));
}
saveobjchn(fd, migrating_objs, mode);