leash use vs perm_invent

Noticed while working on Qt's version of persistent inventory
window (paper doll-style display of equipment in use), leashing
or unleashing a pet wasn't updating persistent inventory.  Leash
descriptions format differently when in use so immediate update
is warranted.
This commit is contained in:
PatR
2020-08-10 13:20:24 -07:00
parent 8dca9b4f8a
commit 75fa283fb6
2 changed files with 24 additions and 17 deletions

View File

@@ -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

View File

@@ -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");
}
}
}