diff --git a/src/restore.c b/src/restore.c index 69d4660c5..14612e08e 100644 --- a/src/restore.c +++ b/src/restore.c @@ -672,13 +672,6 @@ unsigned int *stuckid, *steedid; if (otmp->owornmask) setworn(otmp, otmp->owornmask); - if ((uball && !uchain) || (uchain && !uball)) { - impossible("restgamestate: lost ball & chain"); - /* poor man's unpunish() */ - setworn((struct obj *) 0, W_CHAIN); - setworn((struct obj *) 0, W_BALL); - } - /* reset weapon so that player will get a reminder about "bashing" during next fight when bare-handed or wielding an unconventional item; for pick-axe, we aren't able to distinguish between having @@ -921,6 +914,13 @@ register int fd; if (otmp->owornmask) setworn(otmp, otmp->owornmask); + if ((uball && !uchain) || (uchain && !uball)) { + impossible("restgamestate: lost ball & chain"); + /* poor man's unpunish() */ + setworn((struct obj *) 0, W_CHAIN); + setworn((struct obj *) 0, W_BALL); + } + /* in_use processing must be after: * + The inventory has been read so that freeinv() works. * + The current level has been restored so billing information