diff --git a/src/mhitm.c b/src/mhitm.c index cf25fed41..33d8af026 100644 --- a/src/mhitm.c +++ b/src/mhitm.c @@ -568,7 +568,7 @@ mattackm( if (res[i] & M_ATTK_AGR_DIED) return res[i]; /* return if aggressor can no longer attack */ - if (helpless(magr)) + if ((res[i] & M_ATTK_AGR_DONE) || helpless(magr)) return res[i]; /* eg. defender was knocked into a level teleport trap */ if (mon_offmap(mdef)) diff --git a/src/uhitm.c b/src/uhitm.c index 424b2b04a..911f16171 100644 --- a/src/uhitm.c +++ b/src/uhitm.c @@ -2727,6 +2727,7 @@ mhitm_ad_sgld( if (!tele_restrict(magr)) { boolean couldspot = canspotmon(magr); + mhm->hitflags = M_ATTK_AGR_DONE; (void) rloc(magr, RLOC_NOMSG); /* TODO: use RLOC_MSG instead? */ if (gv.vis && couldspot && !canspotmon(magr)) @@ -4567,6 +4568,7 @@ mhitm_ad_sedu( if (pa->mlet == S_NYMPH && !tele_restrict(magr)) { boolean couldspot = canspotmon(magr); + mhm->hitflags = M_ATTK_AGR_DONE; (void) rloc(magr, RLOC_NOMSG); /* TODO: use RLOC_MSG instead? */ if (gv.vis && couldspot && !canspotmon(magr))