fix the "big abuse" reported a few days ago
It was possible to get a shopkeeper to carry the Amulet from the
bottom of the dungeon up to the location of his shop, thereby bypassing
the usual labor of lugging it up yourself. [Drop the Amulet somewhere;
rob a shop so that the Kops are summoned and the shk comes after you;
when shk is next you, level teleport to the Amulet (probably two hops,
one to the Valley and another deeper into Gehennom); walk to the vicinity
of the Amulet; shk will eventually pick it up (shopkeepers like to pick
up magic items); now, pay him for the stolen goods--he'll be pacified
and migrate back to his shop, taking his inventory with him; lastly,
return to his shop and relieve him of his burder.] This patch makes
shopkeepers drop the Amulet or invocation tools if/when they set set to
migrate to their normal location.
Also fix another long standing risk that a monster that is sent
away (nurse when healing, Kops when you pacify a shopkeeper) might be
carrying the Amulet or one of the invocation tools and make the game
unwinnable. I doubt that that's ever actually happened but I think it'd
be possible if a monster that likes magic items ever got polymorphed
into a Kop. Such dismissed monsters will now drop the same stuff as
the shk above prior to leaving the game.
This commit is contained in:
@@ -1,4 +1,4 @@
|
||||
/* SCCS Id: @(#)mon.c 3.4 2003/11/26 */
|
||||
/* SCCS Id: @(#)mon.c 3.4 2003/12/04 */
|
||||
/* Copyright (c) Stichting Mathematisch Centrum, Amsterdam, 1985. */
|
||||
/* NetHack may be freely redistributed. See license for details. */
|
||||
|
||||
@@ -1583,13 +1583,18 @@ void
|
||||
mongone(mdef)
|
||||
register struct monst *mdef;
|
||||
{
|
||||
mdef->mhp = 0; /* can skip some inventory bookkeeping */
|
||||
#ifdef STEED
|
||||
/* Player is thrown from his steed when it disappears */
|
||||
if (mdef == u.usteed)
|
||||
dismount_steed(DISMOUNT_GENERIC);
|
||||
#endif
|
||||
|
||||
discard_minvent(mdef); /* release monster's inventory */
|
||||
/* drop special items like the Amulet so that a dismissed Kop or nurse
|
||||
can't remove them from the game */
|
||||
mdrop_special_objs(mdef);
|
||||
/* release rest of monster's inventory--it is removed from game */
|
||||
discard_minvent(mdef);
|
||||
#ifndef GOLDOBJ
|
||||
mdef->mgold = 0L;
|
||||
#endif
|
||||
|
||||
Reference in New Issue
Block a user