diff --git a/doc/fixes37.0 b/doc/fixes37.0 index ec0cd9f91..92522330c 100644 --- a/doc/fixes37.0 +++ b/doc/fixes37.0 @@ -1,4 +1,4 @@ -NHDT-Branch: NetHack-3.7 $:$NHDT-Revision: 1.280 $ $NHDT-Date: 1597069374 2020/08/10 14:22:54 $ +NHDT-Branch: NetHack-3.7 $:$NHDT-Revision: 1.281 $ $NHDT-Date: 1597090815 2020/08/10 20:20:15 $ General Fixes and Modified Features ----------------------------------- @@ -243,6 +243,7 @@ wizard mode #wizintrinsic: setting Levitation wouldn't block Flying as chatting to the quest leader in wizard mode with sufficient experience level and insufficient piety, player is asked whether alignment should be boosted; answering 'n' resulted in being prompted a second time +leashing or unleashing pets wasn't updating persistent inventory window Fixes to 3.7.0-x Problems that Were Exposed Via git Repository diff --git a/src/apply.c b/src/apply.c index 849d11004..faef080bf 100644 --- a/src/apply.c +++ b/src/apply.c @@ -1,4 +1,4 @@ -/* NetHack 3.7 apply.c $NHDT-Date: 1596498148 2020/08/03 23:42:28 $ $NHDT-Branch: NetHack-3.7 $:$NHDT-Revision: 1.326 $ */ +/* NetHack 3.7 apply.c $NHDT-Date: 1597090815 2020/08/10 20:20:15 $ $NHDT-Branch: NetHack-3.7 $:$NHDT-Revision: 1.327 $ */ /* Copyright (c) Stichting Mathematisch Centrum, Amsterdam, 1985. */ /*-Copyright (c) Robert Patrick Rankin, 2012. */ /* NetHack may be freely redistributed. See license for details. */ @@ -548,20 +548,23 @@ number_leashed() /* otmp is about to be destroyed or stolen */ void o_unleash(otmp) -register struct obj *otmp; +struct obj *otmp; { register struct monst *mtmp; for (mtmp = fmon; mtmp; mtmp = mtmp->nmon) - if (mtmp->m_id == (unsigned) otmp->leashmon) + if (mtmp->m_id == (unsigned) otmp->leashmon) { mtmp->mleashed = 0; - otmp->leashmon = 0; + otmp->leashmon = 0; + update_inventory(); + break; + } } /* mtmp is about to die, or become untame */ void m_unleash(mtmp, feedback) -register struct monst *mtmp; +struct monst *mtmp; boolean feedback; { register struct obj *otmp; @@ -573,8 +576,11 @@ boolean feedback; Your("leash falls slack."); } for (otmp = g.invent; otmp; otmp = otmp->nobj) - if (otmp->otyp == LEASH && otmp->leashmon == (int) mtmp->m_id) + if (otmp->otyp == LEASH && (unsigned) otmp->leashmon == mtmp->m_id) { otmp->leashmon = 0; + update_inventory(); + break; + } mtmp->mleashed = 0; } @@ -686,6 +692,7 @@ struct obj *obj; mtmp->mleashed = 1; obj->leashmon = (int) mtmp->m_id; mtmp->msleeping = 0; + update_inventory(); } } else { /* applying a leash which is currently in use */ @@ -697,6 +704,7 @@ struct obj *obj; } else { mtmp->mleashed = 0; obj->leashmon = 0; + update_inventory(); You("remove the leash from %s%s.", spotmon ? "your " : "", l_monnam(mtmp)); } @@ -711,13 +719,10 @@ struct monst *mtmp; { struct obj *otmp; - otmp = g.invent; - while (otmp) { - if (otmp->otyp == LEASH && otmp->leashmon == (int) mtmp->m_id) - return otmp; - otmp = otmp->nobj; - } - return (struct obj *) 0; + for (otmp = g.invent; otmp; otmp = otmp->nobj) + if (otmp->otyp == LEASH && (unsigned) otmp->leashmon == mtmp->m_id) + break; + return otmp; } boolean @@ -735,13 +740,14 @@ next_to_u() if (distu(mtmp->mx, mtmp->my) > 2) { for (otmp = g.invent; otmp; otmp = otmp->nobj) if (otmp->otyp == LEASH - && otmp->leashmon == (int) mtmp->m_id) { + && (unsigned) otmp->leashmon == mtmp->m_id) { if (otmp->cursed) return FALSE; - You_feel("%s leash go slack.", - (number_leashed() > 1) ? "a" : "the"); mtmp->mleashed = 0; otmp->leashmon = 0; + update_inventory(); + You_feel("%s leash go slack.", + (number_leashed() > 1) ? "a" : "the"); } } }