]> granicus.if.org Git - nethack/commitdiff
lost ball and chain (trunk only)
authornethack.allison <nethack.allison>
Sat, 3 Jun 2006 17:55:24 +0000 (17:55 +0000)
committernethack.allison <nethack.allison>
Sat, 3 Jun 2006 17:55:24 +0000 (17:55 +0000)
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.)

src/save.c

index 6820b4699290afe81821eedccb3ef02d1f474c1b..4666ae7076eee2917f828f351f3d4728786fc8ff 100644 (file)
@@ -352,6 +352,10 @@ register int fd, mode;
                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);