From b115b536c19579ddaaf5a1e39d07f0470d385c49 Mon Sep 17 00:00:00 2001 From: cohrs Date: Sun, 25 May 2003 17:21:21 +0000 Subject: [PATCH] B03005 - canceling monster redux Revert the code, but add a comment. The behavior is not obvious to everyone. --- doc/fixes34.2 | 1 - src/artifact.c | 16 ++++++---------- 2 files changed, 6 insertions(+), 11 deletions(-) diff --git a/doc/fixes34.2 b/doc/fixes34.2 index ebc067941..6b7bc8429 100644 --- a/doc/fixes34.2 +++ b/doc/fixes34.2 @@ -76,7 +76,6 @@ choking while eating non-food always called the food "quick snack" short swords are not throwing weapons several sit-in-trap cases were unreachable curse candelabrum in bones, like other similar artifacts -clear up Magicbane messages when it attempts to re-cancel a canceled monster detecting a trap in a chest while confused should not exercise wisdom diff --git a/src/artifact.c b/src/artifact.c index 0205efe6a..8ee060795 100644 --- a/src/artifact.c +++ b/src/artifact.c @@ -766,8 +766,7 @@ char *hittee; /* target's name: "you" or mon_nam(mdef) */ const char *verb; boolean youattack = (magr == &youmonst), youdefend = (mdef == &youmonst), - resisted = FALSE, was_canceled = FALSE, - do_stun, do_confuse, result; + resisted = FALSE, do_stun, do_confuse, result; int attack_indx, scare_dieroll = MB_MAX_DIEROLL / 2; result = FALSE; /* no message given yet */ @@ -810,11 +809,6 @@ char *hittee; /* target's name: "you" or mon_nam(mdef) */ verb = mb_verb[!!Hallucination][attack_indx]; if (youattack || youdefend || vis) { result = TRUE; - /* canceling monster only happens if not already canceled */ - if (attack_indx == MB_INDEX_CANCEL && !youdefend && mdef->mcan) { - was_canceled = TRUE; - verb = "hit"; /* doesn't change its attack to, eg stun */ - } pline_The("magic-absorbing blade %s %s!", vtense((const char *)0, verb), hittee); /* assume probing has some sort of noticeable feedback @@ -827,9 +821,11 @@ char *hittee; /* target's name: "you" or mon_nam(mdef) */ switch (attack_indx) { case MB_INDEX_CANCEL: old_uasmon = youmonst.data; - if (was_canceled) { - /* nothing left to cancel */ - } else if (!cancel_monst(mdef, mb, youattack, FALSE, FALSE)) { + /* No mdef->mcan check: even a cancelled monster can be polymorphed + * into a golem, and the "cancel" effect acts as if some magical + * energy remains in spellcasting defenders to be absorbed later. + */ + if (!cancel_monst(mdef, mb, youattack, FALSE, FALSE)) { resisted = TRUE; } else { do_stun = FALSE; -- 2.40.0