From 242c05ccf354aa46c3c27011cfc61f1b6fcf0950 Mon Sep 17 00:00:00 2001 From: nhmall Date: Sat, 5 Nov 2022 15:26:29 -0400 Subject: [PATCH] Revert "ranged_attk() - there can be only one" This reverts commit b399e3f2f5cb9ebed00e194511ec2cc7e056a796. --- include/extern.h | 2 +- src/mdlib.c | 17 ++++++++++------- src/mondata.c | 12 ++++++++++++ 3 files changed, 23 insertions(+), 8 deletions(-) diff --git a/include/extern.h b/include/extern.h index 051c40fc1..958f9ac2d 100644 --- a/include/extern.h +++ b/include/extern.h @@ -1308,7 +1308,6 @@ extern int buzzmu(struct monst *, struct attack *); extern void runtime_info_init(void); extern const char *do_runtime_info(int *); -extern boolean ranged_attk(struct permonst *); extern void release_runtime_info(void); #ifdef ENHANCED_SYMBOLS extern void dump_glyphids(void); @@ -1621,6 +1620,7 @@ extern boolean resists_drli(struct monst *); extern boolean resists_magm(struct monst *); extern boolean resists_blnd(struct monst *); extern boolean can_blnd(struct monst *, struct monst *, uchar, struct obj *); +extern boolean ranged_attk(struct permonst *); extern boolean mon_hates_silver(struct monst *); extern boolean hates_silver(struct permonst *); extern boolean mon_hates_blessings(struct monst *); diff --git a/src/mdlib.c b/src/mdlib.c index 6a9d8f774..400a0f2b8 100644 --- a/src/mdlib.c +++ b/src/mdlib.c @@ -62,7 +62,6 @@ int case_insensitive_comp(const char *, const char *); static void make_version(void); static char *eos(char *); int mstrength(struct permonst *); -boolean ranged_attk(struct permonst *); #if 0 static char *mdlib_strsubst(char *, const char *, const char *); @@ -314,6 +313,7 @@ RESTORE_WARNING_FORMAT_NONLITERAL * transfer relevant generated monstr values to include/monsters.h; * delete src/monstr.c. */ +static boolean mdlib_ranged_attk(struct permonst *); /* * This routine is designed to return an integer value which represents @@ -333,7 +333,7 @@ mstrength(struct permonst* ptr) n += (!!(ptr->geno & G_LGROUP)) << 1; /* for ranged attacks */ - if (ranged_attk(ptr)) + if (mdlib_ranged_attk(ptr)) n++; /* for higher ac values */ @@ -379,14 +379,17 @@ mstrength(struct permonst* ptr) } /* returns True if monster can attack at range */ -boolean -ranged_attk(struct permonst* ptr) +static boolean +mdlib_ranged_attk(register struct permonst* ptr) { - int i; + register int i, j; + register int atk_mask = (1 << AT_BREA) | (1 << AT_SPIT) | (1 << AT_GAZE); - for (i = 0; i < NATTK; i++) - if (DISTANCE_ATTK_TYPE(ptr->mattk[i].aatyp)) + for (i = 0; i < NATTK; i++) { + if ((j = ptr->mattk[i].aatyp) >= AT_WEAP + || (j < 32 && (atk_mask & (1 << j)) != 0)) return TRUE; + } return FALSE; } #endif /* (NH_DEVEL_STATUS != NH_STATUS_RELEASED) || DEBUG || MAKEDEFS_C */ diff --git a/src/mondata.c b/src/mondata.c index bdadbae2b..0278195f8 100644 --- a/src/mondata.c +++ b/src/mondata.c @@ -302,6 +302,18 @@ can_blnd( return TRUE; } +/* returns True if monster can attack at range */ +boolean +ranged_attk(struct permonst* ptr) +{ + int i; + + for (i = 0; i < NATTK; i++) + if (DISTANCE_ATTK_TYPE(ptr->mattk[i].aatyp)) + return TRUE; + return FALSE; +} + /* True if specific monster is especially affected by silver weapons */ boolean mon_hates_silver(struct monst *mon)