unseen pet drowning
The "you have a sad feeling for a moment" message was only given when one monster kills another (and the latter is an unseen pet). Give it for drowning too. There are probably a bunch of other circumstances which warrant it as well but I've settled for handling minliquid().
This commit is contained in:
+2
-1
@@ -1,4 +1,4 @@
|
|||||||
$NHDT-Branch: NetHack-3.7 $:$NHDT-Revision: 1.94 $ $NHDT-Date: 1581210469 2020/02/09 01:07:49 $
|
$NHDT-Branch: NetHack-3.7 $:$NHDT-Revision: 1.98 $ $NHDT-Date: 1581637124 2020/02/13 23:38:44 $
|
||||||
|
|
||||||
General Fixes and Modified Features
|
General Fixes and Modified Features
|
||||||
-----------------------------------
|
-----------------------------------
|
||||||
@@ -55,6 +55,7 @@ allow defining #wizgenesis quantity in the prompt
|
|||||||
digging through iron bars from an adjacent pit made a pit on top of the bars
|
digging through iron bars from an adjacent pit made a pit on top of the bars
|
||||||
give feedback if controlled level teleport attempt fails because hero is
|
give feedback if controlled level teleport attempt fails because hero is
|
||||||
already on the bottom level and player tries to go even deeper
|
already on the bottom level and player tries to go even deeper
|
||||||
|
unseen pet that drowned didn't give "you have a sad feeling" message
|
||||||
|
|
||||||
|
|
||||||
Fixes to 3.7.0-x Problems that Were Exposed Via git Repository
|
Fixes to 3.7.0-x Problems that Were Exposed Via git Repository
|
||||||
|
|||||||
+2
-1
@@ -1,4 +1,4 @@
|
|||||||
/* NetHack 3.7 flag.h $NHDT-Date: 1580434522 2020/01/31 01:35:22 $ $NHDT-Branch: NetHack-3.7 $:$NHDT-Revision: 1.175 $ */
|
/* NetHack 3.7 flag.h $NHDT-Date: 1581637124 2020/02/13 23:38:44 $ $NHDT-Branch: NetHack-3.7 $:$NHDT-Revision: 1.176 $ */
|
||||||
/* Copyright (c) Stichting Mathematisch Centrum, Amsterdam, 1985. */
|
/* Copyright (c) Stichting Mathematisch Centrum, Amsterdam, 1985. */
|
||||||
/*-Copyright (c) Michael Allison, 2006. */
|
/*-Copyright (c) Michael Allison, 2006. */
|
||||||
/* NetHack may be freely redistributed. See license for details. */
|
/* NetHack may be freely redistributed. See license for details. */
|
||||||
@@ -213,6 +213,7 @@ struct instance_flags {
|
|||||||
boolean defer_plname; /* X11 hack: askname() might not set g.plname */
|
boolean defer_plname; /* X11 hack: askname() might not set g.plname */
|
||||||
boolean herecmd_menu; /* use menu when mouseclick on yourself */
|
boolean herecmd_menu; /* use menu when mouseclick on yourself */
|
||||||
boolean invis_goldsym; /* gold symbol is ' '? */
|
boolean invis_goldsym; /* gold symbol is ' '? */
|
||||||
|
boolean sad_feeling; /* unseen pet is dying */
|
||||||
int at_midnight; /* only valid during end of game disclosure */
|
int at_midnight; /* only valid during end of game disclosure */
|
||||||
int at_night; /* also only valid during end of game disclosure */
|
int at_night; /* also only valid during end of game disclosure */
|
||||||
int failing_untrap; /* move_into_trap() -> spoteffects() -> dotrap() */
|
int failing_untrap; /* move_into_trap() -> spoteffects() -> dotrap() */
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
/* NetHack 3.6 mon.c $NHDT-Date: 1581322664 2020/02/10 08:17:44 $ $NHDT-Branch: NetHack-3.7 $:$NHDT-Revision: 1.321 $ */
|
/* NetHack 3.6 mon.c $NHDT-Date: 1581637127 2020/02/13 23:38:47 $ $NHDT-Branch: NetHack-3.7 $:$NHDT-Revision: 1.322 $ */
|
||||||
/* Copyright (c) Stichting Mathematisch Centrum, Amsterdam, 1985. */
|
/* Copyright (c) Stichting Mathematisch Centrum, Amsterdam, 1985. */
|
||||||
/*-Copyright (c) Derek S. Ray, 2015. */
|
/*-Copyright (c) Derek S. Ray, 2015. */
|
||||||
/* NetHack may be freely redistributed. See license for details. */
|
/* NetHack may be freely redistributed. See license for details. */
|
||||||
@@ -24,6 +24,7 @@ static boolean FDECL(isspecmon, (struct monst *));
|
|||||||
static boolean FDECL(validspecmon, (struct monst *, int));
|
static boolean FDECL(validspecmon, (struct monst *, int));
|
||||||
static struct permonst *FDECL(accept_newcham_form, (struct monst *, int));
|
static struct permonst *FDECL(accept_newcham_form, (struct monst *, int));
|
||||||
static struct obj *FDECL(make_corpse, (struct monst *, unsigned));
|
static struct obj *FDECL(make_corpse, (struct monst *, unsigned));
|
||||||
|
static int FDECL(minliquid_core, (struct monst *));
|
||||||
static void FDECL(m_detach, (struct monst *, struct permonst *));
|
static void FDECL(m_detach, (struct monst *, struct permonst *));
|
||||||
static void FDECL(lifesaved_monster, (struct monst *));
|
static void FDECL(lifesaved_monster, (struct monst *));
|
||||||
static void FDECL(migrate_mon, (struct monst *, XCHAR_P, XCHAR_P));
|
static void FDECL(migrate_mon, (struct monst *, XCHAR_P, XCHAR_P));
|
||||||
@@ -436,8 +437,8 @@ unsigned corpseflags;
|
|||||||
}
|
}
|
||||||
free_mname(mtmp);
|
free_mname(mtmp);
|
||||||
return obj;
|
return obj;
|
||||||
default_1:
|
|
||||||
default:
|
default:
|
||||||
|
default_1:
|
||||||
if (g.mvitals[mndx].mvflags & G_NOCORPSE) {
|
if (g.mvitals[mndx].mvflags & G_NOCORPSE) {
|
||||||
return (struct obj *) 0;
|
return (struct obj *) 0;
|
||||||
} else {
|
} else {
|
||||||
@@ -487,7 +488,22 @@ unsigned corpseflags;
|
|||||||
/* check mtmp and water/lava for compatibility, 0 (survived), 1 (died) */
|
/* check mtmp and water/lava for compatibility, 0 (survived), 1 (died) */
|
||||||
int
|
int
|
||||||
minliquid(mtmp)
|
minliquid(mtmp)
|
||||||
register struct monst *mtmp;
|
struct monst *mtmp;
|
||||||
|
{
|
||||||
|
int res;
|
||||||
|
|
||||||
|
/* set up flag for mondead() and xkilled() */
|
||||||
|
iflags.sad_feeling = (mtmp->mtame && !canseemon(mtmp));
|
||||||
|
res = minliquid_core(mtmp);
|
||||||
|
/* always clear the flag */
|
||||||
|
iflags.sad_feeling = FALSE;
|
||||||
|
return res;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* guts of minliquid() */
|
||||||
|
static int
|
||||||
|
minliquid_core(mtmp)
|
||||||
|
struct monst *mtmp;
|
||||||
{
|
{
|
||||||
boolean inpool, inlava, infountain;
|
boolean inpool, inlava, infountain;
|
||||||
|
|
||||||
@@ -1930,8 +1946,13 @@ mondead(mtmp)
|
|||||||
register struct monst *mtmp;
|
register struct monst *mtmp;
|
||||||
{
|
{
|
||||||
struct permonst *mptr;
|
struct permonst *mptr;
|
||||||
|
boolean be_sad;
|
||||||
int tmp;
|
int tmp;
|
||||||
|
|
||||||
|
/* potential pet message; always clear global flag */
|
||||||
|
be_sad = iflags.sad_feeling;
|
||||||
|
iflags.sad_feeling = FALSE;
|
||||||
|
|
||||||
mtmp->mhp = 0; /* in case caller hasn't done this */
|
mtmp->mhp = 0; /* in case caller hasn't done this */
|
||||||
lifesaved_monster(mtmp);
|
lifesaved_monster(mtmp);
|
||||||
if (!DEADMONSTER(mtmp))
|
if (!DEADMONSTER(mtmp))
|
||||||
@@ -2002,6 +2023,9 @@ register struct monst *mtmp;
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (be_sad)
|
||||||
|
You("have a sad feeling for a moment, then it passes.");
|
||||||
|
|
||||||
/* dead vault guard is actually kept at coordinate <0,0> until
|
/* dead vault guard is actually kept at coordinate <0,0> until
|
||||||
his temporary corridor to/from the vault has been removed;
|
his temporary corridor to/from the vault has been removed;
|
||||||
need to do this after life-saving and before m_detach() */
|
need to do this after life-saving and before m_detach() */
|
||||||
@@ -2274,15 +2298,13 @@ struct monst *mdef;
|
|||||||
const char *fltxt;
|
const char *fltxt;
|
||||||
int how;
|
int how;
|
||||||
{
|
{
|
||||||
boolean be_sad = FALSE; /* true if unseen pet is killed */
|
|
||||||
|
|
||||||
if ((mdef->wormno ? worm_known(mdef) : cansee(mdef->mx, mdef->my))
|
if ((mdef->wormno ? worm_known(mdef) : cansee(mdef->mx, mdef->my))
|
||||||
&& fltxt)
|
&& fltxt)
|
||||||
pline("%s is %s%s%s!", Monnam(mdef),
|
pline("%s is %s%s%s!", Monnam(mdef),
|
||||||
nonliving(mdef->data) ? "destroyed" : "killed",
|
nonliving(mdef->data) ? "destroyed" : "killed",
|
||||||
*fltxt ? " by the " : "", fltxt);
|
*fltxt ? " by the " : "", fltxt);
|
||||||
else
|
else
|
||||||
be_sad = (mdef->mtame != 0);
|
iflags.sad_feeling = (mdef->mtame != 0);
|
||||||
|
|
||||||
/* no corpses if digested or disintegrated */
|
/* no corpses if digested or disintegrated */
|
||||||
g.disintegested = (how == AD_DGST || how == -AD_RBRE);
|
g.disintegested = (how == AD_DGST || how == -AD_RBRE);
|
||||||
@@ -2290,9 +2312,6 @@ int how;
|
|||||||
mondead(mdef);
|
mondead(mdef);
|
||||||
else
|
else
|
||||||
mondied(mdef);
|
mondied(mdef);
|
||||||
|
|
||||||
if (be_sad && DEADMONSTER(mdef))
|
|
||||||
You("have a sad feeling for a moment, then it passes.");
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
@@ -2335,12 +2354,17 @@ int xkill_flags; /* 1: suppress message, 2: suppress corpse, 4: pacifist */
|
|||||||
struct permonst *mdat;
|
struct permonst *mdat;
|
||||||
struct obj *otmp;
|
struct obj *otmp;
|
||||||
struct trap *t;
|
struct trap *t;
|
||||||
|
boolean be_sad;
|
||||||
boolean wasinside = u.uswallow && (u.ustuck == mtmp),
|
boolean wasinside = u.uswallow && (u.ustuck == mtmp),
|
||||||
burycorpse = FALSE,
|
burycorpse = FALSE,
|
||||||
nomsg = (xkill_flags & XKILL_NOMSG) != 0,
|
nomsg = (xkill_flags & XKILL_NOMSG) != 0,
|
||||||
nocorpse = (xkill_flags & XKILL_NOCORPSE) != 0,
|
nocorpse = (xkill_flags & XKILL_NOCORPSE) != 0,
|
||||||
noconduct = (xkill_flags & XKILL_NOCONDUCT) != 0;
|
noconduct = (xkill_flags & XKILL_NOCONDUCT) != 0;
|
||||||
|
|
||||||
|
/* potential pet message; always clear global flag */
|
||||||
|
be_sad = iflags.sad_feeling;
|
||||||
|
iflags.sad_feeling = FALSE;
|
||||||
|
|
||||||
mtmp->mhp = 0; /* caller will usually have already done this */
|
mtmp->mhp = 0; /* caller will usually have already done this */
|
||||||
if (!noconduct) /* KMH, conduct */
|
if (!noconduct) /* KMH, conduct */
|
||||||
u.uconduct.killer++;
|
u.uconduct.killer++;
|
||||||
@@ -2403,6 +2427,9 @@ int xkill_flags; /* 1: suppress message, 2: suppress corpse, 4: pacifist */
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (be_sad)
|
||||||
|
You("have a sad feeling for a moment, then it passes.");
|
||||||
|
|
||||||
mdat = mtmp->data; /* note: mondead can change mtmp->data */
|
mdat = mtmp->data; /* note: mondead can change mtmp->data */
|
||||||
mndx = monsndx(mdat);
|
mndx = monsndx(mdat);
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user