]> granicus.if.org Git - nethack/commitdiff
Fix skipping attacks if hero moved away
authorPasi Kallinen <paxed@alt.org>
Wed, 7 Dec 2022 19:51:47 +0000 (21:51 +0200)
committerPasi Kallinen <paxed@alt.org>
Wed, 7 Dec 2022 19:51:50 +0000 (21:51 +0200)
Recent change by me caused a bug where a monster was trying
to attack after hero was moved away by the previous attacks.

src/mhitu.c

index ac7cb008ccee9b9408760973b90a97b6ce2cdf76..625ce6fa6ab05eca435e06ac49336a3f35ca3425 100644 (file)
@@ -418,7 +418,7 @@ mattacku(register struct monst *mtmp)
      *     excessively verbose miss feedback when monster can do multiple
      *     attacks and would miss the same wrong spot each time.)
      */
-    boolean ranged, range2, foundyou, youseeit,
+    boolean ranged, range2, foundyou, firstfoundyou, youseeit,
             skipnonmagc = FALSE;
 
     calc_mattacku_vars(mtmp, &ranged, &range2, &foundyou, &youseeit);
@@ -663,12 +663,13 @@ mattacku(register struct monst *mtmp)
     }
 
     gs.skipdrin = FALSE; /* [see mattackm(mhitm.c)] */
+    firstfoundyou = foundyou;
 
     for (i = 0; i < NATTK; i++) {
         /* recalc in case attack moved hero */
         calc_mattacku_vars(mtmp, &ranged, &range2, &foundyou, &youseeit);
         sum[i] = MM_MISS;
-        if (i > 0 && foundyou /* previous attack might have moved hero */
+        if (i > 0 && firstfoundyou /* previous attack might have moved hero */
             && (mtmp->mux != u.ux || mtmp->muy != u.uy))
             continue; /* fill in sum[] with 'miss' but skip other actions */
         mon_currwep = (struct obj *) 0;