corpse_chance()
It was hard to test the attempting-to-revive-shopkeeper-corpse fix when dying shopkeepers kept declining to leave corpses. Make shopkeepers always leave corpses (modulo various circumstances which prevent all corpses). I don't know whether or not temple priests ought to receive the same treatment.
This commit is contained in:
@@ -1,4 +1,4 @@
|
|||||||
/* NetHack 3.6 mon.c $NHDT-Date: 1461282107 2016/04/21 23:41:47 $ $NHDT-Branch: NetHack-3.6.0 $:$NHDT-Revision: 1.215 $ */
|
/* NetHack 3.6 mon.c $NHDT-Date: 1463534459 2016/05/18 01:20:59 $ $NHDT-Branch: NetHack-3.6.0 $:$NHDT-Revision: 1.221 $ */
|
||||||
/* Copyright (c) Stichting Mathematisch Centrum, Amsterdam, 1985. */
|
/* Copyright (c) Stichting Mathematisch Centrum, Amsterdam, 1985. */
|
||||||
/* NetHack may be freely redistributed. See license for details. */
|
/* NetHack may be freely redistributed. See license for details. */
|
||||||
|
|
||||||
@@ -1625,32 +1625,27 @@ struct monst *mtmp2, *mtmp1;
|
|||||||
if (EGD(mtmp1)) {
|
if (EGD(mtmp1)) {
|
||||||
if (!EGD(mtmp2))
|
if (!EGD(mtmp2))
|
||||||
newegd(mtmp2);
|
newegd(mtmp2);
|
||||||
(void) memcpy((genericptr_t) EGD(mtmp2), (genericptr_t) EGD(mtmp1),
|
*EGD(mtmp2) = *EGD(mtmp1);
|
||||||
sizeof (struct egd));
|
|
||||||
}
|
}
|
||||||
if (EPRI(mtmp1)) {
|
if (EPRI(mtmp1)) {
|
||||||
if (!EPRI(mtmp2))
|
if (!EPRI(mtmp2))
|
||||||
newepri(mtmp2);
|
newepri(mtmp2);
|
||||||
(void) memcpy((genericptr_t) EPRI(mtmp2), (genericptr_t) EPRI(mtmp1),
|
*EPRI(mtmp2) = *EPRI(mtmp1);
|
||||||
sizeof (struct epri));
|
|
||||||
}
|
}
|
||||||
if (ESHK(mtmp1)) {
|
if (ESHK(mtmp1)) {
|
||||||
if (!ESHK(mtmp2))
|
if (!ESHK(mtmp2))
|
||||||
neweshk(mtmp2);
|
neweshk(mtmp2);
|
||||||
(void) memcpy((genericptr_t) ESHK(mtmp2), (genericptr_t) ESHK(mtmp1),
|
*ESHK(mtmp2) = *ESHK(mtmp1);
|
||||||
sizeof (struct eshk));
|
|
||||||
}
|
}
|
||||||
if (EMIN(mtmp1)) {
|
if (EMIN(mtmp1)) {
|
||||||
if (!EMIN(mtmp2))
|
if (!EMIN(mtmp2))
|
||||||
newemin(mtmp2);
|
newemin(mtmp2);
|
||||||
(void) memcpy((genericptr_t) EMIN(mtmp2), (genericptr_t) EMIN(mtmp1),
|
*EMIN(mtmp2) = *EMIN(mtmp1);
|
||||||
sizeof (struct emin));
|
|
||||||
}
|
}
|
||||||
if (EDOG(mtmp1)) {
|
if (EDOG(mtmp1)) {
|
||||||
if (!EDOG(mtmp2))
|
if (!EDOG(mtmp2))
|
||||||
newedog(mtmp2);
|
newedog(mtmp2);
|
||||||
(void) memcpy((genericptr_t) EDOG(mtmp2), (genericptr_t) EDOG(mtmp1),
|
*EDOG(mtmp2) = *EDOG(mtmp1);
|
||||||
sizeof (struct edog));
|
|
||||||
}
|
}
|
||||||
if (has_mcorpsenm(mtmp1))
|
if (has_mcorpsenm(mtmp1))
|
||||||
MCORPSENM(mtmp2) = MCORPSENM(mtmp1);
|
MCORPSENM(mtmp2) = MCORPSENM(mtmp1);
|
||||||
@@ -1978,7 +1973,7 @@ boolean was_swallowed; /* digestion */
|
|||||||
return FALSE;
|
return FALSE;
|
||||||
|
|
||||||
if (((bigmonst(mdat) || mdat == &mons[PM_LIZARD]) && !mon->mcloned)
|
if (((bigmonst(mdat) || mdat == &mons[PM_LIZARD]) && !mon->mcloned)
|
||||||
|| is_golem(mdat) || is_mplayer(mdat) || is_rider(mdat))
|
|| is_golem(mdat) || is_mplayer(mdat) || is_rider(mdat) || mon->isshk)
|
||||||
return TRUE;
|
return TRUE;
|
||||||
tmp = 2 + ((mdat->geno & G_FREQ) < 2) + verysmall(mdat);
|
tmp = 2 + ((mdat->geno & G_FREQ) < 2) + verysmall(mdat);
|
||||||
return (boolean) !rn2(tmp);
|
return (boolean) !rn2(tmp);
|
||||||
|
|||||||
Reference in New Issue
Block a user