From 9df113a97308492a50ebbfea8ad75a3a86f3cecd Mon Sep 17 00:00:00 2001 From: "nethack.rankin" Date: Thu, 13 Sep 2007 01:00:05 +0000 Subject: [PATCH] covetous mons vs temple priests (trunk only) Prevent monsters who kill other monsters to obtain the Amulet from targetting a priest inside his temple. Blocks players from just staying on the Sanctum stairs while a teleporting arch-lich or Asmodeus fetchs the Amulet from Moloch's high priest for them. A previous post-3.4.3 change prevented monsters from targetting the Wizard; this extends that (and assumes that we can ignore the possibility of other temple priests ever handling the Amulet). The earlier patch went into the branch code, but inhistemple() isn't available there so this one is trunk only. --- doc/fixes35.0 | 1 + src/wizard.c | 8 +++++--- 2 files changed, 6 insertions(+), 3 deletions(-) diff --git a/doc/fixes35.0 b/doc/fixes35.0 index b52a9c58a..4507ab579 100644 --- a/doc/fixes35.0 +++ b/doc/fixes35.0 @@ -266,6 +266,7 @@ some variations of attempting to use open or close commands on a drawbridge tin contents can now sometimes be accessed on the same turn that the tin starts being opened; when not, the opening feedback is more accurate Nth adjustment of feedback when observing a pet eating +monsters who want the Amulet won't attack temple priests to try to get it Platform- and/or Interface-Specific Fixes diff --git a/src/wizard.c b/src/wizard.c index adc199b08..73d184c9b 100644 --- a/src/wizard.c +++ b/src/wizard.c @@ -1,4 +1,4 @@ -/* SCCS Id: @(#)wizard.c 3.5 2007/04/15 */ +/* SCCS Id: @(#)wizard.c 3.5 2007/08/26 */ /* Copyright (c) Stichting Mathematisch Centrum, Amsterdam, 1985. */ /* NetHack may be freely redistributed. See license for details. */ @@ -226,8 +226,10 @@ target_on(mask, mtmp) else if((otmp = on_ground(otyp))) return(STRAT(STRAT_GROUND, otmp->ox, otmp->oy, mask)); else if ((mtmp2 = other_mon_has_arti(mtmp, otyp)) != 0 && - /* avoid targetting the Wizard for the Amulet */ - (!mtmp2->iswiz || otyp != AMULET_OF_YENDOR)) + /* when seeking the Amulet, avoid targetting the Wizard + or temple priests (to protect Moloch's high priest) */ + (otyp != AMULET_OF_YENDOR || + (!mtmp2->iswiz && !inhistemple(mtmp2)))) return(STRAT(STRAT_MONSTR, mtmp2->mx, mtmp2->my, mask)); } return (unsigned long)STRAT_NONE;